Linux basename गाइड: पाथ पार्सिंग और बैश स्क्रिप्टिंग

परिचय

लिनक्स एडमिनिस्ट्रेशन और ऑटोमेशन के दौरान अक्सर लंबे डायरेक्टरी पाथ में से केवल फाइल का मूल नाम या उसका एक्सटेंशन अलग करने की जरूरत पड़ती है। कोरयूटिल्स का basename टूल इस काम को बेहद सहज बना देता है। इस ट्यूटोरियल में हम पाथ पार्सिंग के बुनियादी नियमों, जरूरी फ्लैग्स और प्रोडक्शन शेल स्क्रिप्ट्स में इसके व्यावहारिक उपयोग को व्यावहारिक उदाहरणों के साथ समझेंगे।

1. basename की कार्यप्रणाली और पाथ से फाइलनेम अलग करना

प्रैक्टिकल लैब तैयार करने के लिए सबसे पहले एक डमी डायरेक्टरी और सैंपल लॉग फाइल बना लेते हैं:

mkdir -p /tmp/basename_demo/logs && touch /tmp/basename_demo/logs/app_service.log

डायरेक्टरी और टेस्ट लॉग फाइल तैयार करना

जब आप basename को कोई संपूर्ण पाथ सौंपते हैं, तो यह आगे की सभी पैरेंट डायरेक्टरीज को हटाकर केवल अंतिम फाइल घटक को टर्मिनल पर प्रिंट करता है। चाहे रिलेटिव पाथ हो या एब्सोल्यूट, फाइलनेम को अलग करने की प्रक्रिया एक जैसी रहती है।

⚙️ [महत्वपूर्ण कमांड विकल्प]

-a (--multiple) : एक साथ कई पाथ आर्गुमेंट्स प्रोसेस करके प्रत्येक का फाइलनेम अलग-अलग लाइन में देता है।
-s (--suffix=SUFFIX) : आउटपुट से निर्दिष्ट फाइल एक्सटेंशन या पिछले सफिक्स को तुरंत स्ट्रिप कर देता है।
-z (--zero) : नई लाइन (newline) के बजाय आउटपुट आइटम्स को NUL कैरेक्टर से विभाजित करता है।
--help : टूल के सिंटैक्स और सभी विकल्पों का संक्षिप्त विवरण दिखाता है।
--version : यूटिलिटी का वर्तमान रिलीज वर्जन प्रदर्शित करता है।

फाइल पाथ से केवल फाइलनेम निकालना

यदि पाथ के अंत में ट्रेलिंग स्लैश (/) लगा हो, तब भी यह टूल भ्रमित नहीं होता। यह अंतिम स्लैश को नजरअंदाज करते हुए सबसे निचले स्तर की डायरेक्टरी का नाम निकाल लेता है। यानी यह फाइलों के साथ-साथ फोल्डर नामों को पार्स करने में भी उतना ही कारगर है।

डायरेक्टरी पाथ से फोल्डर का नाम एक्सट्रैक्ट करना

2. एक्सटेंशन (Suffix) हटाकर क्लीन फाइलनेम प्राप्त करना

कमांड के दूसरे आर्गुमेंट में फाइल एक्सटेंशन (जैसे .log) जोड़ देने पर basename डायरेक्टरी ट्री के साथ-साथ उस एक्सटेंशन को भी ट्रिम कर देता है। डेटा प्रोसेसिंग और लॉग रोटेशन में जब केवल बेस आइडेंटिफायर की आवश्यकता हो, तब यह तरीका बहुत काम आता है।

एक्सटेंशन हटाकर शुद्ध फाइल नाम प्राप्त करना

यही परिणाम -s फ्लैग लगाकर भी पाया जा सकता है। फ्लैग के जरिए सफिक्स तय करने से कमांड का स्ट्रक्चर अधिक स्पष्ट रहता है और स्क्रिप्ट में गलतियों की संभावना घट जाती है।

सफिक्स फ्लैग के साथ फाइलनेम ट्रिम करना

3. -a फ्लैग द्वारा बल्क पाथ प्रोसेसिंग

मल्टीपल फाइल्स पर बैच ऑपरेशन टेस्ट करने के लिए कुछ अतिरिक्त फाइल्स जोड़ते हैं:

touch /tmp/basename_demo/logs/error.log /tmp/basename_demo/logs/access.log

परीक्षण के लिए अतिरिक्त लॉग फाइल्स जोड़ना

-a विकल्प सक्षम करने पर आप एक ही इनवोकेशन में जितने चाहें उतने पाथ पास कर सकते हैं। बिना किसी लूप के, सभी इनपुट पाथ्स के फाइलनेम क्रमवार आउटपुट हो जाते हैं।

एक साथ कई पाथ्स से फाइल नाम निकालना

-a और -s दोनों विकल्पों को वाइल्डकार्ड (*) पैटर्न के साथ मिलाने पर पूरे फोल्डर की फाइलों के पाथ और एक्सटेंशन एक साथ हटाए जा सकते हैं। बड़े पैमाने पर फाइलों की लिस्टिंग क्लीन करने के लिए यह बहुत तेज समाधान है।

वाइल्डकार्ड और मल्टीपल सफिक्स ट्रिमिंग

4. बैश ऑटोमेशन: डायनेमिक बैकअप और फाइल रीनेमिंग

शेल स्क्रिप्ट्स में for लूप के भीतर basename का तालमेल बहुत लोकप्रिय है। फाइल लूपिंग के दौरान एक्सटेंशन हटाकर बेसनेम को वेरिएबल में स्टोर किया जा सकता है, जिसे वर्तमान तारीख (date +%Y%m%d) के साथ मिलाकर टाइमस्टैम्प्ड बैकअप आर्काइव आसानी से बनाए जा सकते हैं।

लूप में डायनेमिक बैकअप नाम तैयार करना

अभ्यास पूरा होने के बाद अपने सिस्टम से अस्थायी फाइलों और डेमो डायरेक्टरी को साफ करने के लिए क्लीनअप कमांड चलाएं:

rm -rf /tmp/basename_demo

टेस्ट एनवायरनमेंट क्लीनअप करना

यहाँ हमने लिनक्स basename कमांड के कोर मैकेनििज्म से लेकर रियल-वर्ल्ड स्क्रिप्टिंग इंटीग्रेशन तक की प्रक्रियाओं को कवर किया। अपने दैनिक सिस्टम एडमिनिस्ट्रेशन और ऑटोमेशन टास्क में इन तकनीकों का प्रयोग करके स्क्रिप्ट्स को अधिक सुव्यवस्थित और त्रुटिहीन बनाएं।