ターミナルのタブをすばやく保存および復元する方法はありますか?


80

12個の名前付きタブが開いたターミナルウィンドウがあります。

現在の構成を保存し、名前とディレクトリを使用して復元したいと思います。

これを行う方法はありますか?


非常に興味深い機能ですが、利用できるとは思いません。
dlin

どの端末アプリケーションを使用していますか?Gnomeターミナル?コンソール?など
gertvdijk

@gertvdijk:「ターミナル」と呼ばれるもの。私はそれがノームのものだと信じています。
偽の

1
@falseところで、勝ったXfceは「ターミナル」と呼ばれます。興味のある人のために、それはで文書化されていますXfceのグッズアプリケーション:プロジェクトの端末 :)
Nostromov

2
これを可能にするには、bugzilla.gnome.org
show_bug.cgi?id = 623986

回答:


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;

以前に保存した設定ファイルをgrepした後、タブの数を取得しています:

$(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コマンドを調べてください。私はそれを使用しませんが、あらゆる種類のセッションを保存および復元できると信じています-リモートのものであっても。
ジョー

1
タイトルが機能していませんか?タイトルの問題に役立ちます。この希望『INITIAL TITLE KEEP』:ターミナルコマンドは、独自のタイトルを設定すると、メニューの編集\プロファイル設定でタブ「タイトルとコマンド」」ことを確認します
衆生

1
この回答で意図されている動作は何ですか?私にとっては、それはタブを保存し、現在の作業ディレクトリを信じています。ただし、以前の入力と出力は保存されません。OS X端末がそれを行います。
タイラーコリアー

11
gnome 3.18:オプション "--save-config"は、このバージョンのgnome-terminalではサポートされなくなりました。
マリウスアンドレイアナ

2
Ubuntu 16.04:このバージョンのgnome-terminalでは、オプション "--save-config"はサポートされなくなりました。
ユージンクラブホフ

12

別の方法は、単にByobuを使用することです。F2を押して、内部の新しいターミナルを開きます。F3とF4を使用して、端末間で左右に切り替えます。

いつでもGUIウィンドウを閉じます。By風を再び開くと、すべての端末が復元されます:)


1
再起動しても機能しますか?私にとっては、再起動後にリセットされます。
akshay2000

3
再起動しても機能しません
-maxgalbu

1
ここですべてのタブを再度開くのではなく、最初のタブのみを開きます。
レオナルドカストロ

3
再起動しても機能しない場合、なぜこれが回答としても支持されますか?
killjoy

3

保存した設定を復元した後、以下のオプションを試しましたが、タイトルも正しく復元されます。

  1. [設定]-> [プロファイル]に移動し、使用している現在のプロファイルを選択します。
  2. [編集]をクリックし、[タイトルとコマンド]タブに移動します
  3. 初期タイトルを空白にする
  4. 下のドロップダウンボックスで「初期タイトルを保持」オプションを選択します。

このオプションは、最初のタイトルセットが上書きされるのを防ぎます。

これが本当に素晴らしいスクリプトに役立つことを願っています。再起動するたびに多くの時間を節約でき、頻繁に仮想ボックスを喜んで再起動できます。

ありがとう!!


3

私はもう一つのオプションを試しました、

ターミナルのデフォルトのタイトルを変更して、設定を変更するので~/.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. ヨガが言ったように、タイトルと名前を付けてプロファイルを作成します。
  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ターミナルでもこの​​機能を探しましたが、見つかりませんでした。私がこれまで見つけた最良のオプションは、コンソールを使用することです。タブをブックマークして、ブックマークメニューから選択してタブに戻ることができます。これがお役に立てば幸いです。



0

ヨガの方法と同様に、編集>>プロファイル設定>>タイトルとコマンド>>タイトル>>ターミナルコマンドが独自のタイトルを設定する場合:>> " 最初のタイトルを付加する "

次に実行します: gnome-terminals --save-config = terminals-cfg

端末ウィンドウを閉じる

新しいターミナルを開き、その中で実行します: gnome-terminals --load-config = terminals-cfg

すべてのタイトルが保持され、私にとってはうまくいきます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.