Tab mở theo chương trình trong gnome-terminal, thực thi lệnh và có tab vẫn mở


12

Tôi đang cố gắng viết một lệnh sẽ khởi chạy một vài tab đầu cuối, thực thi một cái gì đó trong mỗi tab và để mỗi tab vẫn mở sau khi lệnh kết thúc, vì vậy tôi có thể nhìn vào đầu ra và nhập thêm các lệnh trong mỗi tab

đại loại như thế này:

gnome-terminal --tab -e "ls -a" --tab -e "ls"

nhưng vấn đề với điều này là các tab đóng ngay khi lệnh "ls" kết thúc. Có ai biết làm thế nào để làm cho các tab vẫn mở?

Câu trả lời:


11

Gnome-terminal có thể thực thi lệnh hoặc mở shell, nhưng không phải cả hai.

Có một cách giải quyết để thực hiện cả hai bằng cách đóng gói lệnh và sau đó gọi shell vào một lệnh.

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""

Để biết thêm lựa chọn thay thế, hãy đọc câu trả lời của tôi cho một câu hỏi tương tự về lỗi tràn stack: /programming//questions35312055/avoid-gnome-terminal-close-after-script-execut35331426#3531426


10

Nếu bạn đã xdotoolwmctrlcài đặt, sau đó sau shell script việc sức mạnh:

#!/usr/bin/env bash

window="$(xdotool search --class gnome-terminal | head -1)"
xdotool windowfocus $window
xdotool key ctrl+shift+t
xdotool type "$*"
xdotool key Return

Tôi sử dụng nó như thế này:

$ run-in-new-tab 'ls -l'

Tôi tìm thấy ý tưởng này trên blog của Trustin Lee .


Cảm ơn. Điều này hoạt động khá tốt. Tôi phải thêm một sleep 1sau ctrl + shift + t để làm cho nó hoạt động với tôi mặc dù. Tôi sẽ chấp nhận điều này nếu không có gì khác xuất hiện sớm

Vâng - tôi thấy tôi phải sleep 2làm cho nó hoạt động 100% thời gian. Lớn giải pháp mặc dù - tôi bây giờ đang mở 8 tab, mà ssh vào máy chủ khác nhau, bắt đầu quá trình khác nhau vv, sử dụng này: setup buổi sáng của tôi bây giờ đã hoàn toàn kịch bản :)
Max Williams

Thực tế wmctrllà không bắt buộc.
nedim
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.