Depende de cómo estén configuradas las cosas, pero por defecto, algo como esto debería funcionar.
settitle() {
printf "\033k$1\033\\"
}
Entonces corre:
settitle NEWTITLE
.
Consulte los documentos del título de la pantalla y las preguntas frecuentes de la pantalla de GNU para obtener más detalles.
Dado Ctrl+ A Asolo lo está cambiando hasta el siguiente comando, probablemente esté configurado por $PS1
(todos los shells) o $PROMPT_COMMAND
/ DEBUG trap
(solo bash) o precmd
/ preexec
(solo zsh).
Debe buscar cualquier lugar que \e
o \033
aparece con k
o \\
después de ella, básicamente como mi settitle
ejemplo anterior.
ACTUALIZAR
Dijiste que tenías una costumbre preexec
.
¿Por qué no cambiarlo a esto?
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek${TITLE:-$CMD}\e\\"
fi
Luego puede establecer un título personalizado ejecutando:
TITLE="my title"
y desarmar el título ejecutando
TITLE=
No olvide cambiar precmd
y $PS1
también si es necesario.
APARTE
Incluso podría extender esto a todos los terminales (p xterm
. Ej . gnome-terminal
, Etc.) al no codificar el \ek
y \e\\
.
Así es como lo hago:
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}"
}
Entonces puedes cambiar tu preexec
a:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
settitle "${TITLE:-$CMD}"
fi
Ctrl-A A
. Y sobre el mensaje, ¿quiere decir que tengo que modificar$PS1
cada vez que quiero que el título no cambie?