Cela dépend de la façon dont les choses sont configurées, mais par défaut, quelque chose comme ça devrait fonctionner.
settitle() {
printf "\033k$1\033\\"
}
Exécutez ensuite:
settitle NEWTITLE.
Voir la documentation sur le titre de l'écran et la FAQ sur l'écran GNU pour plus de détails.
Étant donné que Ctrl+ A Ane le modifie que jusqu'à la prochaine commande, il est probablement défini par $PS1(tous les shells), ou $PROMPT_COMMAND/ DEBUG trap(bash uniquement) ou precmd/ preexec(zsh uniquement).
Vous devriez chercher un endroit qui \eou \033apparaît avec kou \\après, au fond comme mon settitleexemple ci - dessus.
MISE À JOUR
Vous avez dit que vous aviez une coutume preexec.
Pourquoi ne pas le changer en ceci:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek${TITLE:-$CMD}\e\\"
fi
Ensuite, vous pouvez définir un titre personnalisé en exécutant:
TITLE="my title"
et annulez le titre en exécutant
TITLE=
N'oubliez pas de changer precmdet $PS1aussi si nécessaire.
DE CÔTÉ
Vous pouvez même l' étendre à tous les terminaux (par exemple xterm, gnome-terminal, etc.) par pas coder en dur le \eket \e\\.
Voici comment je le fais:
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}"
}
Ensuite, vous pouvez changer votre preexecpour:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
settitle "${TITLE:-$CMD}"
fi
Ctrl-A A. Et à propos de l'invite, vous voulez dire que je dois modifier$PS1chaque fois que je veux que le titre ne change pas?