Ik heb een script dat op de achtergrond draait (zonder terminalvensters of TTY) en af en toe iets doet.

Ik wil nu dat het iets anders doet als het iets doet en het is om een Gnome Terminal-venster te openen en 2 opdrachten uit te voeren. Eigenlijk hoef ik maar 1 commando uit te voeren, maar ik wil ervoor zorgen dat het terminalvenster open blijft zodat ik de uitvoer van het commando kan zien. Het commando drukt zowel op stdout als op stderr af en de uitvoer ervan verandert in de loop van de tijd, dus het gewoon naar een bestand schrijven en een of andere kennisgeving sturen zou het werk niet erg goed doen.

Ik kan Gnome Terminal ertoe brengen open een venster en voer 1 commando uit:

gnome-terminal -e "sleep 10" 

Ik koos sleep als het langlopende commando voor de eenvoud. Wanneer u echter een ander commando toevoegt, wordt er geen terminalvenster geopend:

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

Wat is de oplossing hiervoor?

Opmerkingen

Answer

gnome-terminal behandelt alles tussen aanhalingstekens als één commando, dus om veel ervan achter elkaar uit te voeren, moet je start interpreter (meestal een shell), en doe er dingen in, bijvoorbeeld:

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

Trouwens, misschien wil je dat het venster open blijft, zelfs nadat commandos hun taak hebben voltooid, in dat geval start je gewoon een nieuwe shell of vervang je een huidige door de nieuwe:

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

Reacties

  • # Optie “-e” is verouderd en kan worden verwijderd in een latere versie van gnome-terminal. # # Gebruik “-” om de opties te beëindigen en plaats de opdrachtregel die moet worden uitgevoerd erna. # Die fout treedt nu op. Maar als u -e vervangt door -, geeft de nieuwe terminal die verschijnt een foutmelding. Hoe correct te gebruiken -?
  • @ eric.frederich gebaseerd op dit antwoord op een vraag bij stackoverflow, ik denk dat de syntaxis zou moeten zijn gnome-terminal -- /bin/sh -c 'echo test; sleep 10'

Antwoord

Vanaf januari 2020 is de -e optie in gnome-terminal werkt nog steeds, maar genereert de waarschuwing

# Optie “-e” is verouderd en kan worden verwijderd in een latere versie van gnome-terminal.

# Gebruik “-” om de opties te beëindigen en plaats de uit te voeren opdrachtregel erna.

Je kunt de twee commandos zonder waarschuwing uitvoeren met

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

En, zoals vermeld in dit antwoord , als je wilt dat het raam daarna open blijft, kun je dat doen

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

* antwoord t o een vergelijkbare vraag

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *