टर्मिनल लिनक्स सिस्टम का दिल है। लिनक्स में चलने वाला हर प्रोग्राम एक टर्मिनल कमांड लाइन के नीचे चल रहा है। इसमें बड़े पैमाने के प्रोग्राम शामिल हैं, जैसे वेब ब्राउज़र और यहां तक कि टेक्स्ट एडिटर जैसे सरल प्रोग्राम भी। जैसे, टर्मिनल का सही ढंग से उपयोग करने में सक्षम होना एक महत्वपूर्ण कदम है यदि आप समझना चाहते हैं कि ऑपरेटिंग सिस्टम कैसे काम करता है।
उसके साथ, लिनक्स टर्मिनल पर काम करते समय, आप एक कमांड के टर्मिनल आउटपुट को फ़ाइल में सहेजना चाह सकते हैं। इस फ़ाइल का उपयोग किसी अन्य ऑपरेशन के लिए जानकारी के रूप में या केवल टर्मिनल गतिविधि को लॉग करने के लिए किया जा सकता है। यह लेख टर्मिनल आउटपुट को फ़ाइल में सहेजने के पांच तरीके सिखाता है।
1. विशिष्ट टर्मिनल्स का उपयोग करें
इससे निपटने का पहला तरीका एक ऐसे टर्मिनल का उपयोग करना है जो आउटपुट को फ़ाइल में सहेजने का समर्थन करता है। उदाहरण के लिए, मानक KDE इंस्टॉलेशन के साथ आने वाला कंसोल टर्मिनल आउटपुट को फ़ाइल में लिखने का विकल्प शामिल करता है।
ऐसा करने के लिए, मेनू बार में "फाइल" बटन दबाएं और "आउटपुट इस रूप में सहेजें ..." पर क्लिक करें।
यह एक विंडो डायलॉग खोलेगा जहां आप टर्मिनल आउटपुट को सहेज सकते हैं। वहां से, आप चुन सकते हैं कि आप फ़ाइल को कहां सहेजना चाहते हैं।
आप GNOME टर्मिनल में भी एक कमांड के आउटपुट को सहेज सकते हैं। बस टर्मिनल पर राइट-क्लिक करें और "HTML के रूप में आउटपुट कॉपी करें" दबाएं। यह तब टर्मिनल टेक्स्ट को आपके क्लिपबोर्ड में लोड करेगा। वहां से, आप इसे किसी भी टेक्स्ट एडिटर में पेस्ट कर सकते हैं।
2. आउटपुट रीडायरेक्शन
इससे निपटने का एक और तरीका UNIX शेल के बिल्ट-इन ऑपरेटर्स का उपयोग करना है। ये लिनक्स में डिफ़ॉल्ट फ़ंक्शन हैं और एक प्रोग्राम के टेक्स्ट आउटपुट को फ़ाइल में रीडायरेक्ट कर सकते हैं। तीन ऑपरेटर हैं जो ऐसा कर सकते हैं:
>ऑपरेटर या तो एक फ़ाइल बनाएगा या आपके प्रोग्राम के आउटपुट के साथ फ़ाइल की सामग्री को प्रतिस्थापित करेगा। यह उपयोगी है यदि आप अपने प्रोग्राम के वर्तमान परिणाम को उसी फ़ाइल में डंप और देखना चाहते हैं।>>ऑपरेटर भी आपके प्रोग्राम के आउटपुट के साथ एक फ़ाइल बनाएगा। हालांकि, यह ऑपरेटर इसे प्रतिस्थापित करने के बजाय केवल आउटपुट को जोड़ेगा। यह उपयोगी है यदि आप अपने प्रोग्राम के परिणाम को एक ही फ़ाइल में लगातार डंप करना चाहते हैं।- अंत में,
2>ऑपरेटर एक विशेष प्रकार का ऑपरेटर है जो उन त्रुटियों को प्रिंट करेगा जो वापस रिपोर्ट की जाएंगी। यह डिबगिंग के दौरान बहुत उपयोगी है, क्योंकि यह उस समस्या को दिखाता है जिसका सामना प्रोग्राम ने क्रैश होने से पहले किया था।
यह जानकर, इन ऑपरेटर्स का उपयोग करने का तरीका उन्हें आपके प्रोग्राम के अंत में जोड़ना है। निम्नलिखित उदाहरण पर विचार करें:
echo "maketecheasier" > hello.txt
मैंने echo प्रोग्राम को "maketecheasier" शब्द आउटपुट करने का निर्देश दिया, फिर > ऑपरेटर के साथ एक फ़ाइल नाम जोड़ा। इसने UNIX शेल को आउटपुट को स्क्रीन पर प्रिंट करने के बजाय "hello.txt" फ़ाइल में लिखने के लिए कहा।
3. Tee
आउटपुट रीडायरेक्शन के अलावा, आप tee नामक प्रोग्राम का उपयोग करके टर्मिनल कमांड के आउटपुट को भी सहेज सकते हैं। यह एक GNU प्रोग्राम है जो आपको मानक इनपुट से पढ़ने और लिखने की अनुमति देता है। इस प्रोग्राम को UNIX पाइप्स के साथ उपयोग करें ताकि कमांड के आउटपुट को फ़ाइल में लिखा जा सके।
निम्नलिखित उदाहरण पर विचार करें:
echo "maketecheasier" | tee hello.txt
यहां, आउटपुट रीडायरेक्शन का उपयोग करने के बजाय, मैंने आउटपुट को tee पर पाइप (|) किया।
नोट: एक पाइप एक प्रोग्राम के आउटपुट को लेता है और उसे दूसरे के इनपुट में डालता है। यह आपको कई प्रोग्राम्स को एक साथ जोड़ने की अनुमति देता है, जब तक वे सभी मानक इनपुट और आउटपुट का उपयोग कर रहे हैं।
4. Script
टर्मिनल से आउटपुट खींचने का एक और तरीका script के माध्यम से है, एक बिल्ट-इन लिनक्स प्रोग्राम जो आपके द्वारा टर्मिनल में टाइप की गई हर चीज़ और उसके आउटपुट को रिकॉर्ड करता है।
आप script का उपयोग अपने टर्मिनल सत्र के लॉग को पार्स करने योग्य टेक्स्ट फॉर्मेट में रिकॉर्ड करने के लिए कर सकते हैं। यह बहुत उपयोगी है यदि आप अन्य लोगों से सहायता प्राप्त करने के लिए ऑनलाइन एक त्रुटि लॉग भेजना चाहते हैं।
इसका उपयोग करने के लिए, निम्न कमांड चलाएं:
script filename.txt
यह एक स्क्रिप्ट वातावरण शुरू करेगा जहां आप बस कमांड चलाना शुरू कर सकते हैं। एक महत्वपूर्ण बात ध्यान देने योग्य है, हालांकि, script उस सत्र में आपके द्वारा की जाने वाली हर चीज़ को कैप्चर करता है। निम्नलिखित उदाहरण पर विचार करें:
Script started on 2022-03-27 18:02:29+08:00 [TERM="rxvt-unicode-256color" TTY="/dev/pts/2" COLUMNS="77" LINES="22"] [?2004h[[1;31m balaraw:[1;35m~ [0m]$ ls [?2004l [0m[01;34mDesktop[0m [01;34mDownloads[0m [01;34mmail[0m [01;34mNews[0m [01;34mpods[0m [01;34mdocuments[0m [00;32mhello.txt[0m [01;34mMail[0m [01;34mpics[0m [01;34mtmp[0m [01;34mvids[0m [?2004h[[1;31m balaraw:[1;35m~ [0m]$ exit [?2004l exit Script done on 2022-03-27 18:03:19+08:00 [COMMAND_EXIT_CODE="0"]
Script आपके द्वारा दबाए गए सभी कीप्रेस और कंट्रोल कैरेक्टर्स को शामिल करता है। मेरे मामले में, इसने मेरे द्वारा दबाए गए सभी "अदृश्य" कुंजियों को शामिल किया, जिसमें Tab और Backspace की प्रेस शामिल हैं।
एक बार जब आप सत्र के साथ हो जाते हैं, तो `exit` टाइप करें। यह Script प्रोग्राम को समाप्त कर देगा और आपके द्वारा निर्दिष्ट फ़ाइल में पूरा लॉग लिख देगा।
5. फ्रेमबफर टर्मिनल कैप्चर
अंत में, आप लिनक्स फ्रेमबफर से खींचकर टर्मिनल का आउटपुट भी प्राप्त कर सकते हैं। यह उपयोगी है यदि आप सीधे एक टेलीटाइप पर काम कर रहे हैं और एक प्रोग्राम के आउटपुट को कैप्चर करना चाहते हैं।
फ्रेमबफर डिवाइस को कैप्चर करने के लिए, टेलीटाइप में रहते हुए निम्न कमांड चलाएं:
cat /dev/fb0 > capture.raw
एक महत्वपूर्ण बात ध्यान देने योग्य है कि इस तरह फ्रेमबफर डिवाइस को कैप्चर करने का अर्थ है कि आप फ्रेमबफर के कच्चे बाइट्स को एक फ़ाइल में डंप कर रहे हैं। उस फ़ाइल को देखने के लिए, आपको इसे एक इमेज एडिटर में लोड करना होगा और मैन्युअली रंग और बिट डेप्थ को समायोजित करना होगा। न केवल यह प्रक्रिया समय लेने वाली है, बल्कि इसे गलत करना भी आसान है।
इससे निपटने का एक तरीका fbgrab जैसे थर्ड-पार्टी प्रोग्राम का उपयोग करना है। यह फ्रेमबफर डिवाइस से वर्तमान टेलीटाइप स्क्रीन को पकड़ लेगा और इसे या तो PPM या PNG फ़ाइल में डंप कर देगा।
fbgrab इंस्टॉल करना भी अपेक्षाकृत सीधा है। डेबियन और उबंटू-आधारित डिस्ट्रीब्यूशन में, आप apt का उपयोग कर सकते हैं:
sudo apt install fbgrab
आर्क लिनक्स के लिए, pacman चलाएं:
sudo pacman -S fbgrab
टर्मिनल आउटपुट कैप्चर करने के लिए fbgrab का उपयोग करना
एक बार इंस्टॉल हो जाने पर, Control + Shift + Alt + F3 दबाकर टेलीटाइप पर जाएं, फिर या तो `fbcat` या `fbgrab` चलाएं।
Fbcat एक सरल प्रोग्राम है जो वर्तमान फ्रेमबफर स्क्रीन को पकड़ता है और इसे PPM इमेज में सेव करता है। यह एक निम्न-स्तरीय कच्चा इमेज फॉर्मेट है जिसे आप PNG में बदलने के लिए इमेज एडिटर में लोड कर सकते हैं। Fbcat मुख्य रूप से उपयोगी है यदि आप निम्न बिट-डेप्थ डिस्प्ले को कैप्चर करने की कोशिश कर रहे हैं जिसे ठीक से कैप्चर करने के लिए कच्चे इमेज फॉर्मेट की आवश्यकता होती है।
fbcat प्रोग्राम का उपयोग करके कैप्चर करने के लिए, निम्न कमांड चलाएं:
fbcat > capture.ppm
यह वर्तमान में प्रदर्शित स्क्रीन को पकड़ लेगा और सामग्री को capture.ppm फ़ाइल में डंप कर देगा।
दूसरी ओर, Fbgrab एक अधिक जटिल प्रोग्राम है जिसे उच्च बिट-डेप्थ डिस्प्ले को कैप्चर करने के लिए डिज़ाइन किया गया है। अधिकांश भाग के लिए, आप इसका उपयोग अपने टेलीटाइप स्क्रीन को कैप्चर करने के लिए करेंगे। यह डिफ़ॉल्ट रूप से PNG में सेव करने का समर्थन करता है और कैप्चर करने के लिए एक अलग टेलीटाइप चुनने का विकल्प रखता है।
fbgrab प्रोग्राम का उपयोग करके कैप्चर करने के लिए, निम्न कमांड चलाएं:
sudo fbgrab -c 3 capture.png
यह तीसरे टेलीटाइप स्क्रीन को पकड़ लेगा और इसे capture.png फ़ाइल में सेव कर देगा।
यदि आप लिनक्स टर्मिनल के लिए अधिक गाइड ढूंढ रहे हैं, तो कमांड लाइन से ईमेल भेजने पर चर्चा करने वाले इस लेख को देखें।
अक्सर पूछे जाने वाले प्रश्न
1. मदद! Fbgrab काम नहीं करता; तस्वीर सिर्फ काली या खाली है।
ऐसा शायद इसलिए है क्योंकि fbgrab टर्मिनल आउटपुट को कैप्चर करने के लिए एक अलग फ्रेमबफर डिवाइस का उपयोग कर रहा है। "/dev" फ़ोल्डर को सूचीबद्ध करके सिस्टम द्वारा उपयोग किए जा रहे वर्तमान फ्रेमबफर डिवाइस की जांच करें।
ls /dev
वहां से, "/dev/fbX" डिवाइस देखें। आमतौर पर, लिनक्स अपने फ्रेमबफर के लिए "/dev/fb0" का उपयोग करता है। हालांकि, यदि आपका सिस्टम एक अलग फ्रेमबफर का उपयोग कर रहा है, जैसे "/dev/fb1", तो आप fbgrab को उस फ्रेमबफर से खींचने के लिए निम्न कमांड पास कर सकते हैं:
fbgrab -d 1 capture.png
2. क्या उस फ़ाइल की सामग्री को पकड़ना संभव है जिसे मैंने प्रोग्राम के इनपुट के रूप में लिखा था?
हां! ऊपर चर्चा किए गए तीन ऑपरेटर्स के अलावा, आप डेटा को फ़ाइल से खींचने के लिए `<` ऑपरेटर का भी उपयोग कर सकते हैं। शेल तब इसे प्रोग्राम के लिए इनपुट के रूप में मानेगा।
इसे इस तरह करने से अन्य प्रोग्राम्स पर भरोसा करने की आवश्यकता भी समाप्त हो जाती है जो आपके लिए टेक्स्ट प्रिंट करते हैं। निम्नलिखित उदाहरणों पर विचार करें:
[1] cat test.txt | program [2] program < test.txt
- पहला उदाहरण टेक्स्ट लोड करने के लिए cat प्रोग्राम को कॉल करता है, फिर cat के आउटपुट के साथ एक पाइप ऑपरेटर लोड करता है और इसे आपके प्रोग्राम में पाइप करता है।
- दूसरी ओर, दूसरा उदाहरण तुरंत आपके प्रोग्राम को कॉल करता है, फिर `<` ऑपरेटर चुनता है, जो इसके लिए अगले आर्गुमेंट को इसके इनपुट के रूप में मानता है।
3. क्या script को केवल एक कमांड के आउटपुट को कैप्चर करने के लिए मजबूर करने का कोई तरीका है?
हां, एक कमांड के लिए केवल script करना संभव है। यह समस्या निवारण के दौरान बहुत उपयोगी है जब आप केवल एक प्रोग्राम के आउटपुट को कैप्चर करना चाहते हैं। निम्न कमांड चलाकर ऐसा करें:
script -c "your-command" test.txt
-c फ्लैग script प्रोग्राम को केवल प्रोग्राम चलाने के लिए कहता है: your-command। वहां से, यह इसके आउटपुट को test.txt नामक टेक्स्ट फ़ाइल में लिख देगा।