「XTerm」- 在窗口的标题栏中,显示当前正在执行的命令

  CREATED BY JENKINSBOT

问题描述

当终端开的特别多的时候,都分不清哪个是哪个了;或者输出大量信息后,分不清当前窗口正在执行什么;总之区分特别麻烦的时候,这时可以在窗口的标题栏(Title Bar)里显示当前shell的路径正在执行的命令进行区分。

而且Alt + Tab切换窗口时,列表中显示的也是Window的Title,正好可以用于选择要切换的窗口。

注意事项

这里只演示 XTerm + Bash 环境中该如果做,其他也是同理的。

SHELL 脚本

#!/bin/bash

case "$TERM" in
xterm*|rxvt*)

	# BASH中的变量,每次显示提示符之前,将该变量的值作为命令来执行。
	# 这里用作:恢复原有的Title内容。
	PROMPT_COMMAND='echo -ne "\033]0;[${USER}@${HOSTNAME} $(basename ${PWD})]# \007"'

	# 修改Title的函数
	show_executing_cmd_in_title_bar()
	{
		case "$BASH_COMMAND" in
			*\033]0*)
				# 如果命令中包含“\033]0”,就假设执行的是PROMPT_COMMAND中的内容。
				# 此时,不做任何操作。
				;;
			*)
				echo -ne "\033]0;[${USER}@${HOSTNAME}: $(basename ${PWD})]# ${BASH_COMMAND}\007"
				;;
		esac
	}

	trap show_executing_cmd_in_title_bar DEBUG

	;;
*)
	;;
esac

参考文献

How to change the title of an xterm: Dynamic titles