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 / तलाश नहीं किया जा सकता है।