Mám skript, který běží na pozadí (bez terminálových oken nebo TTY) a občas něco dělá.

Nyní chci, aby udělal něco jiného, když něco udělá, a to je otevřít okno terminálu Gnome a provést 2 příkazy. Ve skutečnosti potřebuji provést pouze 1 příkaz, ale chci, aby okno terminálu zůstalo otevřené, abych mohl vidět výstup příkazu. Příkaz tiskne jak na stdout, tak na stderr a jeho výstup se v průběhu času mění, takže jen jeho zápis do souboru a odeslání nějakého oznámení by práci moc neudělal.

Mohu dostat Gnome Terminal do otevřete okno a proveďte 1 příkaz:

gnome-terminal -e "sleep 10" 

Pro jednoduchost jsem jako dlouho trvající příkaz zvolil sleep. Když však přidáte další příkaz, neotevře se žádné okno terminálu:

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

Jaké je řešení tohoto?

Komentáře

Odpovědět

gnome-terminal zachází se všemi uvozovkami jako s jedním příkazem, takže abyste je mohli spustit postupně, musíte spustit tlumočníka (obvykle shell) a dělat v něm věci, například:

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

BTW, možná budete chtít, aby okno zůstalo otevřené i poté, co příkazy dokončí svou práci, v takovém případě stačí spustit nový shell nebo nahradit aktuální nový:

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

Komentáře

  • # Možnost „-e“ je zastaralá a může být odstraněna v novější verzi gnome-terminal. # # Pomocí „-“ ukončete možnosti a po něm vložte příkazový řádek. # Tato chyba se nyní stane. Pokud však nahradíte -e za -, nový terminál, který se objeví, způsobí chybu. Jak správně používat -?
  • @ eric.frederich na základě této odpovědi na otázku na stackoverflow, věřím, že syntaxe by měla být gnome-terminal -- /bin/sh -c 'echo test; sleep 10'

Odpověď

Od ledna 2020 se -e v gnome-terminal stále funguje, ale vyvolá varování

# Možnost „-e“ je zastaralá a může být odstraněna v novější verzi gnome-terminálu.

# Pomocí „-“ ukončete možnosti a za ní vložte příkazový řádek.

Tyto dva příkazy můžete spustit bez varování pomocí

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

A jak je uvedeno v této odpovědi , pokud chcete, aby okno zůstalo poté otevřené, můžete

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

* odpověď t o podobná otázka

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *