sort "$f1"
उन मूल्यों के लिए विफल रहता है $f1जिनके साथ शुरू होता है -या sortकुछ के मामले के लिए यहां से शुरू होता है +( -o/etc/passwdउदाहरण के लिए नामक फ़ाइल के लिए गंभीर परिणाम हो सकते हैं )।
sort -- "$f1"
(जहां -- विकल्पों के अंत का संकेत होता है) उन मुद्दों के अधिकांश को संबोधित करता है लेकिन फिर भी फाइल के लिए विफल रहता है -(जो sortइसके बजाय इसके स्टड के रूप में व्याख्या करता है)।
sort < "$f1"
उन मुद्दों नहीं है।
यहां, वह शेल है जो फ़ाइल को खोलता है। इसका अर्थ यह भी है कि यदि फ़ाइल नहीं खोली जा सकती है, तो आपको संभावित रूप से अधिक उपयोगी त्रुटि संदेश भी मिलेगा (उदाहरण के लिए, अधिकांश शेल स्क्रिप्ट में लाइन नंबर को इंगित करेंगे), और यदि आप उपयोग करते हैं तो त्रुटि संदेश संगत होगा। फ़ाइलों को खोलने के लिए जहाँ भी संभव हो पुनर्निर्देशन।
और में
sort < "$f1" > out
(इसके विपरीत sort -- "$f1" > out), यदि "$f1"नहीं खोला जा सकता है, outतो नहीं बनाया जाएगा / काट दिया जाएगा और sortचलाया भी नहीं जाएगा ।
कुछ संभावित भ्रम (नीचे दी गई टिप्पणियों के बाद) को साफ़ करने के लिए, जो कमांड mmap()को फ़ाइल से आईएनजी को रोकने या उसके lseek()अंदर प्रवेश नहीं sortकरता है (ऐसा नहीं करता है) बशर्ते कि फ़ाइल स्वयं ही खोजी हो। अंतर केवल इतना है कि फ़ाइल पहले खोल दी जाती है और शेल के द्वारा फाइल डिस्क्रिप्टर 0 के रूप में शेल द्वारा बाद में संभवतः एक अलग फाइल डिस्क्रिप्टर पर विरोध किया जाता है। आदेश अभी भी / mmap कि fd 0 की तलाश कर सकता है क्योंकि यह प्रसन्न है। यह भ्रमित होने की बात नहीं है cat file | cmdकि इस समय cmdका स्टेपन एक पाइप है जिसे mmaped / तलाश नहीं किया जा सकता है।