Come nascondere l'output del terminale durante l'esecuzione di un comando?

55

Quando lancio alcuni programmi dalla riga di comando come eclissi e visualizzatore di documenti in 11.10, sputa un carico di informazioni che sembra irrilevante.

Anche quando vengono eseguiti in background, a volte continuano a produrre output sul terminale su cui sto lavorando, il che è irritante.

Mi piacerebbe che avessero appena lanciato e conservassero lo sfondo in background. Il mio ragionamento è che se si lanciano questi programmi attraverso la GUI (ad es. Facendo doppio clic su un'icona) questi messaggi non mi vengono mai mostrati, quindi non ne ho bisogno nella riga di comando.

    
posta Anake 25.01.2012 - 12:20

3 risposte

73

Se puoi evitare di scrivere cose nella console, dipende da come viene generato l'output dal programma. Se è trasmesso in streaming sullo standard output, allora è sufficiente fare

$ eclipse >/dev/null

e non dovrebbe essere prodotto alcun output.

Per sopprimere anche i messaggi di errore:

$ eclipse >/dev/null 2>&1

O in bash, semplicemente:

$ eclipse &>/dev/null

Ma se lo fanno in qualche modo in modo diverso, potrebbe essere un problema impedirgli di scrivere nella console.

se possibile usa la soluzione fornita da MuffinStateWide

    
risposta data Misery 25.01.2012 - 13:03
8

Puoi creare una funzione bash che farà l'alias di un nome comando e aggiungere alcune funzionalità extra per ottenere ciò che stai chiedendo.

Ad esempio: supponiamo di voler lanciare gvim (un editor di testo gui) dalla riga di comando.

potresti scrivere una funzione come questa:

function gvim () {
    nohup gvim "[email protected]" > /dev/null 2>&1 & disown
}

(aggiungi questa funzione al tuo file .bashrc o .bash_aliases in modo che venga sempre caricato)

Spiegazione:

  • questo alias il comando gvim con una funzione bash chiamata anche gvim (quindi quando digiti gvim a un prompt bash, chiamerà la tua funzione gvim , invece di eseguire il% reale% co_de comando. La tua funzione chiama quindi il comando gvim reale (e accetta i suoi argomenti regolari), con alcune funzioni aggiunte:

    • reindirizza stdout e stderr su gvim (sopprime l'output al terminale)
    • utilizza /dev/null per eseguire il comando in background (quindi la shell non è bloccata)
    • utilizza & per rimuovere il lavoro in background dalla shell (quindi non verrà visualizzato nell'elenco dei lavori attivi)
    • utilizza disown per separare il processo dal terminale (in modo da poter terminare la sessione della shell o chiudere il terminale senza uccidere il processo)
risposta data Corey Goldberg 16.02.2016 - 17:20
5

prova ad aggiungere --help come opzione di comando e cerca "quiet" questo dovrebbe sopprimere l'output, o semplicemente avviarsi dalla GUI. e lanciare con l'interruttore o trovare un modo per sopprimerlo tramite script

personalmente lancio da cli per ottenere quell'output quindi non sono sicuro che sia possibile per tutte le app della GUI.

    
risposta data MuffinStateWide 25.01.2012 - 13:06

Leggi altre domande sui tag