Một số cách nhanh chóng để lưu và khôi phục các tab của Terminal?


80

Tôi có một cửa sổ Terminal với một tá các tab được đặt tên mở.

Tôi muốn lưu cấu hình hiện tại và khôi phục nó với tên và thư mục.

Có cách nào để làm việc này không?


Tính năng rất thú vị, nhưng tôi không nghĩ rằng nó có sẵn.
dlin

Bạn đang sử dụng ứng dụng thiết bị đầu cuối nào? Thiết bị đầu cuối Gnome? Konsole? v.v.
gertvdijk

@gertvdijk: Cái gọi là "Terminal". Tôi tin rằng nó là một gnome.
sai

1
@false Btw., teh Xfce won còn được gọi là "Terminal". Đối với bất kỳ ai quan tâm, nó được ghi nhận tại Xfce Goodies , các dự án: ứng dụng: thiết bị đầu cuối :)
Nostromov

2
Để thực hiện điều này, hãy bỏ phiếu tại bugzilla.gnome.org/show_orms.cgi?id=623986
Marius Andreiana

Câu trả lời:


44

Để lưu cấu hình vào /tmp/cfg:

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

Để tải lại:

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

CẬP NHẬT

Sau khi chơi xung quanh với bash, tôi cũng đã tạo tập lệnh sau để lưu tên tab vào tệp /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

Để gán tên chính xác, bạn phải chạy nó từ tab đầu tiên của thiết bị đầu cuối của bạn. Đang tải như trước:

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

GIẢI TRÌNH:

Tôi có thể sử dụng sau đây để có được tên tab:

xprop -id $WINDOWID WM_NAME

Tôi có thể sử dụng sau đây để chuyển sang tab tiếp theo:

xdotool key ctrl+Page_Down;

Tôi đang nhận được số lượng tab sau khi grepping tệp cấu hình tôi đã lưu trước đó:

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

Vì vậy, tôi có thể lặp lại các tab trong một vòng lặp. Tôi phải thêm mục "Tiêu đề = tiêu đề" cho từng phần cấu hình tab trong tệp được lưu trước đó. Để làm như vậy, trước tiên tôi sẽ tạo một mảng các số dòng trong đó tôi sẽ thêm các dòng.

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

Tôi đang thêm dòng "Title = Titlename" bên trong vòng lặp lặp trên các tab:

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

1
Bạn có thể muốn nhìn vào lệnh màn hình. Tôi không sử dụng nó, nhưng tôi tin rằng nó có thể lưu và khôi phục tất cả các loại phiên - ngay cả những phiên từ xa.
Joe

1
Tiêu đề không hoạt động? Đảm bảo rằng trong menu Chỉnh sửa \ Tùy chọn hồ sơ, tab 'Tiêu đề và lệnh' 'Khi các lệnh đầu cuối đặt tiêu đề của riêng chúng:' KEEP INITIAL TITLE 'Hy vọng điều này sẽ giúp với các vấn đề về tiêu đề
Sentient

1
Hành vi dự định với câu trả lời này là gì? Đối với tôi, nó lưu các tab và tôi tin rằng thư mục làm việc hiện tại. Nhưng nó không lưu đầu vào và đầu ra trước đó. Thiết bị đầu cuối OS X thực hiện điều đó.
Tyler Collier

11
gnome 3.18: Tùy chọn "--save-config" không còn được hỗ trợ trong phiên bản gnome-terminal này.
Marius Andreiana

2
Ubuntu 16.04: Tùy chọn "--save-config" không còn được hỗ trợ trong phiên bản gnome-terminal này.
Eugene Kulabuhov

12

Một cách khác là chỉ sử dụng Byobu . Nhấn F2 để mở các thiết bị đầu cuối mới bên trong nó. Sử dụng F3 và F4 để chuyển đổi trái và phải giữa các thiết bị đầu cuối.

Đóng cửa sổ GUI bất cứ lúc nào bạn muốn. Khi bạn mở lại Byobu, tất cả các thiết bị đầu cuối của bạn được khôi phục :)


1
Nó hoạt động trên các khởi động lại? Đối với tôi, nó đặt lại sau khi khởi động lại.
akshay2000

3
Nó không hoạt động trên các lần khởi động lại
maxgalbu

1
Nó không mở lại tất cả các tab ở đây, chỉ có cái đầu tiên.
Leonardo Castro

3
Tại sao điều này thậm chí được nêu lên như một câu trả lời nếu nó không hoạt động trên các lần khởi động lại ??
killjoy

3

Tôi đã thử các tùy chọn bên dưới sau khi khôi phục cài đặt đã lưu và Tiêu đề cũng được khôi phục đúng cách.

  1. Truy cập Cài đặt-> Cấu hình và chọn vào Hồ sơ hiện tại bạn đang sử dụng
  2. Nhấp vào Chỉnh sửa và Chuyển đến tab "Tiêu đề và lệnh"
  3. Làm trống tiêu đề ban đầu
  4. Chọn tùy chọn "Giữ tiêu đề ban đầu" trong hộp thả xuống bên dưới.

Tùy chọn này tránh tiêu đề ban đầu của bạn được ghi đè.

Hy vọng điều này sẽ giúp và một kịch bản tuyệt vời thực sự. Tiết kiệm rất nhiều thời gian bất cứ khi nào bạn khởi động lại và tôi có thể vui vẻ khởi động lại hộp ảo của mình thường xuyên.

Cảm ơn!!


3

Tôi đã thử thêm một lựa chọn,

Tôi đã thay đổi tiêu đề mặc định của mình cho Terminal để sử dụng giá trị Intital ~/.bashrc, thay vì thay đổi ~/.profilecài đặt.

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

Nếu bạn làm điều này, không cần phải thay đổi Hồ sơ đầu cuối của bạn.
Khi bạn thực hiện gnome-terminal --load-configtất cả các tên tab được khôi phục đúng. Và bạn cũng có thể thay đổi khi bạn thích và lưu lại các tab !!


3

Tôi tìm thấy một cách để làm điều đó mà tôi nghĩ là nhanh hơn.

  1. Tạo một hồ sơ với tiêu đề và tên bạn muốn như Yoga đã nói.
  2. Thể loại:

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

Tôi đã tạo một bí danh với lệnh này và nó hoạt động khá tốt đối với tôi. Tôi chỉ cần gõ workflowvà một Terminal xuất hiện với 3 tab và tiêu đề mà tôi đã chọn trong định nghĩa hồ sơ được đặt vào các tab.

Trên .bashrctập tin của tôi, tôi đã đặt:

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

1

Màn hình hoặc Byobu là các phương pháp ưa thích của tôi để quản lý luồng công việc phức tạp trong thiết bị đầu cuối và cả hai đều cho phép lưu cấu hình của bạn.


1

Một cải tiến nhỏ cho tập lệnh tồn tại cũng kiểm tra xdotool được cài đặt trên hệ thống và thêm biến để thay đổi đường dẫn

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

Mở rộng câu trả lời của Nyakin ở trên, tập lệnh này sẽ hoạt động cho nhiều cấu hình cửa sổ và tab và lưu chính xác tiêu đề tab cho tất cả các tab có chúng.

Điều này hiện đang được thử nghiệm trên gnome-terminal 3.2 nhưng có thể được cấu hình cho bất kỳ chương trình thiết bị đầu cuối nào có chức năng lưu cấu hình tương tự.

Điều này đòi hỏi các công cụ 'xprop', 'xdotool' và 'wmctrl'.

Mã số:

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

Tôi cũng đã tìm kiếm tính năng đó trong thiết bị đầu cuối Gnome nhưng không thể tìm thấy nó. Tùy chọn tốt nhất tôi tìm thấy cho đến nay là sử dụng konsole. Nó cho phép bạn đánh dấu các tab của mình để bạn có thể quay lại với chúng bằng cách chọn chúng từ menu bookmark. Tôi hi vọng cái này giúp được.



0

Tương tự như phương pháp của Yoga, Chỉnh sửa >> Tùy chọn hồ sơ >> Tiêu đề và Lệnh >> Tiêu đề >> Khi các lệnh đầu cuối đặt tiêu đề của riêng chúng: >> " Chuẩn bị tiêu đề ban đầu "

Sau đó thực hiện: gnome-terminal --save-config = terminal-cfg

đóng cửa sổ thiết bị đầu cuối

mở một thiết bị đầu cuối mới và trong đó thực thi: gnome-terminal --load-config = terminal-cfg

Hoạt động tốt cho tôi, tất cả các tiêu đề giữ.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.