Tiêu đề cửa sổ đầu cuối có thể được thay đổi bằng cách thay đổi giá trị của biến $PS1
- chuỗi dấu nhắc chính. [1] [2] . Chúng ta có thể kết hợp giải pháp này với ý tưởng sử dụng lệnh từ câu trả lời của Dessert . history
Cách tiếp cận 1: Cập nhật giá trị $PS1
tự động. (Cập nhật)
Thêm các dòng sau vào dưới cùng của tệp ~/.bashrc
:
# Change the terminal window title, based on the last executed command
rtitle() {
# If the variable $PS1_bak is unset,
# then store the original value of $PS1 in $PS1_bak and chang $PS1
# else restore the value of $PS1 and unset @PS1_bak
if [ -z "${PS1_bak}" ]; then
PS1_bak=$PS1
PS1+='\e]2;$(history 1 | sed "s/^[0-9 ]* \+//")\a'
else
PS1=$PS1_bak
unset PS1_bak
fi
};
export -f rtitle # Export the function to be accessible in sub shells
#rtitle # Uncomment this line to change the default behaviour
Sau đó source ~/.bashrc
hoặc chỉ cần mở một thiết bị đầu cuối mới và sử dụng chức năng theo cách này:
- Thực thi
rtitle
để bắt đầu thay đổi tiêu đề cửa sổ đầu cuối tự động, dựa trên lệnh được thực hiện cuối cùng.
- Thực hiện
rtitle
một lần nữa để trở lại hành vi mặc định.
Cách tiếp cận 2: Cập nhật giá trị của $PS1
thủ công. (Câu trả lời ban đầu)
Thêm các dòng sau vào dưới cùng của tệp ~/.bashrc
:
set-title() { # Set a title of the current terminal window
[[ -z ${@} ]] && TITLE="$(history 2 | head -1 | sed "s/^[0-9 ]* \+//")" || TITLE="$@" # If the title is not provided use the previous command
[[ -z ${PS_ORIGINAL} ]] && PS_ORIGINAL="${PS1}" || PS_ORIGINAL="${PS_ORIGINAL}" # Use the original value of PS1 for each future change
PS1="${PS_ORIGINAL}"'\e]2;'"$TITLE"'\a' # Change the prompt (the value of PS1)
}; export -f set-title
Sau đó source ~/.bashrc
hoặc chỉ cần mở một thiết bị đầu cuối mới và sử dụng chức năng theo cách này:
set-title <something>
sẽ thay đổi tiêu đề cửa sổ đầu cuối thành <something>
.
set-title
không có đối số sẽ thay đổi tiêu đề cửa sổ đầu cuối thành lệnh trước đó.
Tài liệu tham khảo và ví dụ: