Risposte:
MODIFICARE : Su Yosemite (OS X 10.10), usa invece:
function ssh ()
{
servername=$(echo $@ | sed -E 's|([- a-zA-Z0-9:/]+)( *[^@ ]*@)([^@ ]*)|\3|')
echo -ne "\033]0;${servername}\007";
/usr/bin/ssh $@
}
Si noti che la funzione prevede che nome utente e nome server siano specificati come user@server
(puoi usare anche l'indirizzo IP del server: user@a.b.c.d
, il nome della scheda sarà impostato su a.b.c.d
). Altre combinazioni come -l user server
non funzionerà correttamente.
Puoi disinserire la funzione con:
unset -f ssh
È possibile creare una funzione denominata ssh
che imposta il nome della scheda terminale e quindi 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 prima riga estrae il nome del server dagli argomenti passati a ssh
. L'ho provato contro diversi possibili ssh
invocazioni con e senza argomenti, ma non posso promettere che è a prova di proiettile.
echo -ne "\033]0;${servername}\007";
La seconda riga è dove avviene la magia. \033]0;<name>\007
è una sequenza di ESCAPE che imposta il nome della scheda del terminale. Vedere questo articolo di Wikipedia per maggiori informazioni - questo particolare codice di escape è elencato nel sezione codici non CSI .
/usr/bin/ssh $@
Inizio /usr/bin/ssh
con argomenti forniti.
Aggiungi la funzione al tuo ~/.bashrc
file (se non lo usi bash
modificalo per far corrispondere la sintassi della tua shell e aggiungilo al file di avvio della tua shell) in modo che sia sempre accessibile.
Si noti che verrà anche impostato il nome della scheda terminale durante l'esecuzione di un comando remoto:
ssh user@server command
per esempio:
ssh jaume@myserver ls -l /
ssh -p 3422 user@host
ora stampa host
È possibile utilizzare l'argomento LocalCommand nel proprio file ~ / .ssh / config per eseguire un file bash o Applescript che imposta il nome della scheda.
Script Bash: ~ / .ssh / settabname.sh
#!/bin/bash
osascript -e 'delay 2' -e "tell application \"Terminal\" to tell window 1 to set custom title to \"$1\""
Il tuo file ~ / .ssh / config:
Host *
PermitLocalCommand yes
Host yourhostname
LocalCommand ~/.ssh/settabname.sh yourhostname &
...
ssh -p 3422 user@host
stampe-p
nel titolo della scheda