terminal, bash和screen的配合
首先, 术业有专攻, 命令行和图形界面不是水火不容, 我都用的很多, 少了哪个也不行.
其中关于命令行, 我基本上不进console, 毕竟分辨率, 字体, 中文什么的都比较恼火. 自己电脑就是xterm+screen+bash, 办公室就是用putty+ssh+screen+bash. 想要有一个舒服的使用环境, 就得把这几个家伙配合好.
想要实现一个什么效果呢? 最好运行screen的时候, 每个window的title为路径或者当前运行的程序, xterm的title为screen: 加上当前window的title; 而单独运行xterm的时候, xterm的title为user@host: path. 比较晕是吧? 看我的效果图:
下面是一些关键的配置, 其它部分在此: https://github.com/adam8157/dotfiles
bash的.bashrc:
#screen and xterm's dynamic title
case $TERM in
xterm*)
# Set xterm's title
TITLEBAR='\[\e]0;\u@\h:\w\a\]'
PS1="${TITLEBAR}${PS1}"
;;
screen*)
# Use path as title
PATHTITLE='\[\ek\W\e\\\]'
# Use program name as title
PROGRAMTITLE='\[\ek\e\\\]'
PS1="${PROGRAMTITLE}${PATHTITLE}${PS1}"
;;
*)
;;
esac
screen的.screenrc:
# Caption line
caption always "%{= R}[ %{=b b}%-w%{=rb db}%>%n %t%{-}%+w%{-b}%< %=%{R}][%{M}%D %M %d %{G}%c%{R}]"
# Dynamic title
shelltitle '$ |bash'
# Set xterm's title
hardstatus string "screen: %t"
bash中主要是设置了几个escape sequences, 具体都是screen和xterm自己定义的, 把它们塞到PS1中, 看不到的同时还能给screen和xterm发信号, 让它们改对应的title.
screen中状态栏选用Caption而不用Hardstatus实现, 是因为要把xterm的title伪装成Hardstatus, 这个可能算个历史遗留问题, putty也是这么处理的. shelltitle就是实现将所运行程序的名称作为screen的title的功能, 默认bash,, 有命令的话就是”$ “后面的第一个字符段.