screen 是个好东西,谁用谁知道,尤其是在网络连接不稳定的情况下。
但当你管理多台机器的时候,说不定会忘掉退出 screen ,至少记性一向不好的我是如此。所以本人写了个简单的脚本,通过 PS1 变量来提示我当前机器 screen 打开的情况。
脚本内容写到 .bashrc 即可,内容如下:
- my_bash_PID="$$"
-
my_bash_PPID="$(ps -weF | awk '$2=="'$my_bash_PID'"{print $3}')"
-
SCREEN_PID="$(ps -weF | grep -w SCREEN | awk '$2=="'$my_bash_PPID'"{print $2}')"
-
if pgrep screen &> /dev/null
-
then
-
if [ "$my_bash_PPID" = "$SCREEN_PID" ]
-
then
-
PS1='\u@\[\e[30;43m\]\h\[\e[0m\]:\w>'
-
else
-
PS1='\u@\[\e[31;43m\]\h\[\e[0m\]:\w>'
-
fi
-
else
-
PS1='\u@\h:\w>'
-
fi
首先,登陆到当前机器上面没有运行着 SCREEN 时,PS1 是原样的:
如果后台有运行 SCREEN 跑着任务,那么 PS1 的 host 部分会是黄底红字:
如果登录到一个 SCREEN 中,那么 PS1 的 host 部分会是黄底黑字:
现在知道,原来使用 $TERM 变量就可以很轻松地得到当前使用的 TERM 类型了……
阅读(1212) | 评论(0) | 转发(0) |