EDIT: En Yosemite (OS X 10.10), use esto en su lugar:
function ssh ()
{
servername=$(echo $@ | sed -E 's|([- a-zA-Z0-9:/]+)( *[^@ ]*@)([^@ ]*)|\3|')
echo -ne "\033]0;${servername}\007";
/usr/bin/ssh $@
}
Tenga en cuenta que la función espera que se especifique el nombre de usuario y el nombre del servidor como usuario@servidor
(también puede usar la dirección IP del servidor: usuario@a.b.c.d
, el nombre de la pestaña se establecerá en a.b.c.d
). Otras combinaciones como -l usuario servidor
no funcionarán correctamente.
Puede deshacer la función con:
unset -f ssh
Puede crear una función llamada ssh
que establece el nombre de la pestaña del terminal y luego invoca /usr/sbin/ssh
:
function ssh ()
{
servername=$(echo $@ | sed 's|\([- a-zA-Z0-9:/]\+\) *\([^-]\+@\)*\([-a-zA-Z0-9.]\+\)|\3|' | awk '{print $1}');
echo -ne "\033]0;${servername}\007";
/usr/bin/ssh $@
}
-
servername=$(echo $@ ...
La primera línea extrae el nombre del servidor de los argumentos pasados a ssh
. Lo probé contra varias invocaciones posibles de ssh
con y sin argumentos, pero no puedo garantizar que sea infalible.
-
echo -ne "\033]0;${servername}\007";
La segunda línea es donde ocurre la magia. \033]0;\007
es una secuencia de ESCAPE que establece el nombre de la pestaña del terminal. Consulte este artículo de Wikipedia para obtener más información - este código de escape en particular está listado en la sección de códigos no-CSI.
-
/usr/bin/ssh $@
Iniciar /usr/bin/ssh
con los argumentos proporcionados.
Agregue la función a su archivo ~/.bashrc
(si no usa bash
, modifíquelo para que coincida con la sintaxis de su shell y agréguelo al archivo de inicio de su shell) para que siempre sea accesible.
Tenga en cuenta que también establecerá el nombre de la pestaña del terminal al ejecutar un comando remoto:
ssh usuario@servidor comando
por ejemplo:
ssh jaume@miservidor ls -l /