linux - consola - Abra una nueva pestaña en gnome-terminal usando la línea de comando
ubuntu commands pdf (9)
Cuando yo escribo
gnome-terminal --tab
en la terminal, espero que abra una nueva pestaña en la misma ventana de terminal. Pero abre una nueva ventana en su lugar.
Descubrí que su intención es abrir una nueva pestaña en una nueva ventana, es decir, si escribo
gnome-terminal --tab --tab
abrirá una nueva ventana con dos pestañas.
Entonces, la pregunta es, ¿cómo puedo abrir una nueva pestaña en la ventana actual usando un comando en gnome-terminal
?
Estoy usando Ubuntu 9.04 x64.
Considera usar Roxterm en su lugar.
roxterm --tab
abre una pestaña en la ventana actual.
Encontré la manera más simple:
gnome-terminal --tab -e ''command 1'' --tab -e ''command 2''
Uso tmux
lugar de usar terminal directamente. Entonces, lo que quiero es realmente un simple y simple comando / shell para construir el env
desarrollo con varias ventanas de tmux
. El código de shell es el siguiente:
#!/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
No tengo instalado un gnome-terminal pero deberías poder hacer esto usando una llamada DBUS en la línea de comandos usando dbus-send .
Para abrir múltiples pestañas en la misma ventana de terminal, puede ir con la siguiente solución.
Script de ejemplo:
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
Para cualquiera que busque una solución que no use la línea de comando: ctrl + shift + t
Para reunir una serie de diferentes puntos anteriores, aquí hay un script que ejecutará todos los argumentos pasados al script 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;
Luego chmod +x new_tab.sh
ejecutable: chmod +x new_tab.sh
Ahora puede usarlo para ejecutar lo que desee en una nueva pestaña: ./new_tab.sh "watch ls -l"
También puede hacer que cada pestaña ejecute un comando establecido.
gnome-terminal --tab -e "tail -f somefile" --tab -e "some_other_command"
Una versión un poco más elaborada (para usar desde otra ventana):
#!/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 #
#!/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
Esto determinará automáticamente el terminal correspondiente y abrirá la pestaña en consecuencia.