保存和恢复终端标签的一些快速方法?

我有一个终端窗口,打开了十几个命名选项卡。

我想保存当前配置并使用名称和目录进行恢复。

有没有办法做到这一点?

要将配置保存到/tmp/cfg

 gnome-terminal --save-config=/tmp/cfg 

要加载它:

 gnome-terminal --load-config=/tmp/cfg 

UPDATE

在使用bash后,我创建了以下脚本,它将选项卡名称存储到文件/tmp/test中:

 #!/usr/bin/env bash gnome-terminal --save-config=/tmp/test LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1)) for ((i=0; i<$(grep '\[Terminal' /tmp/test | 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/" /tmp/test done 

要正确分配名称,必须从终端的第一个选项卡运行它。 加载与以前相同:

 gnome-terminal --load-config=/tmp/test 

说明:

我可以使用以下来获取标签名称:

 xprop -id $WINDOWID WM_NAME 

我可以使用以下内容跳转到下一个标签:

 xdotool key ctrl+Page_Down; 

我在获取之前保存的配置文件后获得了多个选项卡:

 $(grep '\[Terminal' /tmp/test | wc -l) 

所以我可以迭代循环中的制表符。 我必须为之前保存的文件中的每个选项卡配置部分添加“Title = titlename”条目。 要做到这一点,首先我要创建一个行号数组,我将添加行。

 LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1)) 

我在循环中添加“Title = titlename”行迭代标签:

 sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test 

另一种方法是使用Byobu 。 按F2打开其中的新端子。 使用F3和F4在端子之间切换左右。

随时关闭GUI窗口。 当你重新打开Byobu时,所有的终端都恢复了:)

恢复保存的设置后,我尝试了以下选项,并且还正确恢复了标题。

  1. 转到设置 – >配置文件,然后选择您正在使用的当前配置文件
  2. 单击编辑并转到“标题和命令”选项卡
  3. 将初始标题设为空白
  4. 在下面的下拉框中选择“保留初始标题”选项。

此选项可以避免覆盖您的初始标题集。

希望这有助于一个伟大的剧本。 每次重新启动都可以节省大量时间,我可以愉快地重新启动虚拟机。

谢谢!!

我又尝了一个选择,

我更改了Terminal的默认标题,使用~/.bashrc的Intital值,而不是更改~/.profile设置。

 # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="$PS1" ;; *) ;; esac 

如果您这样做,则无需更改终端配置文件。
执行gnome-terminal --load-config所有选项卡名称都会正确恢复。 您也可以根据需要进行更改并再次保存标签!

我找到了一种方法,我认为它更快。

  1. 像Yoga所说的那样创建一个标题和名称的个人资料。
  2. 类型:

     gnome-terminal --tab-with-profile=PROFILENAME1 --tab-with-profile=PROFILENAME2 ... --tab-with-profile=PROFILENAME999 

我用这个命令做了一个别名,它对我来说非常好。 我只输入workflow ,终端显示3个选项卡,以及我在配置文件定义中选择的标题,这些标题放在选项卡中。

在我放置的.bashrc文件中:

 alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &' 

Screen或Byobu是我在终端中管理复杂工作流程的首选方法,它们都允许保存配置。

对现有脚本进行了一点改进,它还检查了系统上安装的xdotool,并为更改路径添加了变量

 #!/bin/bash SAVEPATH=/tmp/termprofile if [ ! -f /usr/bin/xdotool ]; then echo "please install 'xdotool'" exit 1 fi gnome-terminal --save-config=$SAVEPATH LINES=($(grep -n '\[Terminal' $SAVEPATH | cut -d: -f1)) for ((i=0; i<$(grep '\[Terminal' $SAVEPATH | 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/" $SAVEPATH done 

扩展Nyakin上面的答案,此脚本将适用于多个窗口和选项卡配置,并正确保存包含它们的所有选项卡的选项卡标题。

目前在gnome-terminal 3.2上进行了测试,但可以配置任何具有类似save-configfunction的终端程序。

这需要’xprop’,’xdotool’和’wmctrl’工具。

码:

 #!/usr/bin/env bash FILE="$1" gnome-terminal --save-config=$FILE WINDOWLINES=$(wmctrl -lx | grep gnome-terminal.Gnome-terminal) WINDOWNUM=$(echo "$WINDOWLINES" | wc -l) TABLISTS=$(grep "^Terminals" $FILE) for ((i=1; i<=$WINDOWNUM; i++)) do WINDOWLINE=$(echo "$WINDOWLINES" | sed -n "$i{p;q}") WINDOW_ID=$(echo "$WINDOWLINE" | cut -d' ' -f1) #Switch to window wmctrl -i -a $WINDOW_ID LINE=$(echo "$TABLISTS" | sed -n "$i{p;q}"); LINE=${LINE#Terminals=} TERMINALNUM=$(echo "$LINE" | grep -o ';' | wc -l) #go to first tab of the window if more than 1 [ $TERMINALNUM -gt 1 ] && xdotool key alt+1 && sleep .1 for tab in ${LINE//;/ } do #Get the current tab title TITLE=$(xprop -id $WINDOW_ID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//') #Insert it into the config file [ "$TITLE" == "${TITLE//WM_NAME/}" ] && sed -ri "/\[${tab}\]/aTitle=${TITLE}" $FILE #Move to the next tab in the window xdotool key ctrl+Page_Down done done 

我也在Gnome终端中寻找过这个function但却找不到它。 到目前为止,我发现的最佳选择是使用konsole。 它允许您为选项卡添加书签,以便您可以通过从书签菜单中选择它们来回复它们。 我希望这有帮助。

这是一个xfce终端分支,可以从菜单中保存/恢复会话: https : //github.com/repu1sion/xfce4-terminal

与Yoga的方法类似,编辑>>配置文件首选项>>标题和命令>>标题>>当终端命令设置自己的标题时:>>“ Prepend initial title

然后执行: gnome-terminals –save-config = terminals-cfg

关闭终端窗口

打开一个新终端,并在其中执行: gnome-terminals –load-config = terminals-cfg

对我有用,所有标题都保存。

Hyper( https://github.com/zeit/hyper )是一个很好的跨平台替代方案,用JavaScript编写并与Electron捆绑在一起。

有一个PR将添加支持会话保存/恢复开箱即用: https : //github.com/zeit/hyper/pull/945