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 \e
ou \033
apparaît avec k
ou \\
après, au fond comme mon settitle
exemple 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 precmd
et $PS1
aussi 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 \ek
et \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 preexec
pour:
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$PS1
chaque fois que je veux que le titre ne change pas?