Jeg har et skript som kjører i bakgrunnen (uten terminalvinduer eller TTY) og av og til gjør noe.

Jeg vil nå at den skal gjøre en annen ting når den gjør noe, og det er å åpne et Gnome Terminal-vindu og utføre 2 kommandoer. Egentlig trenger jeg bare å utføre en kommando, men jeg vil gjøre at terminalvinduet holder åpent slik at jeg kan se utdataene fra kommandoen. Kommandoen skrives ut både på stdout og stderr, og dens utgang endres over tid, så bare å skrive den til en fil og sende en slags varsel ville ikke gjøre jobben veldig bra.

Jeg kan få Gnome Terminal til åpne et vindu og utfør en kommando:

gnome-terminal -e "sleep 10" 

Jeg valgte sleep som den langvarige kommandoen for enkelhets skyld. Når du legger til en ny kommando, åpnes det imidlertid ikke et terminalvindu:

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

Hva er løsningen på dette?

Kommentarer

Svar

gnome-terminal behandler alt i anførselstegn som en kommando, så for å kjøre mange av dem fortløpende må du start tolk (vanligvis et skall), og gjør ting inne i det, for eksempel:

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

BTW, kanskje du vil at vinduet skal være åpent selv etter at kommandoer er ferdig med jobben, i så fall er det bare å starte nytt skall, eller erstatte en strøm med den nye:

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

Kommentarer

  • # Alternativ “-e” er utfaset og kan bli fjernet i en senere versjon av gnome-terminal. # # Bruk “-” for å avslutte alternativene og sette kommandolinjen til å utføre etter den. # Den feilen skjer nå. Men hvis du bytter ut -e med -, gir den nye terminalen som kommer opp en feil. Hvordan bruke riktig??
  • @ eric.frederich basert på dette svaret på et spørsmål ved stackoverflow, jeg tror syntaksen skal være gnome-terminal -- /bin/sh -c 'echo test; sleep 10'

Svar

Fra og med januar 2020 vil -e alternativet i gnome-terminal fungerer fremdeles, men kaster advarselen

# Alternativ “-e” er utfaset og kan bli fjernet i en senere versjon av gnome-terminal.

# Bruk “-” for å avslutte alternativene og sette kommandolinjen til å utføre etter den.

Du kan kjøre de to kommandoene uten advarsel med

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

Og som nevnt i dette svaret , hvis du vil at vinduet skal være åpent etterpå, kan du gjøre

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

* svar t o et lignende spørsmål

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *