Tôi đã làm việc xung quanh giải pháp của riêng tôi từ các bài viết khác nhau xung quanh. Điều này tạo ra một tiêu đề chứa lệnh người dùng, tên máy chủ, pwd, tty và hiện được thực thi (đối với bash).
Điều này trông như thế này (không có lệnh nào được thực thi):
.:[user@hostname:/home/user][pts/10]:.
Và như thế này (thực hiện một lệnh):
.:[user@hostname:/home/user][pts/10] {tail -F /var/log/syslog}:.
Ở đâu đó trong .bashrc, tôi đã mở rộng PS1:
# set the terminals title. This is the "post-command" part,
# need to use a trap for pre-command (to add the command line to the title)
PS1+="\[\033]2;.:[\u@\h:\$PWD] [$(tty | cut -b 6-)]:.\007\]"
Thêm lệnh hiện tại, sử dụng lịch sử 1 và bẫy :
# set a fancy title (this is pre-command, in PS1 is after-command (to reset command)
trap 'echo -ne "\033]2;.:[${USER}@${HOSTNAME}:${PWD}] [$(tty | cut -b 6-)] {$(history 1 | sed "s/^[ ]*[0-9]*[ ]*//g")}:.\007"' DEBUG
Hãy chấp nhận nhu cầu của bạn.
.bashrc
sau mỗi lệnh trong shell của tôi, tôi nhận được kết quả đầu ra này0;%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}
. Tôi giả sử rằng tôi có thể triệt tiêu đầu ra này bằng cách gán lệnh bẫy choPS1
? Tuy nhiên,PS1=trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG
không hoạt động. Nó dẫn đến lỗibash: echo -ne "\033]0;$BASH_COMMAND\007": command not found
.