有这么一个应用场景:每天上班打开多个终端,进入不同的文件目录,然后才开始编程。本文介绍如何保存终端会话,并附上shell脚本。
1. 简易方法(不带标题)
用如下命令保存和恢复多标签终端,值得注意的是,这里保存所有窗口的终端。
gnome-terminal --save-config=filename # 保存terminal configure
gnome-terminal --load-config=filename # 加载terminal configure
但这有个问题,没有保存标题。要实现这一点,可以在filename手动添加title字段,举例如下:
[Terminal0xb73030]
Title=theone
ProfileID=Default
Title=theone
WorkingDirectory=/home/qiankun/NetworkSimulator/one_1.5.1-RC2-modified
Zoom=1
Width=143
Height=39
2. 带标题终端
2.1 保存
askubuntu有人给出了方法,原回答在这里,大概的思路是用xdotool
工具模拟组合键ctrl+page_down
(跳转到terminal的下一个标签),并保存各个标签的标题。运行命令sudo apt-get install xdotool
安装xdotool
。稍加修改后的脚本如下(saveTermConfig.sh
):
#!/usr/bin/env bash
filename=/home/qiankun/termConfig.txt
gnome-terminal --save-config=$filename
LINES=($(grep -n '\[Terminal' $filename | cut -d: -f1))
for ((i=0; i<$(grep '\[Terminal' $filename | wc -l); i++))
do
TITLE=$(xprop -id $WINDOWID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//';xdotool key ctrl+Page_Down;)
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" $filename
done
2.2 恢复
再写个简单的shell脚本恢复终端配置文件,源代码如下(loadTermConfig.sh
):
#!/usr/bin/env bash
filename=/home/qiankun/termConfig.txt
gnome-terminal --load-config=$filename
很奇怪的是,Title
选项在Ubuntu 14.04 LTS无效,但在12.04 LTS却是正常的,多半是一个BUG。
已将本文涉及到的源码分享在GitHub了,在这里。
3. 解决Ubuntu Software Center自动关闭
我在安装xdotool
提示错误“Encountered a section with no Package: header, Problem with MergeList
” (打开Ubuntu Software Center,自动关闭),解决方法参考这里,如下:
sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update
参考资料:
[1]askubuntu: Some fast way to save and restore tabs of Terminal?
微信赞赏
支付宝赞赏