कमांड लाइन [बंद] का उपयोग करके सूक्ति-टर्मिनल में एक नया टैब खोलें


122

मैं Ubuntu 9.04 x64 का उपयोग कर रहा हूं और जब मैं लिखता हूं:

gnome-terminal --tab

टर्मिनल पर, मुझे उम्मीद है कि यह उसी टर्मिनल विंडो में एक नया टैब खोल सकता है। लेकिन यह इसके बजाय एक नई विंडो खोलता है।

मुझे पता चला कि इसका इरादा एक नई विंडो में एक नया टैब खोलने का है, यानी अगर मैं लिखूं:

gnome-terminal --tab --tab

यह दो टैब के साथ एक नई विंडो खोलेगा।

तो, सवाल यह है कि मैं वर्तमान विंडो में कमांड का उपयोग करके एक नया टैब कैसे खोल सकता हूं gnome-terminal?


4
अगर आप किसी भी तरह से गनोम-टर्मिनल लिख रहे हैं, तो आप नया टैब खोलने के लिए सिर्फ ctrl + shift + t क्यों दबा सकते हैं?)
rasjani

13
और Ctrl+Shift+Tजब स्क्रिप्ट स्क्रिप्ट से कमांड चलाया जा रहा हो तो मुझे कैसे प्रेस करना चाहिए ? (डी-बस नामक कुछ सुना है, हालांकि ऐसा कर सकते हैं)!
विक्रांत चौधरी

19
जब भी मैं अपना पीसी शुरू करता हूं, मुझे अपने गनोम-टर्मिनल में कुछ टैब खोलने की आवश्यकता होती है। और स्वचालित रूप से जो मुझे अपने आप को थोड़ा और अधिक आकर्षक महसूस कराएगा। (जैसा कि वे कहते हैं) आलस्य एक प्रोग्रामर की विशेषता है।
विक्रांत चौधरी

@VikrantChaudhary तीन virtues.com :-)
jpaugh

स्टैक ओवरफ्लो प्रोग्रामिंग और विकास के सवालों के लिए एक साइट है। यह प्रश्न ऑफ़-टॉपिक प्रतीत होता है क्योंकि यह प्रोग्रामिंग या विकास के बारे में नहीं है। देखें किन विषयों मैं यहाँ के बारे में पूछ सकते हैं सहायता केंद्र में। शायद सुपर यूजर या यूनिक्स और लिनक्स स्टैक एक्सचेंज पूछने के लिए बेहतर जगह होगी।
jww

जवाबों:


70
#!/bin/sh

WID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}')
xdotool windowfocus $WID
xdotool key ctrl+shift+t
wmctrl -i -a $WID

यह संबंधित टर्मिनल को ऑटो करेगा और उसके अनुसार टैब खोलता है।


3
धन्यवाद, अच्छा काम करता है। उचित रूप में -WID= xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}'; xdotool windowfocus $WID; xdotool key ctrl+shift+t $WID
विक्रांत चौधरी

6
समाधान के लिए धन्यवाद। हालांकि, यह मेरे लिए स्पष्ट नहीं है कि मैं अलग-अलग टैब में अलग-अलग कमांड कैसे निष्पादित कर सकता हूं। इससे कोई फर्क नहीं पड़ता कि मैं उन सभी कमांडों को जोड़ता हूं जहां वे सभी पहले टैब में निष्पादित होती हैं। क्या आप इसके लिए कोई समाधान शामिल कर सकते हैं?
कैलिन

10
@ कॉलिन sleep 1; xdotool type --delay 1 --clearmodifiers "your Command"; xdotool key Return;कमांड चलाने के लिए उपयोग करते हैं।
15:13 बजे user13107

2
क्यों WID और windowfocus बिट? क्या खिड़की पहले से ही केंद्रित नहीं होगी?
क्रिस मॉर्गन

1
मैं इस लिपि को कहां रखूं?
दाऊदजी

69

आप प्रत्येक टैब को एक सेट कमांड भी चला सकते हैं।

gnome-terminal --tab -e "tail -f somefile" --tab -e "some_other_command"

11
मुझे 'इस टर्मिनल के लिए बच्चे की प्रक्रिया बनाने में त्रुटि हुई' के जवाब मेंgnome-terminal --tab -e "cd /tmp"
हेजहोग

3
@ हेजहोग, मैं उस के लिए एक रास्ता है gnome-terminal --tab --working-directory="/home/user/X/Y/":। मैं क्यों नहीं, लेकिन "~/X/Y/"काम नहीं किया।
'16:

1
मुझे अपने आदेशों से परेशानी हो रही है, अगर मैं केवल --टैब का उपयोग करता हूं, लेकिन अगर मैं --टैब का उपयोग करता हूं तो "my_bash_shorcut" यह काम नहीं करता है। तुम जानते हो क्यों?
एड्रियन मैटेओ

@ AdrianMatteo थोड़ा देर से, लेकिन मुझे लगता है कि मैंने इसे समझ लिया है: यदि आप जिबरिश के साथ दो फाइलें बनाते हैं और फिर इस कमांड को चलाते हैं gnome-terminal --tab -e "tail -f file_a" --tab -e "tail -f file_b", तो गनोम टर्मिनल दो टैब के साथ खुलेगा, जहां प्रत्येक टैब में संबंधित फाइल सामग्री होगी, लेकिन बंद होगा पल आप ^ सी भेजें। यह आपको दिखाता है कि यह क्यों काम नहीं करता है, लेकिन मुझे नहीं पता कि यह कैसे उपाय है।
IDDQD


8

मुझे सबसे सरल तरीका मिला:

gnome-terminal --tab -e 'command 1' --tab -e 'command 2'

मैं tmuxसीधे टर्मिनल का उपयोग करने के बजाय उपयोग करता हूं । तो जो मैं चाहता हूं वह वास्तव में envकई tmuxखिड़कियों के साथ विकास का निर्माण करने के लिए एक एकल और सरल कमांड / शेल फ़ाइल है । शेल कोड निम्नानुसार है:

#!/bin/bash
tabs="adb ana repo"
gen_params() {

    local params=""
    for tab in ${tabs}
    do  
        params="${params} --tab -e 'tmux -u attach-session -t ${tab}'"
    done
    echo "${params}"
}
cmd="gnome-terminal $(gen_params)"
eval $cmd

ये उद्धरण 'command 1'दोहरे उद्धरणों की तुलना में बेहतर काम करते हैं जो केवल मेरे लिए काम करते हैं जब मैं भी निर्दिष्ट करता --working-directory="/some/path/"
हूं

4

थोड़ा और विस्तृत संस्करण (दूसरी विंडो से उपयोग करने के लिए):

#!/bin/bash

DELAY=3

TERM_PID=$(echo `ps -C gnome-terminal -o pid= | head -1`) # get first gnome-terminal's PID
WID=$(wmctrl -lp | awk -v pid=$TERM_PID '$3==pid{print $1;exit;}') # get window id

xdotool windowfocus $WID
xdotool key alt+t # my key map
xdotool sleep $DELAY # it may take a while to start new shell :(
xdotool type --delay 1 --clearmodifiers "$@"
xdotool key Return

wmctrl -i -a $WID # go to that window (WID is numeric)

# vim:ai
# EOF #

2

केवल मामले में, आप खोलना चाहते हैं

  • एक नई विंडो
  • दो टैब के साथ
  • और वहां कमांड निष्पादित कर रहा है
  • और उनके खुले रहने ...

हेयर यू गो:

gnome-terminal --geometry=73x16+0+0 --window \
  --working-directory=/depot --title='A' --command="bash -c ls;bash" \
  --tab --working-directory=/depot/kn --title='B' --command="bash -c ls;bash"

( mate-terminalbtw के लिए भी ऐसा ही है ।)


xfce4-terminalBtw के लिए एक ही काम करता है । इनमें से कौन सी आज्ञा वास्तव में बिंदु के लिए जिम्मेदार है and having them stay open...? Iam पूछ रहा है क्योंकि यह कम से कम के लिए मैनपेज में उल्लेख नहीं हैxfce4-terminal
Jankapunkt

1

उपरोक्त विभिन्न बिंदुओं को एक साथ लाने के लिए, यहाँ एक स्क्रिप्ट है जो स्क्रिप्ट में दिए गए किसी भी तर्क को चलाएगा vim new_tab.sh:

#!/bin/bash
#
# Dependencies:
#   sudo apt install xdotool

WID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}')
xdotool windowfocus $WID
xdotool key ctrl+shift+t
wmctrl -i -a $WID
sleep 1; xdotool type --delay 1 --clearmodifiers "$@"; xdotool key Return;

इसके बाद इसे निष्पादन योग्य बनाएं: chmod +x new_tab.sh

अब आप इसका उपयोग एक नए टैब में जो चाहें करने के लिए कर सकते हैं: ./new_tab.sh "watch ls -l"


0

मेरे पास गनोम-टर्मिनल स्थापित नहीं है, लेकिन आपको dbus-send का उपयोग करके कमांड-लाइन पर DBUS कॉल का उपयोग करके ऐसा करने में सक्षम होना चाहिए ।


0

इसके बजाय रॉक्सटरम का उपयोग करने पर विचार करें।

roxterm --tab

वर्तमान विंडो में एक टैब खोलता है।


0

ऐसे किसी भी समाधान के लिए जो कमांड लाइन का उपयोग नहीं करता है: ctrl + shift + t


10
वे चीजों को स्वचालित करने के लिए कमांड लाइन पूछ रहे हैं। ये शॉर्टकट शायद ही कभी मदद करते हैं।
मुथु गणपति नाथन

मुझे इसी की तो तलाश थी। शीर्षक में प्रश्न 'स्वचालित समाधान' @EAGER_STUDENT तक सीमित नहीं है और ईमानदार होने के लिए, मुझे एक उपयोग के मामले में आना मुश्किल है जहां मुझे GUI स्वचालित की आवश्यकता है। यह रीढ़ के माध्यम से एक ओपन हार्ट सर्जरी करने जैसा है।
स्टीफन विंकलर

6
@SteffenWinkler मुझे खुशी है कि समाधान ने आपकी मदद की। लेकिन सवाल के बाद से 'कमांड लाइन का उपयोग करते हुए' मैंने कुछ स्वचालित आदेशों का उपयोग करने के लिए मान लिया, कुछ उच्च वोट वाले उत्तर की तरह ... वैसे भी जवाब खुद को स्पष्ट करता है 'किसी भी ऐसे समाधान की तलाश में जो कमांड लाइन का उपयोग नहीं करता है' ...। जवाब के लिए कुदोस .... इसके अलावा, 'मुझे एक उपयोग के मामले के साथ आने में मुश्किल होती है, जहां मुझे एक GUI स्वचालित की आवश्यकता होती है। aay हमेशा मुझे स्टार्टअप में 5 टैब खोलने की आवश्यकता होती है। उस मामले में, यह उपयोगी होगा। लेकिन उस मामले में भी हम शॉर्टकट को वैसे भी इस्तेमाल कर सकते हैं;)
मुथु गणपति नाथन

2
उदाहरण जहां मुझे स्वचालित टैब-उद्घाटन की आवश्यकता है; मैं एक रोबोट पर स्टार्टअप स्क्रिप्ट को स्वचालित कर रहा हूं, और मैं कमांड चलाने के लिए टैब खोलना चाहता हूं ताकि जब प्रक्रिया क्रैश हो जाए (जैसा कि वे सभी अंततः करते हैं) मैं अपने लैपटॉप से ​​ssh कर सकता हूं और कंसोल पर लॉग आउटपुट पर एक नजर डाल सकता हूं लॉग फ़ाइल निर्देशिकाओं के माध्यम से खुदाई के बिना।
विसील

-2

एक ही टर्मिनल विंडो में खुले कई टैब के लिए आप निम्न समाधान के साथ जा सकते हैं।

उदाहरण लिपि:

pwd='/Users/pallavi/Documents/containers/platform241/etisalatwallet/api-server-tomcat-7/bin'
pwdlog='/Users/pallavi/Documents/containers/platform241/etisalatwallet/api-server-tomcat-7/logs'
pwd1='/Users/pallavi/Documents/containers/platform241/etisalatwallet/core-server-jboss-7.2/bin'
logpwd1='/Users/pallavi/Documents/containers/platform241/etisalatwallet/core-server-jboss-7.2/standalone/log'

osascript -e "tell application \"Terminal\"" \

-e "tell application \"System Events\" to keystroke \"t\" using {command down}" \
-e "do script \"cd $pwd\" in front window" \
-e "do script \"./startup.sh\" in front window" \
-e "tell application \"System Events\" to keystroke \"t\" using {command down}" \
-e "do script \"cd $pwdlog\" in front window" \
-e "do script \"tail -f catalina.out \" in front window" \
-e "tell application \"System Events\" to keystroke \"t\" using {command down}" \
-e "do script \"cd $pwd1\" in front window" \
-e "do script \"./standalone.sh\" in front window" \
-e "tell application \"System Events\" to keystroke \"t\" using {command down}" \
-e "do script \"cd $logpwd1\" in front window" \
-e "do script \"tail -f core.log \" in front window" \
-e "end tell"
> /dev/null 

1
इस तरह से लगता है कि बहुत स्पष्ट रूप से OSX केंद्रित उत्तर है जब प्रश्न स्पष्ट रूप से (सूक्ति) टर्मिनल के बारे में है। osascriptOSX (Apple) है
nhed

@ आनंद: धन्यवाद - कि मेरे जवाब क्या पृथ्वी पर है ?? इस उत्तर की प्रतिक्रिया। पल्लवी: भले ही सवाल मैक के बारे में था, अपने घर के रास्ते को हार्डकोड करना आपके जवाब को बहुत उपयोगी नहीं बनाता है। मेरा सुझाव है कि यदि आप $HOMEभिन्न हैं तो आप पर्यावरण चर या OSX का उपयोग करें ।
माइकल शेपर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.