Hängt davon ab, wie die Dinge eingerichtet sind, aber standardmäßig sollte so etwas funktionieren.
settitle() {
printf "\033k$1\033\\"
}
Dann renne:
settitle NEWTITLE
.
Weitere Informationen finden Sie in den Bildschirmtitel-Dokumenten und in den GNU-Bildschirm-FAQ .
Wenn Ctrl+ A Aes nur bis zum nächsten Befehl ändert, wird es wahrscheinlich durch $PS1
(alle Shells) oder $PROMPT_COMMAND
/ DEBUG trap
(nur Bash) oder precmd
/ preexec
(nur zsh) gesetzt.
Sie sollten für jeden Ort suchen , dass \e
oder \033
erscheint mit k
oder \\
nach ihm, im Grunde wie mein settitle
Beispiel oben.
AKTUALISIEREN
Sie sagten, Sie hätten einen Brauch preexec
.
Warum ändern Sie es nicht so:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek${TITLE:-$CMD}\e\\"
fi
Anschließend können Sie einen benutzerdefinierten Titel festlegen, indem Sie Folgendes ausführen:
TITLE="my title"
und deaktivieren Sie den Titel durch Ausführen
TITLE=
Vergessen Sie nicht, sich zu ändern precmd
und $PS1
bei Bedarf auch.
BEISEITE
Man könnte sogar diese an alle Endgeräte erweitern (zB xterm
, gnome-terminal
usw.) durch nicht schwer die Codierung \ek
und \e\\
.
So mache ich es:
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}"
}
Dann können Sie Ihre ändern preexec
zu:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
settitle "${TITLE:-$CMD}"
fi
Ctrl-A A
. Und was die Eingabeaufforderung betrifft, meinst du, ich muss ändern,$PS1
wann immer ich möchte, dass sich der Titel nicht ändert?