टर्मिनल एप्लिकेशन के लिए एक लॉन्चर के साथ, मैं प्रोग्राम पूरा होने के बाद टर्मिनल को कैसे खुला रख सकता हूं?


24

मेरे पास एक टर्मिनल कमांड है जो मैं एक एप्लिकेशन लॉन्चर से चलाता हूं। यह महान काम करता है, हालांकि कभी-कभी कमांड विफल हो जाता है, इसलिए मैं चाहूंगा कि टर्मिनल खुला रहे ताकि मैं परिणाम देख सकूं। मैं यह कैसे कर सकता हूँ?

जवाबों:


23

आपके आदेश को कहते हैं mycommand, मैं इसे चलाने के लिए अपना लांचर बदलूंगा:

gnome-terminal -e "mycommand|less"

यदि आप अधिक स्थायी, शायद क्लीनर समाधान चाहते हैं, तो गनोम-टर्मिनल खोलें, एडिट, प्रोफाइल वरीयताओं पर जाएं और शीर्षक और कमांड टैब पर क्लिक करें। "जब टर्मिनल से बाहर निकलें" विकल्प "टर्मिनल खुला रखें" को बदलें।

जब आप कमांड निष्पादित करते हैं, तो अब टर्मिनल को खुला छोड़ देना चाहिए जब कुछ चलता है।

संपादित करें: यदि आप वास्तव में टर्मिनल के बारे में परवाह नहीं करते हैं, तो आप सिर्फ xterm के होल्ड फ्लैग का उपयोग कर सकते हैं:

xterm -e "mycommand" hold

7
डिफॉल्ट टर्मिनल को 'जब कमांड बाहर निकलता है' कार्रवाई करने के लिए, मैं एक नया टर्मिनल प्रोफाइल बनाने का सुझाव देता हूं, इसे एक कमांड से बाहर निकलने के बाद खुला रहने के लिए सेट करें, और गनोम-टर्मिनल --tab-with-profile=PROFILENAMEविकल्प पास करें। आप अलग अलग bahaviours इस तरह :-) के लिए कई प्रोफ़ाइल हो सकती हैं
invert

1
xterm -hold -e mycommand

8

आपका लॉन्चर सही स्क्रिप्ट चला रहा है?

अपनी स्क्रिप्ट के अंत में जोड़ें

read -p "Press any key to exit > " -n1 junk
echo 

तब आपकी स्क्रिप्ट तब तक प्रतीक्षा करेगी जब तक आप इसे समाप्त करने का विकल्प नहीं चुनते।


1
+1, और प्रॉम्प्ट केवल तभी दिखाने के लिए जब कमांड विफल हो जाता है (एक गैर-शून्य निकास कोड लौटाता है) जो कोई भी कर सकता हैcommand || read -n1 -p "Command failed. Press any key to exit..."
Jukka Matilainen

8

अपने .desktop शॉर्टकट में, इसका उपयोग करें

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"

आपकी स्क्रिप्ट समाप्त होने के बाद, बैश प्रक्रिया अपने आप में एक नया आह्वान करेगी।

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

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"

3

अन्य उत्तरों से थोड़ा अलग दृष्टिकोण: अपनी कमांड चलाएं और यदि वह विफल हो जाता है, तो एक शेल स्पॉन करें। इस तरह आपको टर्मिनल ओपन (जो कि कमांड की सफलता या विफलता के बीच अंतर नहीं करता है) को धारण करने की आवश्यकता नहीं है, और आप उस शेल को विशेष रूप से विफलता में उपयोगी पा सकते हैं। इसे बंद करने के लिए, बस Ctrl-D (EOF), "बाहर निकलें", Alt-F4 (या जो भी आपका विंडो मैनेजर विंडोज़ बंद करने के लिए उपयोग करता है), आदि का उपयोग करें।

सफलता या खोल

#!/bin/sh
[ $# -eq 0 ] && {
  echo "$(basename $0): no command" >&2
  exit 1
}
"$@" || {
  echo "failed: $?"
  exec $SHELL
}

इस फ़ाइल को कहीं पर रखें , जैसे ~ / बिन, फिर अपने लांचर में "सफलता-या-खोल अपनी मूल कमांड" का उपयोग करें।


0

यह उत्तर मुझे अब तक का सबसे अच्छा उत्तर देता है जिसे आप करना चाहते हैं। वे कमांड को निष्पादित करने के लिए एक स्क्रिप्ट बनाने की सलाह देते हैं - इसका उपयोग --इनिट-फाइल पैरामीटर (बैश स्पेसिफिक के साथ, लेकिन आप शायद csh / tcsh / zsh, आदि के लिए भी कर सकते हैं):

#!/bin/bash --init-file
commands to run

... और इसे निष्पादित करें:

xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang

0

watchकमांड का उपयोग करें ।

प्रारूप: watch -n60 myCommandयाwatch -n60 "my command string"

  • -nकरने के लिए कॉल के बीच प्रतीक्षा करने के लिए सेकंड की संख्या निर्दिष्ट myCommand ; ex: उपरोक्त कमांड हर 60 सेकंड में myCommand को हमेशा के लिए कॉल करेगा।
  • यदि कमांड कई शब्द हैं, तो इसे दोहरे उद्धरण चिह्नों के अंदर रखें "my command string":।

मान लें कि आप एक लॉन्चर चाहते हैं जो डिस्क उपयोग को प्रदर्शित करता है, और पाठक को देखने के लिए खुला रहता है। मैं लांचर के अंदर बस इस कमांड का उपयोग करूँगा:
watch -n60 "df -h"जो df -hअब हर 60 सेकंड में कॉल करता है ।

मुझे यह स्वीकार किए गए उत्तर पर पसंद है gnome-terminal -e "mycommand|less"क्योंकि मैं जुबांटु चल रहा हूं, जो डिफ़ॉल्ट रूप से एक अलग टर्मिनल का उपयोग करता है।


0

लॉन्चर पर राइट-क्लिक करके और प्रॉपर्टीज़ दर्ज करके देखें।

टर्मिनल विंडो को खुला रखने का विकल्प होना चाहिए यहाँ छवि विवरण दर्ज करें

.Desktop फ़ाइल में, प्रविष्टि होनी चाहिए X-KeepTerminal=true

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.