क्या आपने कभी एक संपादक में फ़ाइल खोलने का प्रयास किया है ताकि यह पता चल सके कि इसमें अपठनीय बाइनरी सामग्री है?
लिनक्स "तार" कमांड किसी भी फ़ाइल में मानव-पठनीय पात्रों को देखना संभव बनाता है।
"स्ट्रिंग्स" कमांड का उपयोग करने का मुख्य उद्देश्य यह है कि आप किस प्रकार की फाइल को देख रहे हैं, यह जानने के लिए है कि आप इसे टेक्स्ट निकालने के लिए भी उपयोग कर सकते हैं। उदाहरण के लिए, यदि आपके पास एक स्वामित्व प्रोग्राम से एक फ़ाइल है जो अजीब बाइनरी प्रारूप में फ़ाइलों को सहेजती है तो आप फ़ाइल में रखे गए पाठ को निकालने के लिए "स्ट्रिंग्स" का उपयोग कर सकते हैं।
स्ट्रिंग कमांड का उदाहरण उपयोग
स्ट्रिंग कमांड की शक्ति का प्रदर्शन करने का एक शानदार तरीका लिबर ऑफिस राइटर का उपयोग करके एक दस्तावेज़ बनाना है।
बस लिबर ऑफिस राइटर खोलें और कुछ टेक्स्ट दर्ज करें और फिर इसे मानक ओडीटी प्रारूप में सहेजें।
अब एक टर्मिनल विंडो खोलें (एक ही समय में CTRL, ALT और T दबाएं) और फिर फ़ाइल को प्रदर्शित करने के लिए बिल्ली कमांड का उपयोग निम्नानुसार करें:
बिल्ली yourfilename.odt | अधिक
(आपके द्वारा बनाई गई फ़ाइल के नाम से yourfilename.odt को बदलें)
आप जो देखेंगे वह अवैध पाठ की पूरी दीवार है।
फ़ाइल के माध्यम से स्क्रॉल करने के लिए स्पेसबार दबाएं। पूरी तरह से फ़ाइल में आप अपने द्वारा दर्ज किए गए कुछ पाठ देखेंगे।
स्ट्रिंग कमांड का उपयोग केवल उन हिस्सों को प्रदर्शित करने के लिए किया जा सकता है जो मानव पठनीय हैं।
अपने सबसे सरल रूप में आप निम्न आदेश चला सकते हैं:
तारों yourfilename.odt | अधिक
पहले की तरह, पाठ की एक दीवार दिखाई देगी, लेकिन केवल एक पाठ जिसे आप मानव के रूप में पढ़ सकते हैं। यदि आप भाग्यशाली हैं तो आप अपना टेक्स्ट देख पाएंगे।
आप यह देखने में सक्षम होंगे कि यह महत्वपूर्ण है, हालांकि, पहली पंक्ति पर है:
mimetypeapplication / vnd.oasis.opendocument.text
हम जानते हैं कि फाइल प्रकार एक लिबर ऑफिस राइटर ओडीटी फ़ाइल है 2 कारणों से:
- हमने फाइल बनाई है
- एक्सटेंशन है। ओडीटी
कल्पना कीजिए कि आपने फ़ाइल नहीं बनाई है या आपको फ़ाइल को पुनर्प्राप्त डिस्क पर मिला है और फ़ाइल में कोई एक्सटेंशन नहीं था।
विंडोज रिकवरी अक्सर 0001, 0002, 0003 आदि जैसे नामों वाली फाइलों को पुनर्प्राप्त करेगी। तथ्य यह है कि फाइलें पुनर्प्राप्त की गईं लेकिन यह काम करने की कोशिश कर रही है कि उन फाइलों के प्रकार किस तरह दुःस्वप्न थे।
तारों का उपयोग करके आपके पास फ़ाइल प्रकार को काम करने का एक लड़ने का मौका है। यह जानकर कि एक फ़ाइल opendocument.text फ़ाइल है, इसका मतलब है कि आप इसे ओडीटी एक्सटेंशन से सहेज सकते हैं और इसे लिबर ऑफिस लेखक में खोल सकते हैं।
यदि आप एक ओडीटी फ़ाइल से अनजान थे तो मूल रूप से एक संपीड़ित फ़ाइल है। अगर आप yourfilename.zt पर yourfilename.odt का नाम बदलते हैं तो आप इसे एक संग्रह उपकरण में खोल सकते हैं और फ़ाइल को अनजिप भी कर सकते हैं।
वैकल्पिक व्यवहार
डिफ़ॉल्ट रूप से स्ट्रिंग कमांड फ़ाइल के भीतर सभी तारों को लौटाता है लेकिन आप व्यवहार को स्विच कर सकते हैं ताकि यह फ़ाइल में प्रारंभिक, लोड किए गए डेटा अनुभागों से स्ट्रिंग लौटा सके।
इसका वास्तव में क्या मतलब है? कोई नहीं जानता।
यह समझने में समझदारी होती है कि आप फ़ाइल प्रकार को खोजने या फ़ाइल में विशिष्ट टेक्स्ट देखने के लिए स्ट्रिंग का उपयोग कर रहे हैं।
यदि डिफ़ॉल्ट व्यवहार का उपयोग करते हुए स्ट्रिंग कमांड चलाते समय आपको वह आउटपुट नहीं मिलता है जिसके लिए आप उम्मीद कर रहे थे तो यह देखने के लिए निम्न आदेशों में से किसी एक को चलाने का प्रयास करें कि यह कोई फर्क पड़ता है या नहीं:
तार-डी yourfilename
तार - डेटा yourfilename
मैनुअल पेज बताता है कि उपरोक्त आदेश तारों से लौटे कचरे की मात्रा को कम करने में मदद कर सकता है।
"स्ट्रिंग्स" कमांड को रिवर्स में काम करने के लिए सेट किया जा सकता है ताकि माइनस डी स्विच डिफ़ॉल्ट व्यवहार हो। यदि यह आपके सिस्टम पर है तो आप निम्न आदेश का उपयोग कर सभी डेटा वापस कर सकते हैं:
तार - आपका yourfilename
स्वरूपण आउटपुट
पाठ के प्रत्येक पंक्ति के साथ फ़ाइल का नाम प्रदर्शित करने के लिए आप आउटपुट के भीतर टेक्स्ट प्राप्त कर सकते हैं।
ऐसा करने के लिए निम्न आदेशों में से एक चलाएं:
तार -फफिल्फ़नाम
तार - प्रिंट-फ़ाइल-नाम yourfilename
आउटपुट अब इस तरह कुछ दिखेंगे:
yourfilename: पाठ का एक टुकड़ा
yourfilename: पाठ का एक और टुकड़ा
आउटपुट के हिस्से के रूप में आप उस फ़ाइल को ऑफ़सेट भी प्रदर्शित कर सकते हैं जहां फ़ाइल में वह टेक्स्ट दिखाई देता है। ऐसा करने के लिए निम्न आदेश चलाएं:
तार-आपका yourfilename
आउटपुट इस तरह कुछ दिखाई देगा:
16573 आपका
17024 पाठ
ऑफसेट वास्तव में ऑक्टल ऑफसेट है हालांकि इस पर निर्भर करता है कि आपके सिस्टम के लिए तारों को कैसे संकलित किया गया है, यह आसानी से हेक्स या दशमलव ऑफसेट भी हो सकता है।
ऑफसेट प्राप्त करने का एक और सटीक तरीका निम्न आदेशों का उपयोग करना है:
तार -td yourfilename
तारों के लिए - yourfilename
तार - आपकाफाइलनाम
माइनस टी का अर्थ है ऑफ़सेट और चरित्र जो ऑफ़सेट प्रकार निर्धारित करता है, लौटाता है। (यानी डी = दशमलव, ओ = ऑक्टल, एच = हेक्स)।
डिफ़ॉल्ट रूप से स्ट्रिंग कमांड प्रत्येक नई स्ट्रिंग को एक नई लाइन पर प्रिंट करता है लेकिन आप अपनी पसंद का डिलीमीटर सेट कर सकते हैं। उदाहरण के लिए एक पाइप प्रतीक ("|") का उपयोग करने के लिए delimiter निम्न आदेश चलाता है:
तार-एस "|" yourfilename
स्ट्रिंग सीमा समायोजित करें
डिफ़ॉल्ट रूप से स्ट्रिंग कमांड पंक्ति में 4 प्रिंट करने योग्य वर्णों की एक स्ट्रिंग की तलाश करता है। आप डिफ़ॉल्ट समायोजित कर सकते हैं ताकि यह केवल 8 प्रिंट करने योग्य वर्णों या 12 प्रिंट करने योग्य वर्णों के साथ एक स्ट्रिंग लौटा सके।
इस सीमा को समायोजित करके आप आउटपुट को सर्वोत्तम संभव परिणाम प्राप्त करने के लिए तैयार कर सकते हैं। एक स्ट्रिंग की तलाश करके जो बहुत लंबा है, आप उपयोगी पाठ को छोड़ने का जोखिम उठाते हैं लेकिन इसे बहुत छोटा बनाकर आप अधिक जंक लौट सकते हैं।
स्ट्रिंग सीमा समायोजित करने के लिए निम्न आदेश चलाएं:
स्ट्रिंग्स- एन 8 yourfilename
उपर्युक्त उदाहरण में मैंने सीमा को 8 में बदल दिया है।
आप अपनी पसंद की संख्या के साथ 8 को प्रतिस्थापित कर सकते हैं।
आप एक ही काम करने के लिए निम्न आदेश का भी उपयोग कर सकते हैं:
तार --bytes = 8 yourfilename
व्हाइटस्पेस शामिल करें
डिफ़ॉल्ट रूप से, स्ट्रिंग कमांड में व्हाइटस्पेस जैसे टैब या स्पेस को प्रिंट करने योग्य वर्ण के रूप में शामिल किया जाता है। इसलिए यदि आपके पास एक स्ट्रिंग है जो "बिल्ली को चटनी पर बैठे" के रूप में पढ़ती है तो स्ट्रिंग कमांड पूरे टेक्स्ट को वापस कर देगा।
नई लाइन वर्ण और कैरिज रिटर्न डिफ़ॉल्ट रूप से प्रिंट करने योग्य वर्ण नहीं माना जाता है।
नए लाइन वर्णों और कैरिज रिटर्न को पहचानने के लिए तारों को प्राप्त करने के लिए एक प्रिंट करने योग्य चरित्र के रूप में निम्नलिखित तरीके से चलते हैं:
तार-आपका yourfilename
एन्कोडिंग बदलें
तारों के उपयोग के लिए 5 एन्कोडिंग विकल्प उपलब्ध हैं:
- एस = 7 बिट बाइट (ASCII, आईएसओ 885 9 के लिए उपयोग किया जाता है)
- एस = 8 बिट बाइट
- बी = 16 बिट bigendian
- एल = 16 बिट littleendian
डिफ़ॉल्ट 7 बिट बाइट है।
एन्कोडिंग को बदलने के लिए निम्न आदेश चलाएं:
तार-आपका yourfilename
तार --encoding = s yourfilename
उपर्युक्त आदेश में, मैंने डिफ़ॉल्ट "एस" निर्दिष्ट किया है जिसका अर्थ है 7 बिट बाइट। बस अपनी पसंद के एन्कोडिंग अक्षर के साथ "एस" को प्रतिस्थापित करें।
बाइनरी फ़ाइल विवरण नाम बदलें
आप तारों के व्यवहार को बदल सकते हैं ताकि यह आपके सिस्टम के लिए प्रदान की गई किसी अन्य बाइनरी फ़ाइल डिस्क्रिप्टर लाइब्रेरी का उपयोग कर सके।
यह स्विच विशेषज्ञों के लिए एक है। यदि आपके पास उपयोग करने के लिए एक और लाइब्रेरी है तो आप निम्न स्ट्रिंग कमांड चलाकर ऐसा कर सकते हैं:
स्ट्रिंग्स -टी बीएफडीनाम
एक फ़ाइल से विकल्प पढ़ना
यदि आप प्रत्येक बार एक ही विकल्प का उपयोग करने जा रहे हैं तो आप प्रत्येक बार कमांड चलाने के दौरान सभी स्विच निर्दिष्ट नहीं करना चाहते हैं क्योंकि इसमें समय लगता है।
आप क्या कर सकते हैं नैनो का उपयोग करके एक टेक्स्ट फ़ाइल बनाएं और उस फ़ाइल के भीतर विकल्पों को निर्दिष्ट करें।
टर्मिनल के भीतर इसे आज़माकर निम्न आदेश चलाएं:
नैनो स्ट्रिंग्सटॉप
फ़ाइल में निम्न पाठ दर्ज करें:
-f -o -n 3 -s "|"
CTRL और O दबाकर फ़ाइल को सहेजें और CTRL और X दबाकर बाहर निकलें।
इन विकल्पों के साथ स्ट्रिंग कमांड चलाने के लिए निम्न आदेश चलाएं:
तार @stringsopts yourfilename
विकल्प फ़ाइल स्ट्रिंग्सपॉप्स से पढ़े जाएंगे और आपको प्रत्येक स्ट्रिंग, ऑफसेट और "|" से पहले फ़ाइल नाम देखना चाहिए एक विभाजक के रूप में।
सहायता ले रहा है
यदि आप तारों के बारे में अधिक पढ़ना चाहते हैं तो आप सहायता प्राप्त करने के लिए निम्न आदेश चला सकते हैं।
तार --help
वैकल्पिक रूप से आप मैन्युअल पृष्ठ भी पढ़ सकते हैं:
आदमी तार
स्ट्रिंग्स का कौन सा संस्करण आप चल रहे हैं इसका पता लगाएं
स्ट्रिंग्स का संस्करण ढूंढने के लिए आप निम्न आदेशों में से एक चला रहे हैं:
तार -v
तार-वी
तार - विचलन