如何设置terminal标题以显示正在运行的当前运行命令,并在完成后显示在括号内?

从另一篇文章我已经知道要在我的.bashrc中设置当前正在执行的命令作为terminal标题:

 trap 'echo -ne "\033]2;$(history 1 | sed "s/^[ ]*[0-9]*[ ]*//g")\007"' DEBUG 

我想调整这个方式,如果没有命令正在运行,标题将是最后一个命令的修改版本,例如方括号中的整个命令(如下所示: [find . -maxdepth 1 -type f] )。

如何做到这一点?

您可以(ab)通过放置相同的转义序列来使用PS1,这样每次打印提示时,标题都会被更新。

 export PS1="\033]2;[\$(history 1 | sed 's/^[ ]*[0-9]*[ ]*//g')]\007$PS1" 

最后的PS1只是让你的旧的提示符为实际的命令行。

我实际上不使用这个,但它应该工作。

方便快捷的方式,在飞行中做到这一点:

  1. 通过从终端窗口运行这个命令,将程序xtitle安装到你的PC上: sudo apt-get install xtitle

    • 出现提示时输入您的超级用户密码。
  2. 键入xtitle YOUR_DESIRED_TITLE,然后按ENTER / RETURN ,例如xtitle Tomcat将标题设置为Tomcat 。 每次你想要一个新的标题时重复这个命令。

    • 注意:这只在Ubuntu 14.04上测试过。