Pergunta

Eu tenho um script que executa um programa com parâmetros. Esse programa gera algum status (fazer isso, fazer isso ...). Não há opção para este programa para ficar quieto. Como posso impedir que o script de exibir alguma coisa?

Eu estou procurando algo como janelas "echo off".

Foi útil?

Solução

O seguinte padrão de saída envia para o dispositivo nulo (balde bits).

scriptname >/dev/null

e se você também quer que as mensagens de erro para ser enviado para lá, use uma das (o primeiro pode não funcionar em todas as conchas):

scriptname &>/dev/null
scriptname >/dev/null 2>&1
scriptname >/dev/null 2>/dev/null

e, se você quer gravar as mensagens, mas não vê-los, substitua /dev/null com um arquivo real, tais como:

scriptname &>scriptname.out

Para completar, no Windows cmd.exe (onde "nul" é o equivalente de "/ dev / null"), é:

scriptname >nul 2>nul

Outras dicas

Algo como

script > /dev/null 2>&1

Isso vai impedir saída padrão e saída de erro, redirecionando-los tanto para /dev/null.

Tente

: $(yourcommand)

: é a abreviação de "não fazer nada".

$() é apenas o seu comando.

Uma alternativa que pode caber em algumas situações é atribuir o resultado de um comando a uma variável:

$ DUMMY=$( grep root /etc/passwd 2>&1 )
$ echo $?
0
$ DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
1

Desde Bash e outros intérpretes POSIX de linha de comando não considera atribuições de variáveis ??como um comando, código de retorno do atual comando é respeitado.

Nota: assignement com a palavra chave typeset ou declare é considerado como um comando, então o código de retorno avaliado no caso é o próprio assignement e não o comando executado na sub-shell:

$ declare DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
0

Como andynormancx uso pós isto: (se você estiver trabalhando em um ambiente Unix)

scriptname > /dev/null

ou você pode usar isto: (se você estiver trabalhando em um ambiente Windows)

scriptname > nul

Dê uma olhada neste exemplo de A Documentação do Linux projeto :

3,6 Amostra: stderr e stdout 2 arquivo

Isto irá colocar cada saída de um programa para um arquivo. Isso às vezes é adequado para entradas cron, se você quiser um comando para passar em silêncio absoluto.

     rm -f $(find / -name core) &> /dev/null 

Dito isso, você pode usar esse redirecionamento simples:

/path/to/command &>/dev/null

Em que você script você pode adicionar o seguinte para as linhas que você sabe vai dar uma saída:

some_code 2>>/dev/null

Ou então você também pode tentar

some_code >>/dev/null
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top