一些快速的方法来保存和还原终端的选项卡?


80

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

我想保存当前配置,并使用名称和目录还原它。

有没有办法做到这一点?


非常有趣的功能,但我认为该功能不可用。
dlin

您正在使用什么终端应用程序?侏儒终端?Konsole?等
gertvdijk

@gertvdijk:一个叫做“ Terminal”的终端。我相信这是侏儒之一。
2013年

1
@false顺便说一句,Xfce won 被称为“ Terminal”。对于任何感兴趣的人,它都记录在Xfce Goodies上projects:applications:terminal :)
Nostromov

Answers:


44

要将配置保存到/tmp/cfg

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

加载回去:

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

更新

在玩完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;

grepping之前保存的配置文件后,我得到的标签数:

$(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 

1
您可能需要查看screen命令。我不使用它,但我相信它可以保存和恢复各种会话,甚至是远程会话。
2013年

1
标题不起作用?确保在菜单“编辑\配置文件首选项”中的“标题和命令”选项卡中“当终端命令设置自己的标题时:'KEEP INITIAL TITLE'希望这对标题问题
有所

1
这个答案的预期行为是什么?对我来说,它保存选项卡,并且我相信当前的工作目录。但是它不会保存先前的输入和输出。OS X终端可以做到这一点。
泰勒·科利尔

11
gnome 3.18:在此版本的gnome-terminal中不再支持选项“ --save-config”。
Marius Andreiana

2
Ubuntu 16.04:此版本的gnome-terminal不再支持选项“ --save-config”。
尤金·库拉布霍夫

12

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

您可以随时关闭GUI窗口。重新打开Byobu时,所有终端都将恢复:)


1
它可以在重新启动后工作吗?对我来说,重新启动后它会重新设置。
akshay2000

3
在重新启动后无法正常工作
maxgalbu

1
它不会在这里重新打开所有标签,仅在第一个标签。
莱昂纳多·卡斯特罗

3
如果在重新启动后无法正常工作,为什么还要将此作为答案?
killjoy

3

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

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

此选项避免将您的初始标题设置为覆盖。

希望这会有所帮助,并且确实是一个很棒的脚本。每当您重新启动时,可以节省大量时间,而我可以经常愉快地重新启动虚拟盒。

谢谢!!


3

我尝试了另一种选择,

我将终端的默认标题更改为使用中的Intital值~/.bashrc,而不是更改~/.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所有选项卡名称都会正确还原。您还可以根据需要进行更改,然后再次保存标签!!


3

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

  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 &'

1

Screen或Byobu是我在终端中管理复杂工作流程的首选方法,两者都可以保存您的配置。


1

对现有脚本进行了一点改进,该脚本还可以检查系统上安装的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

1

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

当前已在gnome-terminal 3.2上对其进行了测试,但可以为具有类似save-config功能的任何终端程序进行配置。

这需要“ 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

1

我也在Gnome终端中寻找了该功能,但找不到它。到目前为止,我发现最好的选择是使用konsole。它使您可以对选项卡添加书签,以便可以通过从书签菜单中选择它们来返回它们。我希望这有帮助。



0

与Yoga的方法类似,编辑>>配置文件首选项>>标题和命令>>标题>>当终端命令设置自己的标题时:>>“在初始标题前添加

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

关闭终端窗口

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

对我有用,所有头衔都保留了。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.