Zależy od tego, jak rzeczy są skonfigurowane, ale domyślnie coś takiego powinno działać.
settitle() {
printf "\033k$1\033\\"
}
Następnie uruchomić:
settitle NEWTITLE
.
Zobacz dokumentację tytułów ekranów i często zadawane pytania dotyczące ekranu GNU, aby uzyskać więcej informacji.
Biorąc pod uwagę, Ctrl+ A Azmienia się tylko do następnego polecenia, prawdopodobnie jest ustawiany przez $PS1
(wszystkie powłoki) lub $PROMPT_COMMAND
/ DEBUG trap
(tylko bash) lub precmd
/ preexec
(tylko zsh).
Należy spojrzeć na każdym miejscu, \e
lub \033
pojawia się k
lub \\
po nim, w zasadzie jak moim settitle
przykładzie powyżej.
AKTUALIZACJA
Powiedziałeś, że masz zwyczaj preexec
.
Dlaczego nie zmienić tego na to:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek${TITLE:-$CMD}\e\\"
fi
Następnie możesz ustawić niestandardowy tytuł, uruchamiając:
TITLE="my title"
i rozbroić tytuł, uruchamiając
TITLE=
Nie zapomnij zmienić precmd
i $PS1
również w razie potrzeby.
NA BOK
Możesz nawet rozszerzyć to do wszystkich terminali (np xterm
, gnome-terminal
itp) przez nie ciężko kodowania \ek
i \e\\
.
Tak to robię:
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}"
}
Następnie możesz zmienić preexec
na:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
settitle "${TITLE:-$CMD}"
fi
Ctrl-A A
. A jeśli chodzi o monit, masz na myśli, że muszę modyfikować$PS1
za każdym razem, gdy chcę, aby tytuł się nie zmieniał?