Gnome-terminali için -e ve -x seçenekleri arasındaki fark nedir?


11

Man sayfaları durumu:

-e, --command=STRING
Execute the argument to this option inside the terminal.
-x, --execute
Execute the remainder of the command line inside the terminal.

İkinci örnekteki "komut satırı" ne atıfta bulunur? Peki "geri kalanı" nedir? Lütfen bu iki seçeneğin farklı olduğu bir yer verebilir misiniz? Yoksa temelde aynı mı?


1
Tam değil ama bu bulundu superuser.com/questions/198015/…
rɑːdʒɑ

Harika bir ilk soru.
Jared Smith

Yanıtlar:


16

Düşünmek:

gnome-terminal -x sleep 10m --version
gnome-terminal -e 'sleep 10m' --version

İlk örnekte, -xkomutun yürütülmesi için sonraki her şey kullanılır. Böylece GNOME Terminali sleep 10m --versionkomut olarak çalışacaktır . --versionbu durumda GNOME Terminali tarafından çalıştırılacak komutun bir parçası haline gelir.

İkincisinde, yalnızca tek dize argümanı -ekomut olarak kullanılır, başka bir şey değildir. İşte --versionaslında GNOME Terminali için bir seçenek.

Bir komut dizisi çalıştırmak istiyorsanız daha kullanışlı olabilir:

gnome-terminal -x bash -c 'command 1; command 2; ...'

Bunu yapmak zordur -e, çünkü tüm komutun tek bir dize olması gerekir, bu yüzden her şeyi alıntılamanız gerekir. Bu da, tekliflere ve değişken genişlemeye ve daha fazlasına daha dikkatli olmanız gerektiği anlamına gelir:

gnome-terminal -e "bash -c 'command 1 $foo; command 2; ...'"

Burada, $foomevcut kabuk tarafından genişletilecektir.

gnome-terminal -e 'bash -c "command 1 | awk '\''{print $NF}'\''"' 

'Komut dizesinin içinde kullanmak can sıkıcı alıntı işlemeyi içerir.


5
Şimdi görüyorum. -X seçeneği muhtemelen tırnak sorunları önlemek için uygun bir yol olarak icat gibi görünüyor.
stackzebra
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.