Mở Terminal với nhiều tab và thực thi ứng dụng


16

Tôi chưa quen với kịch bản shell linux. Tôi muốn viết một kịch bản shell sẽ mở terminal với nhiều tab; nó nên chạy ứng dụng khách rtsp trong mỗi tab.

Đối với điều này, tôi đã trải qua câu hỏi ở đây trong diễn đàn này và cố gắng viết mã như dưới đây,

tab="--tab-with-profile=Default -e "
cmd="java RunRTSPClient"
for i in 1 2 3 4 5
   do
#   
   foo="$foo $tab $cmd"         
   done
gnome-terminal $foo
exit 0

Điều này đang chạy và mở cửa sổ đầu cuối với các tab nhưng đột nhiên nó sẽ đóng lại. Tôi không nhận được bất kỳ lỗi nào.

Câu trả lời:


13

Sử dụng biến thể của tập lệnh này để làm những gì bạn muốn:

#!/bin/bash

tab="--tab-with-profile=Default"
cmd="bash -c 'java RunRTSPClient';bash"
foo=""

for i in 1 2 3 4 5; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

Nói chung, một kịch bản như thế này:

#!/bin/bash

tab="--tab"
cmd="bash -c '<command-line_or_script>';bash"
foo=""

for i in 1 2 ... n; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

sẽ mở một thiết bị đầu cuối mới với n tab thực thi <command-line_or_script>trong mỗi tab. Điều này có thể rất hữu ích khi bạn muốn mở một thiết bị đầu cuối với một số tab với trình thông dịch tại một đường dẫn cụ thể (sử dụng cd /pathtrong đoạn script trên).

Ngoài ra, đọc man bash, bài nàybài này để hiểu những thay đổi.

Tôi đã thử nghiệm các kịch bản này và chúng hoạt động.


Giống như tôi đã nói Nó chỉ hiển thị và đóng và không có lỗi cũng nhận được. Làm thế nào để giải quyết vấn đề này?.
dùng172001

ok bây giờ nó hiển thị các cửa sổ với các tab nhưng không chạy ứng dụng trong bất kỳ tab nào. và cũng giải thích cho tôi một chút, làm thế nào điều này đã khắc phục vấn đề hiển thị cửa sổ.
dùng172001

@ user172001 Bây giờ nó đang hoạt động, hãy kiểm tra các chỉnh sửa mới!
Radu Rădeanu

cái này hay đấy. +1
Nishant

1
Tôi đã thử thêm cmd1 && cmd2vào chuỗi lệnh để chạy nhiều lệnh. Nó dường như chỉ chạy cái đầu tiên. Có phải tôi đang làm gì đó sai một cách trắng trợn?
byxor

7

Tôi đã đưa ra câu trả lời của riêng tôi. Tôi nghĩ rằng đây là một cách tiếp cận tốt hơn bởi vì:

  1. Tôi hiểu nó. Tôi không phải là một chuyên gia bash và không có lời giải thích đã được đưa ra trong câu trả lời phổ biến hơn cho những gì là ..., ${}, -e, hoặc@
  2. Nó cho phép bạn dễ dàng tùy chỉnh tiêu đề và lệnh cho mỗi tab
  3. Tôi đã nói nó dễ hiểu hơn nhiều phải không?

Lưu ý rằng ; $SHELLở cuối mỗi lệnh gnome-terminal là thứ giữ cho cửa sổ terminal mở. Nếu không nó sẽ ngay lập tức đóng cửa.

title1="tab 1"
title2="tab 2"
title3="tab 3"

cmd1="cd /etc"
cmd2="cd ~/Documents"
cmd3="cd /usr/local"

gnome-terminal --tab --title="$title1" --command="bash -c '$cmd1; $SHELL'" \
               --tab --title="$title2" --command="bash -c '$cmd2; $SHELL'" \
               --tab --title="$title3" --command="bash -c '$cmd3; $SHELL'" 
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.