Buka Terminal dengan banyak tab dan jalankan aplikasi


16

Saya baru mengenal skrip shell linux. Saya ingin menulis skrip shell yang akan membuka terminal dengan banyak tab; itu harus menjalankan aplikasi klien rtsp di setiap tab.

Untuk ini, saya telah melalui pertanyaan di forum ini dan mencoba kode seperti di bawah ini,

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

Ini sedang berjalan dan membuka jendela terminal dengan tab tetapi tiba-tiba akan menutup. Saya tidak mendapatkan kesalahan.

Jawaban:


13

Gunakan varian skrip ini untuk melakukan apa yang Anda inginkan:

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

Secara umum, skrip seperti ini:

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

akan membuka terminal baru dengan n tab yang mengeksekusi <command-line_or_script>di setiap tab. Ini bisa sangat berguna ketika Anda ingin misalnya membuka terminal dengan beberapa tab dengan penerjemah di jalur tertentu (menggunakan cd /pathdalam skrip di atas).

Juga, membaca man bash, posting ini dan posting ini untuk memahami perubahan.

Saya telah menguji skrip ini dan mereka bekerja.


Sama seperti yang saya katakan Ini hanya menampilkan dan menutup dan tidak ada kesalahan juga. Bagaimana cara mengatasi masalah ini?
user172001

ok sekarang ini menunjukkan windows dengan tab tetapi tidak menjalankan aplikasi di tab apa pun. dan juga jelaskan sedikit padaku, bagaimana ini telah memperbaiki masalah tampilan jendela.
user172001

@ user172001 Sekarang sudah berfungsi, periksa suntingan baru!
Radu Rădeanu

ini keren sekali. +1
Nishant

1
Saya mencoba menambahkan cmd1 && cmd2ke dalam string perintah untuk menjalankan banyak perintah. Sepertinya hanya menjalankan yang pertama. Apakah saya melakukan sesuatu yang salah?
byxor

7

Saya datang dengan jawaban saya sendiri. Saya pikir ini adalah pendekatan yang lebih baik karena:

  1. Saya bisa memahaminya. Saya bukan ahli bash dan tidak ada penjelasan diberikan dalam jawaban yang lebih populer untuk apa yang ..., ${}, -e, atau@
  2. Ini memungkinkan Anda untuk dengan mudah menyesuaikan judul dan perintah untuk setiap tab
  3. Apakah saya mengatakan itu jauh lebih mudah dimengerti?

Perhatikan bahwa ; $SHELLpada akhir setiap perintah terminal gnome adalah apa yang membuat jendela terminal terbuka. Kalau tidak, itu akan segera ditutup.

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'" 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.