Phụ thuộc vào cách mọi thứ được thiết lập, nhưng theo mặc định, một cái gì đó như thế này sẽ hoạt động.
settitle() {
printf "\033k$1\033\\"
}
Sau đó chạy:
settitle NEWTITLE
.
Xem tài liệu tiêu đề màn hình và faq màn hình GNU để biết thêm chi tiết.
Đã cho Ctrl+ A Achỉ thay đổi nó cho đến lệnh tiếp theo, có thể nó được đặt bởi $PS1
(tất cả các shell) hoặc $PROMPT_COMMAND
/ DEBUG trap
(chỉ bash) hoặc precmd
/ preexec
(chỉ zsh).
Bạn nên tìm kiếm bất kỳ nơi nào \e
hoặc \033
xuất hiện cùng k
hoặc \\
sau nó, về cơ bản giống như settitle
ví dụ của tôi ở trên.
CẬP NHẬT
Bạn nói rằng bạn đã có một tùy chỉnh preexec
.
Tại sao không thay đổi nó thành này:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek${TITLE:-$CMD}\e\\"
fi
Sau đó, bạn có thể đặt tiêu đề tùy chỉnh bằng cách chạy:
TITLE="my title"
và bỏ đặt tiêu đề bằng cách chạy
TITLE=
Đừng quên thay đổi precmd
và $PS1
nếu cần thiết.
QUA MỘT BÊN
Bạn thậm chí có thể mở rộng này cho tất cả các thiết bị đầu cuối (ví dụ xterm
, gnome-terminal
vv) bằng cách không cứng mã hóa \ek
và \e\\
.
Đây là cách tôi làm điều đó:
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}"
}
Sau đó, bạn có thể thay đổi preexec
thành:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
settitle "${TITLE:-$CMD}"
fi
Ctrl-A A
. Và về lời nhắc, ý bạn là tôi phải sửa đổi$PS1
bất cứ khi nào tôi muốn tiêu đề không thay đổi?