Terminal'i birden çok sekmeyle açın ve uygulamayı yürütün


16

Linux kabuk komut dosyalarında yeniyim. Terminal birden çok sekmeli açılacak bir kabuk komut dosyası yazmak istiyorum; her sekmede rtsp istemci uygulamasını çalıştırmalıdır.

Bunun için, bu forumda burada sorudan geçtim ve feryat gibi kodlamaya çalıştım,

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

Bu çalışıyor ve terminal penceresini sekmelerle açıyor, ancak aniden kapanacak. Hata almıyorum.

Yanıtlar:


13

İstediğinizi yapmak için komut dosyasının bu varyantını kullanı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

Genellikle böyle bir senaryo:

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

<command-line_or_script>her sekmede n sekme ile yeni bir terminal açılacaktır . Örneğin, belirli bir yoldaki yorumlayıcı ile bazı sekmeleri olan bir terminal açmak istediğinizde bu çok yararlı olabilir ( cd /pathyukarıdaki komut dosyasında kullanarak ).

Ayrıca, okuma man bash, bu yayını ve bu yayını değişiklikleri anlamak için.

Bu senaryoları test ettim ve işe yarıyorlar.


Dediğim gibi Sadece görüntüler ve kapanır ve hata da alıyorum. Bu sorun nasıl düzeltilir ?.
user172001

Tamam şimdi onun sekmeleri ile pencereleri gösteren ama herhangi bir sekmede uygulamayı çalıştırmıyor. ve bana biraz, bunun pencere görüntüleme sorununu nasıl düzelttiğini açıklayın.
user172001

@ user172001 Şimdi çalışıyor, yeni düzenlemeleri kontrol edin!
Radu Rădeanu

bu çok havalı. +1
Nishant

1
cmd1 && cmd2Birden fazla komut çalıştırmak için komut dizesine eklemeyi denedim . Sadece ilkini çalıştırıyor gibi görünüyor. Açıkça yanlış bir şey mi yapıyorum?
byxor

8

Kendi cevabımı buldum. Bunun daha iyi bir yaklaşım olduğunu düşünüyorum çünkü:

  1. Anlayabiliyorum. Bir bash uzmanı ve hiçbir açıklama ne için daha popüler cevap verildi değilim ..., ${}, -e, veya@
  2. Her sekme için başlığı ve komutu kolayca özelleştirmenizi sağlar
  3. Anlamak çok daha kolay mı dedim?

O Not ; $SHELLHer gnome-terminal komutun sonunda terminali penceresini açık tutan şeydir. Aksi takdirde hemen kapanır.

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'" 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.