Düşünmek:
gnome-terminal -x sleep 10m --version
gnome-terminal -e 'sleep 10m' --version
İlk örnekte, -x
komutun yürütülmesi için sonraki her şey kullanılır. Böylece GNOME Terminali sleep 10m --version
komut olarak çalışacaktır . --version
bu durumda GNOME Terminali tarafından çalıştırılacak komutun bir parçası haline gelir.
İkincisinde, yalnızca tek dize argümanı -e
komut olarak kullanılır, başka bir şey değildir. İşte --version
aslı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, $foo
mevcut 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.