dog*_*ane 25 bash prompt xterm window-title
我的 Bash Prompt 当前正在使用以下顺序设置 xterm 标题栏:
PS1='\033]0;\u@\h>\w\007'
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以在标题栏中显示当前命令。例如,如果我使用 拖尾文件tail -f foo.log
,我希望我的标题栏显示tail -f foo.log
.
sim*_*mon 19
基本上,您需要:
trap 'printf "\033]0;%s\007" "${BASH_COMMAND//[^[:print:]]/}"' DEBUG
Run Code Online (Sandbox Code Playgroud)
在你的.bashrc
或类似的结尾。我花了一段时间才解决这个问题——请在此处查看我的答案以获取更多信息:)
Mic*_*zek 13
(灵感来自这个 SU 答案)
您可以结合使用几个 bash 技巧:
$BASH_COMMAND
保存当前正在执行的命令因此,捕获 DEBUG 并让处理程序将标题设置为$BASH_COMMAND
:
trap 'printf "\033]0;%s\007" "${BASH_COMMAND//[^[:print:]]/}" >&2' DEBUG
Run Code Online (Sandbox Code Playgroud)
这将保持标题更改,直到其他内容更改它,但只要您$PS1
保持不变,它就不会成为问题 - 您启动命令,DEBUG 处理程序更改标题栏,当命令完成时 bash 绘制一个新的提示并再次重置您的标题栏。
在这里找到的一个有用的提示(也是 SU 答案的来源)包括:
set -o functrace
Run Code Online (Sandbox Code Playgroud)
这将使 bash 将 DEBUG 陷阱传播到您启动的任何子shell;否则标题栏不会在其中更改