littlendrük का जवाब ठीक है, लेकिन शायद कार्य के लिए थोड़ा भारी है।
यहां एक स्क्रिप्ट है जो अपने तर्कों के आधार पर एक स्क्रिप्ट लिखती है
#!/bin/sh
# terminal-plus-command: start a subordinate terminal which runs
# the interactive shell after first running the command arguments
tmpscript=/tmp/tmpscript.$$
echo "#!$SHELL" > $tmpscript
echo "$@" >> $tmpscript
echo exec "$SHELL" >> $tmpscript
chmod +x $tmpscript
gnome-terminal --command $tmpscript
rm -f $tmpscript
यदि आपने बहुत अधिक शेल प्रोग्रामिंग नहीं की है, तो वहां से अधिक जादू प्रतीत होता है। सबसे पहले, मैं उस स्क्रिप्ट को रखने के लिए एक अस्थायी फ़ाइल का नाम देता हूं जहां $$
इस स्क्रिप्ट को चलाने वाले शेल की प्रक्रिया आईडी है। /tmp/something.$$
रूपक मामले इस स्क्रिप्ट के दो उदाहरणों एक ही समय में चलाए जा रहे हैं प्रयोग किया जाता है, वे एक ही अस्थायी फ़ाइल इस्तेमाल करने की कोशिश नहीं करेंगे।
चर $SHELL
स्क्रिप्ट चलाने वाले शेल के नाम पर सेट है। यदि आप / usr / bin / bash का उपयोग करते हैं, तो संभवतः आप मिनी-स्क्रिप्ट को भी इसका उपयोग करना चाहेंगे।
"$@"
"मेरे सभी तर्कों को जोड़, उन्हें हवाले से अगर जरूरत के लिए" एक खोल मुहावरा है। यह अजीब सिंटैक्स का कारण बनता है
script.sh 'my file' your\ file
तर्कों को दो तत्वों के रूप में व्याख्यायित करना
"my file" "your file"
चार के बजाय कि $@
उपज होगी
"my" "file" "your" "file"
स्क्रिप्ट की अंतिम पंक्तियाँ मिनी स्क्रिप्ट को चलाने और फिर एक इंटरैक्टिव शेल शुरू करने के लिए एक सूक्ति-टर्मिनल की व्यवस्था करती हैं। जब ग्नोम-टर्मिनल बाहर निकलता है, तो अस्थायी स्क्रिप्ट को हटा दिया जाता है क्योंकि कूड़ेदान खोलना होता है।
अंतिम पंक्ति मिनी-स्क्रिप्ट का हिस्सा नहीं है, यह दर्शाता है कि मिनी-स्क्रिप्ट काम करती है। अगर ऊपर की 11 लाइन की स्क्रिप्ट नामक फाइल में है, rt.sh
तो chmod
इसे निष्पादन योग्य बनाता है और फिर इसे निष्पादित किया जाता है।
$ chmod +x rt.sh && ./rt.sh echo hello world
इस सब का परिणाम एक सूक्ति टर्मिनल होगा जो शुरू होता है, प्रदर्शित करता है
hello world
अपनी पहली पंक्ति पर और फिर एक इंटरैक्टिव शेल शुरू करता है:
msw@myhost:~$