使用命令行在gnome-terminal中打开一个新选项卡

当我写

gnome-terminal --tab

在terminal,我希望它在同一个terminal窗口中打开一个新的标签。 但它会打开一个新窗口。

我发现它的目的是在新窗口中打开一个新的标签,也就是说,如果我写的话

gnome-terminal --tab --tab

它将打开一个带有两个选项卡的新窗口。

所以,问题是,如何使用gnome-terminal的命令在当前窗口中打开新选项卡?

我使用的是Ubuntu 9.04 x64。

 #!/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 

这将自动确定相应的terminal并相应地打开标签。

您也可以让每个标签运行一个设置命令。

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

一个更复杂的版本(从另一个窗口使用):

 #!/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 # 

我find了最简单的方法:

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

我使用tmux而不是直接使用terminal。 所以我想要的只是一个简单的命令/ shell文件来构build几个tmux窗口的开发环境。 shell代码如下:

 #!/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 

我没有安装gnome-terminal,但是您应该可以通过在命令行上使用dbus-send使用DBUS呼叫来完成此操作。

考虑使用Roxterm来代替。

 roxterm --tab 

在当前窗口中打开一个选项卡。

对于任何寻求不使用命令行的解决scheme的人:ctrl + shift + t

对于在同一个terminal窗口中打开多个选项卡,可以使用以下解决scheme。

示例脚本:

 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