it-swarm.dev

Jak skrýt výstup terminálu při provádění příkazu?

Když spustím určité programy z příkazového řádku, jako je Eclipse a prohlížeč dokumentů v 11.10, chrlí spoustu informací, které se zdají být bezvýznamné.

Také když běží na pozadí, někdy pokračují v produkci výstupu do terminálu, na kterém v současné době pracuji, což je dráždivé.

Chtěl bych, aby je pouze spustili a aby pozadí zůstaly v pozadí. Důvodem je, že pokud tyto programy spustíte pomocí GUI (např. Dvojitým kliknutím na ikonu), tyto zprávy se mi nikdy nezobrazí, takže je v příkazovém řádku nepotřebuji.

67
Anake

Pokud se můžete vyhnout zápisu do konzole, záleží na tom, jak se vytvoří výstup z programu. Pokud je streamován na standardní výstup, stačí to udělat

$ Eclipse >/dev/null

a neměl by být vytvářen žádný výstup.

Chcete-li potlačit také chybové zprávy:

$ Eclipse >/dev/null 2>&1

Nebo v bash, jednoduše:

$ Eclipse &>/dev/null

Pokud to však udělají jinak, může být problém zastavit psaní v konzole.

pokud je to možné, použijte řešení poskytnuté MuffinStateWide

86
Misery

Můžete vytvořit bash funkci, která bude alias název příkazu a přidat nějaké další funkce k dosažení toho, co požadujete.

Například: řekněme, že chcete spustit příkazový řádek gvim (gui textový editor).

můžete napsat funkci jako je tato:

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

(přidejte tuto funkci do svého .bashrc nebo .bash_aliases soubor, takže je vždy načten)

Vysvětlení:

  • toto bude také alias příkazu gvim s funkcí bash nazvanou gvim (takže když napíšete gvim na bash Prompt, zavolá vaše funkce gvim , místo provedení skutečného příkazu gvim. Vaše funkce pak volá příkaz skutečného gvim (a přijímá jeho pravidelné argy) s některými přidanými funkcemi:

    • přesměruje stdout a stderr na /dev/null (potlačí výstup na terminál)
    • používá & pro spuštění příkazu na pozadí (takže vaše prostředí není blokováno)
    • používá disown k odstranění úlohy na pozadí z prostředí (takže se neobjeví v seznamu aktivních úloh)
    • používá Nohup k odpojení procesu od terminálu (takže můžete ukončit relaci Shell nebo zavřít terminál bez zabití procesu)
12
Corey Goldberg

zkuste přidat --help jako příkazový přepínač a hledat "tichý", což by mělo potlačit výstup, nebo spustit pouze z GUI. a spusťte jej pomocí přepínače nebo najděte způsob, jak jej potlačit skriptem

osobně jsem spustit od Cli získat, že výstup, takže si nejsem jistý jeho možné pro všechny GUI aplikace.

6
MuffinStateWide