Van egy szkriptem, amely a háttérben fut (terminálablakok vagy TTY nélkül), és időnként tesz valamit.
Most azt akarom, hogy csináljon még egy dolgot, amikor valamit csinál, és hogy kinyit egy Gnome Terminal ablakot, és végrehajt 2 parancsot. Valójában csak 1 parancsot kell végrehajtanom, de a terminálablakot nyitva kell tartani, hogy lássam a parancs kimenetét. A parancs mind az stdout-ra, mind a stderr-re nyomtat, és a kimenete az idő múlásával változik, így ha csak fájlba írjuk, és valamilyen értesítést küldünk, az nem fogja nagyon jól végezni a munkát.
A Gnome Terminal-t elérhetem nyisson meg egy ablakot, és hajtson végre egy parancsot:
gnome-terminal -e "sleep 10"
Az egyszerűség kedvéért a sleep
-t választottam hosszú ideje futó parancsnak. Egy másik parancs hozzáadásakor azonban nem nyílik meg egy terminálablak:
gnome-terminal -e "echo test; sleep 10"
Mi a megoldás erre?
Megjegyzések
- Kapcsolódó: askubuntu.com/questions/315408/… és askubuntu.com/questions/20330/…
Válasz
gnome-terminal
az idézőjelekben mindent egy parancsként kezeli, ezért sokuk egymás utáni futtatásához meg kell indítson tolmácsot (általában egy héjat), és csináljon benne dolgokat, például:
gnome-terminal -e "sh -c "echo test; sleep 10""
BTW, érdemes lehet, hogy az ablak akkor is nyitva maradjon, ha a parancsok befejezik a munkájukat, ebben az esetben csak indítson új héjat, vagy cseréljen egy áramot az újra:
gnome-terminal -e "sh -c "echo test; sleep 10; exec bash""
Megjegyzések
- # Az „-e” opció elavult, és a későbbi verziójában eltávolítható gnome-terminal. # # A „-” gombbal szüntesse meg az opciókat, és tegye a parancssort utána végrehajtásra. # Ez a hiba most következik be. De ha az -e szót lecseréli -, a megjelenő új terminál hibát ad. Hogyan kell helyesen használni -?
- @ eric.frederich ez a válasz alapján a stackoverflow kérdésére, úgy gondolom, hogy a szintaxisnak
gnome-terminal -- /bin/sh -c 'echo test; sleep 10'
Válasz
2020 januárjától a -e
opció a gnome-terminal
fájlban továbbra is működik, de eldobja a figyelmeztetést
# Az „-e” opció elavult, és előfordulhat, hogy a gnome-terminal egy újabb verziójában eltávolítja.
# A „-” gombbal szüntesse meg az opciókat, és tegye a parancssort utána végrehajtandóvá.
A két parancs figyelmeztetés nélkül futtatható a
gnome-terminal -- /bin/sh -c "echo test; sleep 10"
És ahogy ebben a válaszban említettük, ha azt szeretné, hogy az ablak utána is nyitva maradjon, megteheti
gnome-terminal -- /bin/sh -c "echo test; sleep 10; exec bash"