Jag har ett skript som körs i bakgrunden (utan terminalfönster eller TTY) och ibland gör något.
Jag vill nu att det ska göra en annan sak när det gör något och det är att öppna ett Gnome Terminal-fönster och utföra 2 kommandon. Egentligen behöver jag bara utföra ett kommando men jag vill att terminalfönstret ska vara öppet så att jag kan se kommandot. Kommandot skrivs ut både på stdout och stderr och dess utdata ändras över tiden, så bara att skriva det till en fil och skicka någon form av avisering skulle inte göra jobbet mycket bra.
Jag kan få Gnome Terminal till öppna ett fönster och kör 1 kommando:
gnome-terminal -e "sleep 10"
Jag valde sleep
som det långvariga kommandot för enkelhetens skull. När du lägger till ett nytt kommando öppnas dock inget terminalfönster:
gnome-terminal -e "echo test; sleep 10"
Vad är lösningen på detta?
Kommentarer
- Relaterat: askubuntu.com/questions/315408/… och askubuntu.com/questions/20330/…
Svar
gnome-terminal
behandlar allt i citat som ett kommando, så för att köra många av dem i följd måste du starta tolk (vanligtvis ett skal) och gör saker inuti det, till exempel:
gnome-terminal -e "sh -c "echo test; sleep 10""
BTW, du kanske vill att fönstret ska vara öppet även efter att kommandon är färdiga, i så fall startar du bara ett nytt skal eller ersätter en ström med den nya:
gnome-terminal -e "sh -c "echo test; sleep 10; exec bash""
Kommentarer
- # Alternativ “-e” är utfasat och kan tas bort i en senare version av gnome-terminal. # # Använd “-” för att avsluta alternativen och sätt kommandoraden att köra efter den. # Det felet händer nu. Men om du byter ut -e med – ger den nya terminalen som kommer upp ett fel. Hur man korrekt använder -?
- @ eric.frederich baserat på detta svar på en fråga vid stackoverflow, jag tror att syntaxen borde vara
gnome-terminal -- /bin/sh -c 'echo test; sleep 10'
Svar
Från och med januari 2020 kommer -e
alternativet i gnome-terminal
fungerar fortfarande men kastar varningen
# Alternativ ”-e” har upphört att gälla och kan tas bort i en senare version av gnome-terminal.
# Använd ”-” för att avsluta alternativen och sätt kommandoraden att köra efter den.
Du kan köra de två kommandona utan varning med
gnome-terminal -- /bin/sh -c "echo test; sleep 10"
Och som nämnts i detta svar , om du vill att fönstret ska vara öppet efteråt kan du göra
gnome-terminal -- /bin/sh -c "echo test; sleep 10; exec bash"