Minulla on komentosarja, joka toimii taustalla (ilman pääteikkunoita tai TTY: tä) ja toisinaan tekee jotain.

Haluan sen tekevän toisen asian, kun se tekee jotain, ja se on avata Gnome Terminal -ikkuna ja suorittaa kaksi komentoa. Minun täytyy vain suorittaa vain yksi komento, mutta haluan, että pääteikkuna pysyy auki, jotta voin nähdä komennon lähdön. Komento tulostaa sekä stdoutille että stderr: lle ja sen tulos muuttuu ajan myötä, joten vain kirjoittamalla se tiedostoon ja lähettämällä jonkinlainen ilmoitus ei tehdä työtä kovin hyvin.

Voin saada Gnome Terminalin avaa ikkuna ja suorita yksi komento:

gnome-terminal -e "sleep 10" 

Valitsin sleep yksinkertaisuuden pitkäaikaiseksi komennoksi. Kun lisäät toisen komennon, mikään pääteikkuna ei avaudu:

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

Mikä on ratkaisu tähän?

Kommentit

Vastaa

gnome-terminal kohtelee kaikkea lainausmerkeissä yhtenä komennona, joten jotta voit suorittaa monia niistä peräkkäin, sinun on aloita tulkki (yleensä kuori) ja tee asioita sen sisällä, esimerkiksi:

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

BTW, saatat haluta, että ikkuna pysyy auki silloinkin, kun komennot ovat suorittaneet työnsä, tällöin vain aloita uusi kuori tai korvaa nykyinen uudella:

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

Kommentit

  • # Vaihtoehto ”-e” on vanhentunut ja se voidaan poistaa seuraavasta versiosta gnome-terminal. # # Lopeta vaihtoehdot näppäimellä ”-” ja aseta komentorivi suorittamaan sen jälkeen. # Tämä virhe tapahtuu nyt. Mutta jos korvataan -e merkillä -, uusi tuleva pääte antaa virheen. Kuinka käyttää oikein??
  • @ eric.frederich tämän vastauksen perusteella pinonkulun kysymykseen, mielestäni syntaksin tulisi olla gnome-terminal -- /bin/sh -c 'echo test; sleep 10'

vastaus

Tammikuusta 2020 alkaen -e -vaihtoehto kohdassa gnome-terminal toimii edelleen, mutta heittää varoituksen

# Vaihtoehto ”-e” on vanhentunut ja se voidaan poistaa uudemmassa gnome-terminal-versiossa.

# Käytä ”-” lopettaaksesi vaihtoehdot ja laita komentorivi suorittamaan sen jälkeen.

Voit suorittaa nämä kaksi komentoa varoittamatta

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

Ja kuten tässä vastauksessa mainitaan, jos haluat ikkunan pysyvän auki myöhemmin, voit tehdä

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

* vastaus t o vastaava kysymys

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *