आउटपुट पुनर्निर्देशन और रिक्त स्थान


9

मैं इस बारे में पागल हूँ, लेकिन उम्मीद है कि यह एक आसान सवाल है:

क्या इसमें कोई अंतर है

cat file1 | egrep -oP "[Mm]y string" > /home/user/file.txt

तथा

cat file1|egrep -oP "[Mm]y string">/home/user/file.txt

यदि मेरे पास पाइप (!) और रिडायरेक्शन (>) अक्षर हैं, तो क्या इससे कोई फर्क नहीं पड़ता? मैं वास्तव में पागल हूँ कि वहाँ रिक्त स्थान होने से किसी भी तरह आउटपुट फ़ाइल में समाप्त हो जाएगा जब मैं ऐसा नहीं चाहता। क्या कोई स्पष्ट कर सकता है? (अगर वह मायने रखता है तो Ubuntu 12 / bash का उपयोग करना।)


केवल अंतर एक) कॉस्मेटिक और बी) सुविधा है जब कमांड लाइन को बैश में संपादित करना - जैसे कि एक "शब्द" को रिक्त स्थान द्वारा सीमांकित किया जाता है, इसलिए आसपास के रिक्त स्थान के बिना |या >फिर Ctrl-Wपिछले "शब्द" को हटाने के लिए टाइप करने से आप जितना चाहते थे उससे अधिक नष्ट हो जाएगा। कर्सर-मूवमेंट के लिए डिट्टो कीस्ट्रोक्स जैसे Esc-fऔर Esc-bआदि
कैस

जवाबों:


8

शेल कमांड लाइन में, अनछुए स्थान केवल कमांड पार्सिंग के दौरान शब्दों को परिसीमित करने के लिए कार्य करते हैं। वे न तो पारित किए जाते हैं, न तो उन तर्कों में, जिन्हें कमांड देखता है और न ही मानक इनपुट स्ट्रीम में।


क्या आप सुनिश्चित हैं कि ऑपरेटरों के बाद किसी स्थान का उपयोग करने के साथ सुरक्षा भेद्यता नहीं है? मेरे पास अब इसे पुन: प्रस्तुत करने में एक कठिन समय है, लेकिन एक सामान्य शोषण है जहां एक दुर्भावनापूर्ण उपयोगकर्ता "फ़ाइलनाम" जैसी फ़ाइल का उपयोग करके इच्छित ऑपरेशन को बदल सकता है जब इच्छित फ़ाइल "फ़ाइलनाम" होती है।
CrippledTable
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.