Jeg har et script, der kører i baggrunden (uden terminalvinduer eller TTY) og lejlighedsvis gør noget.

Jeg vil nu have det til at gøre en anden ting, når det gør noget, og det er at åbne et Gnome Terminal-vindue og udføre 2 kommandoer. Faktisk behøver jeg kun at udføre 1 kommando, men jeg vil gøre terminalvinduet åbent, så jeg kan se output af kommandoen. Kommandoen udskriver både på stdout og stderr, og dens output ændres over tid, så bare at skrive det til en fil og sende en slags underretning ville ikke gøre jobbet meget godt.

Jeg kan få Gnome Terminal til åbn et vindue og udfør 1 kommando:

gnome-terminal -e "sleep 10" 

Jeg valgte sleep som den langvarige kommando for enkelhedens skyld. Når der tilføjes en anden kommando, åbnes der imidlertid ikke noget terminalvindue:

gnome-terminal -e "echo test; sleep 10" 

Hvad er løsningen på dette?

Kommentarer

Svar

gnome-terminal behandler alt i anførselstegn som en kommando, så for at køre mange af dem i træk skal du start tolk (normalt en skal), og gør ting inde i den, for eksempel:

gnome-terminal -e "sh -c "echo test; sleep 10"" 

BTW, du vil måske have, at vinduet forbliver åbent, selv når kommandoer er færdige med deres job, i så fald skal du bare starte en ny skal eller udskifte en strøm med den nye:

gnome-terminal -e "sh -c "echo test; sleep 10; exec bash"" 

Kommentarer

  • # Option “-e” er udfaset og kan blive fjernet i en senere version af gnome-terminal. # # Brug “-” til at afslutte indstillingerne og sæt kommandolinjen til at udføre efter den. # Denne fejl sker nu. Men hvis du erstatter -e med -, giver den nye terminal, der kommer op, en fejl. Hvordan man korrekt bruger -?
  • @ eric.frederich baseret på dette svar på et spørgsmål ved stackoverflow, jeg mener, at syntaksen skal være gnome-terminal -- /bin/sh -c 'echo test; sleep 10'

Svar

Fra januar 2020 er -e mulighed i gnome-terminal fungerer stadig, men kaster advarslen

# Option “-e” er udfaset og kan blive fjernet i en senere version af gnome-terminal.

# Brug “-” til at afslutte indstillingerne og sæt kommandolinjen til at udføre efter den.

Du kan køre de to kommandoer uden advarsel med

 gnome-terminal -- /bin/sh -c "echo test; sleep 10"  

Og som nævnt i dette svar , hvis du vil have vinduet åbent bagefter, kan du gøre

 gnome-terminal -- /bin/sh -c "echo test; sleep 10; exec bash"  

* svar t et lignende spørgsmål

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *