Dipende da come sono impostate le cose, ma per impostazione predefinita, qualcosa del genere dovrebbe funzionare.
settitle() {
printf "\033k$1\033\\"
}
Quindi eseguire:
settitle NEWTITLE
.
Vedi i documenti dei titoli delle schermate e le faq delle schermate GNU per maggiori dettagli.
Dato Ctrl+ lo A Asta cambiando solo fino al prossimo comando, probabilmente è impostato da $PS1
(tutte le shell), o $PROMPT_COMMAND
/ DEBUG trap
(solo bash) o precmd
/ preexec
(solo zsh).
Dovresti cercare qualsiasi posto che \e
o \033
appare con k
o \\
dopo di esso, sostanzialmente come il mio settitle
esempio sopra.
AGGIORNARE
Hai detto di avere un'usanza preexec
.
Perché non cambiarlo in questo:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek${TITLE:-$CMD}\e\\"
fi
Quindi puoi impostare un titolo personalizzato eseguendo:
TITLE="my title"
e disinserire il titolo eseguendo
TITLE=
Non dimenticare di cambiare precmd
e $PS1
anche se necessario.
A PARTE
Potresti persino estenderlo a tutti i terminali (es xterm
. gnome-terminal
, Ecc.) Non codificando a fondo il \ek
e \e\\
.
Ecco come lo faccio:
terminit()
{
# determine the window title escape sequences
case "$TERM" in
aixterm|dtterm|putty|rxvt|xterm*)
titlestart='\033]0;'
titlefinish='\007'
;;
cygwin)
titlestart='\033];'
titlefinish='\007'
;;
konsole)
titlestart='\033]30;'
titlefinish='\007'
;;
screen*)
# status line
#titlestart='\033_'
#titlefinish='\033\'
# window title
titlestart='\033k'
titlefinish='\033\'
;;
*)
if type tput >/dev/null 2>&1
then
if tput longname >/dev/null 2>&1
then
titlestart="$(tput tsl)"
titlefinish="$(tput fsl)"
fi
else
titlestart=''
titlefinish=''
fi
;;
esac
}
# or put it inside a case $- in *i* guard
if test -t 0; then
terminit
fi
# set the xterm/screen/etc. title
settitle()
{
test -z "${titlestart}" && return 0
printf "${titlestart}$*${titlefinish}"
}
Quindi puoi modificare il tuo preexec
in:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
settitle "${TITLE:-$CMD}"
fi
Ctrl-A A
. E riguardo al prompt, vuoi dire che devo modificare$PS1
ogni volta che voglio che il titolo non cambi?