Como ocultar a saída do terminal ao executar um comando?

54

Quando eu lanço certos programas da linha de comando, como o eclipse e o visualizador de documentos, em 11.10, ele gera uma carga de informações que parece inconseqüente.

Além disso, quando são executados em segundo plano, às vezes continuam a produzir saída para o terminal no qual estou trabalhando atualmente, o que é irritante.

Eu gostaria que eles apenas iniciassem e mantenham o material de fundo em segundo plano. Meu raciocínio é que, se você lançar esses programas através da GUI (por exemplo, clicando duas vezes em um ícone), essas mensagens nunca serão mostradas para mim, então não preciso delas na linha de comando.

    
por Anake 25.01.2012 / 12:20

3 respostas

72

Se você pode evitar escrever coisas no console, isso depende de como a saída do programa é criada. Se for transmitido para saída padrão, então é suficiente para fazer

$ eclipse >/dev/null

e nenhuma saída deve ser feita.

Para suprimir também as mensagens de erro:

$ eclipse >/dev/null 2>&1

Ou no bash, simplesmente:

$ eclipse &>/dev/null

Mas se eles fizerem isso de alguma forma diferente, pode ser um problema impedi-lo de escrever no console.

se possível use a solução dada por MuffinStateWide

    
por Misery 25.01.2012 / 13:03
7

Você pode criar uma função bash que aliasse um nome de comando e adicionasse alguma funcionalidade extra para alcançar o que você está pedindo.

Por exemplo: digamos que você queira lançar gvim (um editor de texto gui) na linha de comando.

você poderia escrever uma função como esta:

function gvim () {
    nohup gvim "$@" > /dev/null 2>&1 & disown
}

(adicione essa função ao arquivo .bashrc ou .bash_aliases para que seja sempre carregado)

Explicação:

  • isso alias o comando gvim com uma função bash também chamada gvim (assim, quando você digita gvim em um prompt bash, ele chamará sua função gvim , em vez de executar a% realgvim Sua função chama o comando% realgvim (e aceita seus argumentos regulares), com alguns recursos adicionais:

    • redireciona stdout e stderr para /dev/null (suprime a saída para o terminal)
    • usa & para executar o comando em segundo plano (portanto, seu shell não está bloqueado)
    • usa disown para remover o trabalho em segundo plano do shell (para que ele não apareça na lista de tarefas ativas)
    • usa nohup para desanexar o processo do terminal (para que você possa encerrar sua sessão de shell ou fechar seu terminal sem eliminar o processo)
por Corey Goldberg 16.02.2016 / 17:20
5

tente adicionar --help como uma opção de comando e procure por "quiet", isso deve suprimir a saída ou apenas iniciar a partir da GUI. e iniciar com o switch ou encontrar uma maneira de suprimi-lo via script

pessoalmente eu inicio do cli para obter essa saída, então não tenho certeza se é possível para todos os aplicativos GUI.

    
por MuffinStateWide 25.01.2012 / 13:06