लिनक्स कमांड लाइन के लिए पाइप और पुनर्निर्देशन को समझना
लिनक्स कमांड लाइन शैल की दो शक्तिशाली विशेषताएं रीडायरेक्शन और पाइप हैं जो प्रोग्राम के आउटपुट (या यहां तक कि इनपुट) को किसी फ़ाइल या किसी अन्य प्रोग्राम में भेजने की अनुमति देती हैं। हो सकता है कि आप इसके बारे में जागरूक किए बिना पहले ही इन सुविधाओं का उपयोग कर चुके हों। जब भी आपने कमांड में " >
" चिह्न का प्रयोग किया है या " |
"तो आपने क्रमशः पुनर्निर्देशन या पाइप का उपयोग किया है।
लिनक्स और फ्रीबीएसडी जैसे सभी यूनिक्स-जैसे ऑपरेटिंग सिस्टम पर, कमांड लाइन प्रोग्राम से आउटपुट स्वचालित रूप से मानक आउटपुट (stdout) के नाम से जाना जाता है। डिफ़ॉल्ट रूप से, मानक आउट स्क्रीन (कंसोल) है लेकिन इसे पाइप और रीडायरेक्शन का उपयोग करके बदला जा सकता है। इसी प्रकार कीबोर्ड को मानक इनपुट (stdin) माना जाता है और मानक आउट के साथ, इसे बदला जा सकता है।
पाइप्स
पाइप्स आपको आउटपुट को एक कमांड से दूसरे में फ़नल करने की अनुमति देता है जहां इसे इनपुट के रूप में उपयोग किया जाएगा। दूसरे शब्दों में, एक प्रोग्राम से मानक आउटपुट दूसरे के लिए मानक इनपुट बन जाता है।
" more
" कमांड मानक इनपुट लेता है और मानक आउटपुट (स्क्रीन) पर इसे पैगिनेट करता है। इसका अर्थ यह है कि यदि एक कमांड एक स्क्रीन पर दिखाए जा सकने से अधिक जानकारी प्रदर्शित करता है, तो " more
" प्रोग्राम पहली स्क्रीन पूर्ण (पृष्ठ) के बाद रुक जाएगा और उपयोगकर्ता को अगले पृष्ठ को देखने के लिए स्पेस दबाएगा या देखने के लिए वापसी करेगा अगली पंक्ति
यहां एक उदाहरण दिया गया है जो /dev
निर्देशिका में विवरण ( -la
) के साथ सभी फ़ाइलों को सूचीबद्ध करेगा और आउटपुट को more
पाइप करेगा। /dev
निर्देशिका में दर्जनों फाइलें होनी चाहिए और इसलिए सुनिश्चित करें कि more
अंकगणित करने की आवश्यकता है।
एलएस -ला / देव | अधिक
स्क्रीन के नीचे - --More--
प्रॉम्प्ट पर ध्यान दें। अगले पृष्ठ को देखने के लिए स्पेस दबाएं और आउटपुट समाप्त होने तक स्पेस दबाएं।
यहां एक और पाइप उदाहरण है, इस बार " wc
" (शब्द गणना) उपकरण का उपयोग कर।
एलएस -1 / देव | स्वागत
wc
मानक इनपुट में लाइनों, शब्दों और पात्रों की संख्या की गणना करता है। यदि आप -l
पैरामीटर का उपयोग करते हैं तो यह केवल लाइनों की संख्या प्रदर्शित करेगा, यह देखने का एक अच्छा तरीका है कि निर्देशिका में कितनी फ़ाइलें हैं!
लिनक्स के संग्रहण और संपीड़न कमांड ट्यूटोरियल में गहराई से देखो tar
और 7-ज़िप का एक उदाहरण है:
टैर सीवीएफ - * | 7zr a -si somefiles.tar.7z
इस मामले में f
विकल्प के बाद हाइफ़न tar
को मानक आउटपुट को भेजने के लिए कहता है, न कि फ़ाइल में। tar
से आउटपुट को पाइप को 7zr में खिलाया जाएगा जो -एसआई विकल्प के कारण मानक से इनपुट की प्रतीक्षा कर रहा है।
पुनर्निर्देशन
पुनर्निर्देशन किसी अन्य प्रोग्राम की बजाय फ़ाइलों का उपयोग करने के अलावा पाइप के समान है। एक कार्यक्रम के लिए मानक आउटपुट स्क्रीन है। >
(से अधिक) प्रतीक का उपयोग करना किसी प्रोग्राम के आउटपुट को फ़ाइल में भेजा जा सकता है। यहां /dev
फिर से एक निर्देशिका सूची है लेकिन इस बार listing.txt
नामक फ़ाइल पर रीडायरेक्ट की गई है
ls -la> listings.txt
टर्मिनल पर कुछ भी नहीं दिखाई देगा क्योंकि सबकुछ फाइल पर भेजा गया था। आप cat
कमांड (जिसे more
में पाइप किया जा सकता है) का उपयोग कर फ़ाइल पर एक नज़र डाल सकते हैं या सुविधा के लिए आप अपने आप पर more command
उपयोग कर सकते हैं:
अधिक लिस्टिंग.txt
यदि listing.txt
पहले से मौजूद था, तो इसे ओवरराइट कर दिया जाएगा। लेकिन आप इस तरह >>
का उपयोग कर मौजूदा फाइल में जोड़ सकते हैं:
ls -la / home> listings.txt ls -la / dev >> listings.txt
पहला पुनर्निर्देशन फ़ाइल listing.txt
को ओवरराइट करेगा जबकि दूसरा इसमें शामिल होगा।
cat
कमांड का उपयोग रीडायरेक्शन का उपयोग कर फ़ाइल बनाने के लिए किया जा सकता है, उदाहरण के लिए:
बिल्ली> atextfile.txt
अब जब भी आप टाइप करते हैं तो टेक्स्ट atextfile.txt
भेजा जाएगा जब तक आप कंट्रोल-डी दबाते हैं, जिस बिंदु पर फ़ाइल बंद हो जाएगी और आपको कमांड प्रॉम्प्ट पर वापस कर दिया जाएगा। यदि आप फ़ाइल में अधिक टेक्स्ट जोड़ना चाहते हैं तो एक ही कमांड का उपयोग करें, लेकिन दो से अधिक संकेतों ( >>
) के साथ।
निष्कर्ष
लिनक्स कमांड लाइन प्रोग्रामों में से कई को पुनर्निर्देशन और पाइप के साथ काम करने के लिए डिज़ाइन किया गया है, उनके साथ प्रयोग करने का प्रयास करें और देखें कि वे कैसे बातचीत करते हैं। उदाहरण के लिए ps
कमांड का आउटपुट, जो मौजूदा प्रक्रियाओं को सूचीबद्ध करता है, को grep
में पाइप किया जा सकता है। देखें कि क्या आप रूट के स्वामित्व वाली प्रक्रियाओं को सूचीबद्ध करने के तरीके को कैसे काम कर सकते हैं।