पर विचार की तरह कुछ:क्या एक ही इनपुट फ़ाइल का उपयोग एक पाइप कमांड के आउटपुट के रूप में करना ठीक है?
cat file | command > file
इस अच्छा अभ्यास है? क्या यह इनपुट फ़ाइल को उसी समय के रूप में ओवरराइट कर सकता है जैसा कि हम इसे पढ़ रहे हैं, या क्या यह हमेशा स्मृति में पहले पढ़ा जाता है और फिर दूसरी कमांड पर पाइप किया जाता है?
जाहिर है, मैं मध्यस्थ कदम के रूप में अस्थायी फ़ाइलों का उपयोग कर सकते हैं, लेकिन मैं बस सोच रहा हूँ ..
t=$(mktemp)
cat file | command > ${t} && mv ${t} file
धन्यवाद, moreutils बहुत उपयोगी लग रहा है! क्या यह पुनर्निर्देशन पर लागू होता है: 'आदेश < file > फ़ाइल' या यहां तक कि प्रक्रिया प्रतिस्थापन:' कमांड <(cat file) > फ़ाइल'? – Amro
हां, यह दोनों मामलों में भी लागू होता है। ध्यान रखें कि खोल किसी भी क्रम में पुनर्निर्देशन को सेट करने के लिए स्वतंत्र है, इसलिए आपको एक ही कमांड या पाइपलाइन में दो बार एक ही फ़ाइल तक पहुंचने के लिए अपरिभाषित व्यवहार पर विचार करना चाहिए। यहां तक कि यह कभी-कभी काम करता है, इसकी गारंटी नहीं है। – Juliano