Beberapa cara cepat untuk menyimpan dan mengembalikan tab Terminal?

80

Saya memiliki jendela Terminal dengan selusin tab bernama terbuka.

Saya ingin menyimpan konfigurasi saat ini dan mengembalikannya dengan nama dan direktori.

Apakah ada cara untuk melakukan ini?

Salah
sumber
Fitur yang sangat menarik, tapi saya rasa itu tidak tersedia.
dlin
Aplikasi terminal apa yang Anda gunakan? Terminal Gnome? Konsole? dll.
gertvdijk
@ gertvdijk: Yang disebut "Terminal". Saya percaya itu adalah gnome.
false
1
@ false Btw., Xfce won juga disebut "Terminal". Bagi siapa pun yang tertarik, ini didokumentasikan di Xfce Goodies , proyek: aplikasi: terminal :)
Nostromov
2
Untuk memungkinkan ini,
berikan

Jawaban:

44

Untuk menyimpan konfigurasi ke /tmp/cfg:

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

Untuk memuatnya kembali:

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

MEMPERBARUI

Setelah bermain-main dengan bash, saya membuat skrip berikut yang menyimpan nama tab ke dalam file /tmp/testjuga:

#!/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

Untuk menetapkan nama dengan benar, Anda harus menjalankannya dari tab pertama terminal Anda. Memuat sama seperti sebelumnya:

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

PENJELASAN:

Saya dapat menggunakan berikut ini untuk mendapatkan nama tab:

xprop -id $WINDOWID WM_NAME

Saya dapat menggunakan yang berikut untuk melompat ke tab berikutnya:

xdotool key ctrl+Page_Down;

Saya mendapatkan jumlah tab setelah mengambil file konfigurasi yang saya simpan sebelumnya:

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

Jadi saya bisa mengulangi tab di dalam satu lingkaran. Saya harus menambahkan entri "Title = titlename" untuk setiap bagian konfigurasi tab dalam file yang disimpan sebelumnya. Untuk melakukannya, pertama saya membuat array nomor baris di mana saya akan menambahkan baris.

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

Saya menambahkan baris "Title = titlename" di dalam loop yang berulang di atas tab:

sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test 
Nykakin
sumber
1
Anda mungkin ingin melihat perintah layar. Saya tidak menggunakannya, tapi saya percaya ini bisa menyimpan dan mengembalikan semua jenis sesi - bahkan sesi jarak jauh.
Joe
1
Judul tidak berfungsi? Pastikan bahwa dalam menu Edit \ Preferensi Profil tab 'Judul dan Perintah' 'Ketika perintah terminal menetapkan judul mereka sendiri:' TETAP JUDUL AWAL 'Semoga ini bisa membantu masalah judul
Sentient
1
Apa perilaku yang dimaksud dengan jawaban ini? Bagi saya, ini menyimpan tab, dan saya percaya direktori kerja saat ini. Tetapi itu tidak menyimpan input dan output sebelumnya. Terminal OS X melakukan itu.
Tyler Collier
11
gnome 3.18: Opsi "--save-config" tidak lagi didukung dalam versi gnome-terminal ini.
Marius Andreiana
2
Ubuntu 16.04: Opsi "--save-config" tidak lagi didukung dalam versi gnome-terminal ini.
Eugene Kulabuhov
12

Alternatifnya adalah dengan hanya menggunakan Byobu . Tekan F2 untuk membuka terminal baru di dalamnya. Gunakan F3 dan F4 untuk beralih ke kiri dan kanan antara terminal.

Tutup jendela GUI kapan saja Anda mau. Ketika Anda membuka kembali Byobu, semua terminal Anda telah dipulihkan :)

Ashwin Nanjappa
sumber
1
Apakah itu berfungsi di seluruh reboot? Bagi saya, itu akan direset kembali setelah reboot.
akshay2000
3
Ini tidak berfungsi di reboot
maxgalbu
1
Itu tidak membuka kembali semua tab di sini, hanya yang pertama.
Leonardo Castro
3
Mengapa ini bahkan diputuskan sebagai jawaban jika tidak berhasil di seluruh reboot ??
killjoy
3

Saya mencoba opsi di bawah ini setelah mengembalikan pengaturan yang disimpan dan Judul juga dikembalikan dengan benar.

  1. Pergi Pengaturan-> Profil dan pilih pada Profil Saat Ini yang Anda gunakan
  2. Klik pada Edit dan Buka Tab "Judul dan perintah"
  3. Kosongkan Judul Awal
  4. Pilih opsi "Keep Initial Title" di kotak drop down di bawah ini.

Opsi ini menghindari judul awal Anda yang akan ditimpa.

Semoga ini bisa membantu dan naskah yang bagus. Hemat banyak waktu kapan pun Anda me-reboot dan saya bisa dengan senang hati me-reboot kotak virtual saya sering.

Terima kasih!!

Yoga
sumber
3

Saya Mencoba satu opsi lagi,

Saya mengubah judul default saya untuk Terminal untuk menggunakan nilai Intital ~/.bashrc, daripada mengubah ~/.profilepengaturan.

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

Jika Anda melakukan ini, tidak perlu mengubah Profil Terminal Anda.
Ketika Anda menjalankan gnome-terminal --load-configsemua nama tab dikembalikan dengan benar. Dan Anda juga dapat mengubah sesuka Anda dan menyimpan tab lagi !!

Yoga
sumber
3

Saya menemukan cara untuk melakukannya yang menurut saya lebih cepat.

  1. Membuat profil dengan judul dan nama yang Anda inginkan seperti kata Yoga.
  2. Tipe:

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

Saya membuat alias dengan perintah ini dan itu bekerja cukup baik untuk saya. Saya cukup mengetik workflowdan Terminal muncul dengan 3 tab dan judul yang saya pilih dalam definisi profil yang ditempatkan di tab.

Pada .bashrcfile saya, saya menempatkan:

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

Layar atau Byobu adalah metode pilihan saya untuk mengelola alur kerja yang kompleks di terminal, dan keduanya memungkinkan menyimpan konfigurasi Anda.

orbatos
sumber
1

Sedikit perbaikan pada skrip yang ada yang juga memeriksa xdotool yang diinstal pada sistem dan menambahkan variabel untuk mengubah path

#!/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
nadi
sumber
1

Memperluas jawaban Nyakin di atas, skrip ini akan berfungsi untuk beberapa konfigurasi jendela dan tab dan menyimpan judul tab dengan benar untuk semua tab yang memilikinya.

Ini saat ini sedang diuji pada gnome-terminal 3.2 tetapi dapat dikonfigurasikan untuk program terminal apa saja dengan fungsionalitas save-config yang serupa.

Ini membutuhkan alat 'xprop', 'xdotool', dan 'wmctrl'.

Kode:

#!/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
Bobby Jones
sumber
1

Saya juga mencari fitur itu di terminal Gnome tetapi tidak dapat menemukannya. Pilihan terbaik yang saya temukan sejauh ini adalah menggunakan konsole. Ini memungkinkan Anda untuk menandai tab Anda, sehingga Anda dapat kembali ke mereka dengan memilihnya dari menu bookmark. Saya harap ini membantu.

cocok
sumber
0

Mirip dengan metode Yoga, Edit >> Preferensi Profil >> Judul dan Perintah >> Judul >> Ketika perintah terminal menetapkan judul mereka sendiri: >> " Tentukan judul awal "

Kemudian jalankan: gnome-terminal --save-config = terminals-cfg

tutup terminal windows

buka terminal baru, dan di dalamnya jalankan: gnome-terminal --load-config = terminals-cfg

Bagus bagi saya, semua judul disimpan.

ImLeo
sumber