सवाल बीच में अंतर को समझने में मदद करें: sort

तो मैं उबंटू सीख रहा हूं (पहली बार) और मैं उबंटू सर्वर पुस्तक को पढ़ रहा हूं

अध्याय 14 कहता है

filename.txt | sort मुझे फ़ाइल की सामग्री के साथ एक आउटपुट देगा, लेकिन क्रमबद्ध अगर मैं इसमें टाइप कर सकता हूं तो इसमें उल्लेख नहीं है:

filename.txt | sort > sortedfilename.txt सॉर्ट की गई सामग्री के साथ इस बार एक नई फाइल बनाने के लिए, क्या मैं कर सकता हूं?

यह बताता है कि मैं टाइप कर सकता हूं

sort < filename.txt

और फिर, फ़ाइलों की सामग्री का एक क्रमबद्ध आउटपुट प्राप्त करें यह उल्लेख करना जारी है कि मैं टाइप कर सकता हूं sort < filename.txt > sortedfilename.txt

और क्रमबद्ध सामग्री के साथ एक फाइल बनाएँ

तो क्या वही काम करने के लिए ये दो अलग-अलग तरीके हैं?

धन्यवाद!


1
2017-12-09 14:24


मूल




जवाब:


आपके उदाहरण कोड में एक टाइपो है जिसे मैं पहले संबोधित करूंगा। filename | ... एक त्रुटि को दूर करने के अलावा कुछ भी नहीं करेगा और फिर पाइप के दूसरी तरफ चीज को भ्रमित कर देगा ... जब तक कि फ़ाइल नाम भी एक वैश्विक निष्पादन योग्य नहीं है और फिर यह वही नहीं कर रहा है जो आप चाहते थे।

आपको करना होगा cat filename | ...

बस पानी को गंदे करने के लिए, sort एक तर्क के रूप में एक फ़ाइल नाम भी ले सकते हैं। आप (और चाहिए, यदि यह आपका वास्तविक उपयोग केस है) बस चलाएं sort filename > sortedfilename


वैसे भी, रीडायरेक्ट पर वापस ...

इनपुट रीडायरेक्ट (<) में एक फ़ाइल और पाइप से पढ़ता है stdin। अपने प्रश्न का उत्तर देने के लिए, यह है सीधे के बराबर cat filename |

sort आदेश के लिए दिखता है stdin एक फ़ाइल नाम तर्क के बदले में और सॉर्टिंग और पाइप जो करता है stdout। आउटपुट पुनर्निर्देशन (>) तब स्क्रीन के बजाए फ़ाइल में भेजने के लिए इस्तेमाल किया जा सकता है।

यदि आप वास्तव में अपने दिमाग को उड़ाना चाहते हैं, तो पढ़ें आई / ओ पुनर्निर्देशन पर टीएलडीपी का अध्याय। यह शायद आपकी पुस्तक की तुलना में थोड़ा अधिक कच्चा है लेकिन यह ठोस, परीक्षण की गई सामग्री है। असल में (इसे फिर से पढ़ना), इसकी व्याख्या बहुत सभ्य है।

इनपुट की स्थिति statndard पाइप की तुलना में बहुत अधिक तरल पदार्थ है। निम्नलिखित मान्य है:

< filename sort > sortedfilename

2
2017-12-09 14:38



आपका बहुत बहुत धन्यवाद! सिर्फ मेरे प्रश्न का उत्तर देने के बजाय आपने मुझे एक अच्छा अतिरिक्त भी दिया! बहुत सराहना की! - Giladiald