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 \eo \033appare con ko \\dopo di esso, sostanzialmente come il mio settitleesempio 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 precmde $PS1anche se necessario.
A PARTE
Potresti persino estenderlo a tutti i terminali (es xterm. gnome-terminal, Ecc.) Non codificando a fondo il \eke \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 preexecin:
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$PS1ogni volta che voglio che il titolo non cambi?