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

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"  

* válasz t o hasonló kérdés

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük