सूक्ति-टर्मिनल के लिए -e और -x विकल्पों में क्या अंतर है?


11

मैन पेज स्टेट:

-e, --command=STRING
Execute the argument to this option inside the terminal.
-x, --execute
Execute the remainder of the command line inside the terminal.

दूसरे उदाहरण में "कमांड लाइन" क्या है? और इसका "शेष" क्या है? क्या आप कृपया एक उदाहरण दे सकते हैं कि ये दो विकल्प कहां भिन्न हैं? या वे मूल रूप से एक ही हैं?


1
सटीक नहीं है, लेकिन यह पाया superuser.com/questions/198015/...
rɑːdʒɑ

बड़ा पहला सवाल।
जैरेड स्मिथ

जवाबों:


16

विचार करें:

gnome-terminal -x sleep 10m --version
gnome-terminal -e 'sleep 10m' --version

पहले उदाहरण में, सब कुछ के बाद -xकमांड को निष्पादित करने के लिए उपयोग किया जाता है। इसलिए GNOME टर्मिनल sleep 10m --versionकमांड के रूप में चलेगा । --versionइस मामले में GNOME टर्मिनल द्वारा चलाए जाने वाले कमांड का हिस्सा बन जाता है।

दूसरे में, केवल एकल स्ट्रिंग तर्क को -eकमांड के रूप में उपयोग किया जाता है, और कुछ नहीं। तो --versionयहाँ वास्तव में GNOME टर्मिनल का विकल्प है।

यदि आप आदेशों की एक श्रृंखला चलाना चाहते हैं, तो सबसे अधिक उपयोगी हो सकता है:

gnome-terminal -x bash -c 'command 1; command 2; ...'

ऐसा करना मुश्किल है -e, क्योंकि पूरे कमांड को एक ही स्ट्रिंग की आवश्यकता है, इसलिए आपको पूरी बात उद्धृत करनी होगी। बदले में इसका मतलब है कि आपको उद्धरण और चर विस्तार से अधिक सावधान रहने की आवश्यकता है और इस तरह:

gnome-terminal -e "bash -c 'command 1 $foo; command 2; ...'"

यहां, $fooवर्तमान शेल द्वारा विस्तारित किया जाएगा।

gnome-terminal -e 'bash -c "command 1 | awk '\''{print $NF}'\''"' 

'कमांड स्ट्रिंग के अंदर का उपयोग करना कष्टप्रद उद्धरण हैंडलिंग शामिल है।


5
मुझे अब दिख गया। ऐसा लगता है कि -x विकल्प शायद उद्धरण के साथ समस्याओं से बचने के लिए एक सुविधाजनक तरीके के रूप में आविष्कार किया गया था।
स्टैकज़ेब्रा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.