Tergantung bagaimana hal-hal diatur, tetapi secara default, sesuatu seperti ini seharusnya bekerja.
settitle() {
printf "\033k$1\033\\"
}
Lalu lari:
settitle NEWTITLE
.
Lihat dokumen judul layar dan faq layar GNU untuk detail lebih lanjut.
Diberikan Ctrl+ A Ahanya mengubahnya sampai perintah berikutnya, itu mungkin diatur oleh $PS1
(semua shell), atau $PROMPT_COMMAND
/ DEBUG trap
(hanya bash) atau precmd
/ preexec
(hanya zsh).
Anda harus mencari tempat yang \e
atau \033
muncul dengan k
atau \\
setelah, pada dasarnya seperti saya settitle
contoh di atas.
MEMPERBARUI
Anda bilang punya kebiasaan preexec
.
Mengapa tidak mengubahnya ke ini:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek${TITLE:-$CMD}\e\\"
fi
Kemudian Anda dapat mengatur judul khusus dengan menjalankan:
TITLE="my title"
dan hapus judul dengan menjalankan
TITLE=
Jangan lupa untuk berubah precmd
dan $PS1
juga jika perlu.
KE SAMPING
Anda bahkan bisa memperpanjang ini ke semua terminal (misalnya xterm
, gnome-terminal
, dll) dengan tidak keras coding \ek
dan \e\\
.
Beginilah cara saya melakukannya:
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}"
}
Kemudian Anda dapat mengubah preexec
ke:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
settitle "${TITLE:-$CMD}"
fi
Ctrl-A A
. Dan tentang prompt, maksud Anda saya harus memodifikasi$PS1
setiap kali saya ingin judul tidak berubah?