我希望我的终端窗口标题显示最后运行的命令。这对于在 Dev/Test/Prod 等中查找运行 Mongrel 的终端(用于测试 rails 应用程序)很方便。
我尝试了这个代码:
if [ "$SHELL" = '/bin/bash' ]
then
case $TERM in
rxvt|*term)
set -o functrace
trap 'echo -ne "\e]0;$BASH_COMMAND\007"' DEBUG
# export PS1="\e]0;$TERM\007$PS1"
;;
esac
fi
至少,我认为这是我尝试过的代码。它确实有效,但它导致了一些奇怪的行为,比如当我将目录更改为符号链接时,窗口标题会卡在循环中,直到我按下 Ctrl C。
有什么可靠的方法可以将窗口标题设置为最后运行的命令?
答案1
您还可以使用该xtitle
工具:
sudo apt-get install xtitle
lastcmd() { xtitle $(history 1 | cut -c8-); }
PROMPT_COMMAND=lastcmd
答案2
仅使用标准命令
lastcmd() { LASTCMD=$(history 1 | cut -c8-); echo -ne "\e]2;$LASTCMD\a\e]1;$LASTCMD\a"; }
PROMPT_COMMAND=lastcmd
测试一下
echo 'This echo command should be displayed on my window title'
时间戳
要显示最后一个命令的时间,请设置环境变量HISTTIMEFORMAT
:
HISTTIMEFORMAT=%c
请man date
参阅完整的日期/时间格式列表。
要禁用窗口标题上的时间戳前缀:
unset HISTTIMEFORMAT
持久性
把这两行放在你的~/.bashrc