mở terminal gnome với một vài tab và thực thi một vài lệnh trong mỗi tab


12

Đây là những gì tôi muốn thực hiện:

  1. Tôi muốn mở một thiết bị đầu cuối gnome với năm tab trong đó
  2. Tôi muốn tự động chạy một nhóm lệnh (5 - 10 lệnh) trong mỗi tab Tab
    đầu tiên: sẽ đặt chế độ xem trường hợp rõ ràng và sau đó thực thi một hoặc nhiều lệnh
    Tab thứ hai: sẽ đăng nhập vào máy chủ và thực hiện một số lệnh
    Tab thứ ba: sẽ chỉ thực hiện một số lệnh

gnome-terminal --geometry=260x25-0+0 --tab -e "csh -c \"ct setview myViewName; cal\"" –tab --tab --tab (hoạt động ổn, chế độ xem được đặt nhưng không có lệnh nào được thực hiện sau đó)

Tôi đã cố gắng làm theo cách này thay vào đó và chạy nó trong kịch bản dưới đây:

gnome-terminal --geometry 125x18-0-26 --tab -t "some title" -e /home/ekido/Desktop/MyScripts/myScript

#!/usr/bin/expect
exec gnome-terminal --geometry 125x49-0+81 –tab
spawn ssh usert@server
expect "password"
send "*******\r"
expect "user@server100:~>"
send “some command\r"
expect "user@server100:~>"
send “some command"
interact 

Nếu tôi loại bỏ các exec gnome-terminal --geometry 125x49-0+81 –tabhàng khỏi ví dụ và gọi một tập lệnh từ một số tệp khác, nó hoạt động tốt - tôi đã đăng nhập vào máy chủ và tất cả các lệnh được thực thi. Bất cứ ai có thể giúp tôi giải quyết điều này?

Để viết một tập lệnh mà tôi gọi cho mỗi tab không phải là một tùy chọn, vì cuối cùng tôi sẽ có 5 thiết bị đầu cuối với 5 - 7 tab và điều đó có nghĩa là sẽ có 25 đến 30 tập lệnh để viết (chi phí cao hơn nó giúp trong vấn đề của tôi).


Không phải tôi là chuyên gia về Thiết bị đầu cuối Gnome, nhưng các tab bạn tạo nên được lưu trong hồ sơ. Sau khi tạo hồ sơ, tôi tin rằng bạn có thể viết kịch bản. Xem Quản lý hồ sơ trong Trợ giúp Gnome.
Eyoung100

Câu trả lời:


11

Điều này dường như hoạt động trên máy của tôi:

gnome-terminal --geometry=260x25-0+0 --tab -e "bash -c 'date; read -n1'" --tab -e "bash -c 'echo meow; read -n1' " --tab --tab

Xin lưu ý, ngay sau khi các quy trình được thực hiện bởi -e được chạy xong, chúng sẽ chấm dứt. Trong trường hợp này, bash được tải, chạy bất kỳ lệnh nào bạn truyền cho nó và ngay lập tức tồn tại. Tôi đưa vào các câu lệnh đọc để chờ đầu vào của người dùng. Bằng cách này, các tab đó sẽ không đóng cho đến khi bạn nhấn một phím, để bạn có thể thấy nó trong ví dụ này. Không có chúng, nó sẽ trông như thể chỉ có hai tab được mở, bởi vì hai tab kia sẽ thực thi và đóng quá nhanh.


cảm ơn câu trả lời của bạn. Chắc chắn, tôi có thể lấy đầu ra của một lệnh (trong trường hợp này là "ngày") nhưng tôi muốn thực thi một số lệnh, có thể giữ đầu ra và sau đó tiếp tục viết các lệnh mới theo cách thủ công trong cùng một tab.
ekido

3

Vì bash thoát sau khi lệnh hoàn thành, bạn có thể gọi một thể hiện khác bashsau lệnh của bạn để lấy shell tương tác:

gnome-terminal  --tab -e "bash -c 'ps -ef; bash'" --tab -e "bash -c 'ls; bash'" --tab -e "bash -c 'top -n 1; bash'"

Có vẻ như nếu tôi đóng thiết bị đầu cuối, các quy trình cơ bản không tự động đóng, có giải pháp nào cho vấn đề này không? Tôi muốn đóng toàn bộ cửa sổ và tất cả các tab với quy trình của chúng sẽ bị giết
Blub

1

Lưu bên dưới dưới dạng script.sh

#!/usr/bin/env bash

me=$(realpath $0)

commands=(
"echo"
"ls -l && echo 'yes'"
"top"
"ps"
)
len=${#commands[@]}

if [ $# -eq 0 ];then
    num=$len
else
    num=$1
fi

n=$((len-num))
command=${commands[$n]}
num=$((num-1))

xdotool key ctrl+shift+t

if [ $num -gt -1 ]; then
    sleep 1; xdotool type --delay 1 --clearmodifiers "$me $num; ${command}"; xdotool key Return;
fi

thêm script.sh vào $ PATH rồi chạy nó

gnome-terminal -x script.sh

Xem Mở tab mới trong gnome-terminal bằng dòng lệnh .


mọi thứ khác thất bại ngoài hình thức này. Bây giờ, tôi muốn mở một số tab mà không cần lệnh. Ví dụ: tôi muốn mở mười tab, nhưng ba nếu chúng có thể chạy một số lệnh như htop ..
nyxee
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.