प्रोग्राम ज्ञानी-टर्मिनल में टैब खोलें, कमांड निष्पादित करें, और टैब खुला रहें


12

मैं एक कमांड लिखने की कोशिश कर रहा हूं, जो कुछ टर्मिनल टैब लॉन्च करेगा, प्रत्येक टैब में कुछ निष्पादित करेगा, और कमांड समाप्त होने के बाद प्रत्येक टैब खुला रहेगा, इसलिए मैं आउटपुट को देख सकता हूं और प्रत्येक टैब में अधिक कमांड टाइप कर सकता हूं

कुछ इस तरह:

gnome-terminal --tab -e "ls -a" --tab -e "ls"

लेकिन इसके साथ समस्या यह है कि "ls" कमांड समाप्त होते ही टैब बंद हो जाते हैं। क्या किसी को पता है कि टैब कैसे खुला रहना है?

जवाबों:


11

गनोम-टर्मिनल या तो कमांड निष्पादित कर सकता है या शेल खोल सकता है, लेकिन दोनों नहीं।

कमांड को इनकैप्सुलेट करके और शेल के बाद के इनवोकेशन को एक कमांड में करने के लिए दोनों को वर्कअराउंड करना है।

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""

अधिक विकल्पों के लिए स्टैक ओवरफ्लो पर एक समान प्रश्न के लिए मेरा उत्तर पढ़ें: /programming/3512055/avoid-gnome-terminal-close-after-script-execution/353144#3531426


10

यदि आपने स्थापित xdotoolऔर wmctrlस्थापित किया है, तो निम्नलिखित शेल स्क्रिप्ट काम कर सकती है:

#!/usr/bin/env bash

window="$(xdotool search --class gnome-terminal | head -1)"
xdotool windowfocus $window
xdotool key ctrl+shift+t
xdotool type "$*"
xdotool key Return

मैं इसे इस तरह से उपयोग करता हूं:

$ run-in-new-tab 'ls -l'

मुझे यह विचार ट्रस्टिन ली के ब्लॉग पर मिला ।


धन्यवाद। यह बहुत अच्छी तरह से काम करता है। sleep 1हालाँकि मुझे मेरे लिए काम करने के लिए इसे ctrl + shift + t के बाद जोड़ना होगा । मैं इस बात को स्वीकार करूंगा अगर जल्द ही कुछ और सामने न आए

हाँ - मैंने पाया कि मुझे sleep 2इसे 100% समय काम करना पड़ा । महान समाधान हालांकि - मैं अब 8 टैब खोल रहा हूं, जो विभिन्न सर्वरों में ssh, विभिन्न प्रक्रियाओं आदि को शुरू करते हैं, इसका उपयोग करते हुए: मेरा सुबह का सेटअप अब पूरी तरह से स्क्रिप्टेड है :)
मैक्स विलियम्स

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