pt.phhsnews.com


pt.phhsnews.com / Como você executa um comando em segundo plano sem saída, a menos que haja um erro?

Como você executa um comando em segundo plano sem saída, a menos que haja um erro?


Se você é uma pessoa ocupada, então a última coisa que você precisa é ser incomodado com uma enorme quantidade de notificações "inúteis", então como você acalma as coisas? A postagem de perguntas e respostas do SuperUser de hoje tem ótimas respostas para ajudar o leitor a diminuir a quantidade de resultados.

A sessão de Perguntas e Respostas de hoje nos é oferecida por SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas.

A pergunta

Superuser Leitor Xster quer saber como executar um comando em segundo plano sem saída a menos que haja um erro:

Como você suprime a saída de um comando, mas mostra-o se os códigos de saída do comando um erro?

Como você obtém um comando para ser executado em segundo plano sem saída, a menos que haja um erro?

Os colaboradores do SuperUser do Answer

Bob e Maximillian Laumeister têm a resposta para nós. Primeiro, Bob:

Infelizmente, a suposição de que stderr é usado apenas para saída de erro nem sempre está correta. Em vez disso, stderr é usado com freqüência para toda e qualquer saída e diagnóstico interativos (ou seja, saída destinada ao usuário ler em um prompt interativo). (1) wget e dd são exemplos bem conhecidos.

Alguns comandos fornecerão um sinalizador (isto é, -quiet ou -silent ) para suprimir a saída sem erros. Leia suas páginas man para ver se existe uma.

Outra convenção que mantém com mais freqüência é o código de saída , um programa retorna um código de saída quando ele sai. Tipicamente (2) , um código de saída 0 indica sucesso, e qualquer outro código de saída indica um erro.

Com bash , você pode obter o código de saída do último comando da variável $? . Em fish , use a variável $ status . Você pode canalizar stderr para um arquivo temporário e imprimi-lo somente se ocorrer um erro. Por exemplo ( fish ):

Você também pode usar alguns atalhos se não estiver encadeando comandos:

Ou:

Você também pode canalizar stdout para o mesmo buffer usando 2> & 1> / tmp / outputbuffer .

( Nota: Eu não sei peixe , então estou adaptando o conceito para O que posso encontrar em sua documentação. A sintaxe pode estar um pouco errada. Além disso, você pode usar mktemp para gerar um arquivo temporário exclusivo. Execute-o e registre o nome do arquivo em uma variável.)

você precisa executar a coisa toda no plano de fundo de um shell que você também está usando interativamente ao mesmo tempo, então é melhor escrever um script para manipular a ocultação de saída e executar esse script em segundo plano com as técnicas padrão ( peixe ). Heck, você pode colocar algo como a seguinte função em ~ / .config / fish / config.fish :

Chamada com run-silent somecommand & (onde o trailing & faz com que seja executado em segundo plano)

Observe que isso engolirá o código de saída original e despejará stdout e stderr no caso de um falha. Você pode personalizá-lo conforme necessário

(1) Não há garantia de que a saída de erro não apareça na stdout , alguns programas descarregarão toda a saída lá!

(2) Infelizmente, isso nem sempre é o caso. O código de saída é completamente controlado pelo programa e alguns indicarão algumas condições de sucesso com saídas diferentes de zero. Mais uma vez, verifique o manual

Seguido pela resposta de Maximillian Laumeister:

Utilitários Unix enviam mensagens gerais para stdout e mensagens de erro para stderr , portanto, se nós apenas Se você deseja ver mensagens de erro, será suficiente suprimir stdout para que somente stderr obtenha a saída para o console.

A maneira de fazer isso (em ambos bash e fish ) é anexar > / dev / null ao comando. Isso canaliza stdout para o nada, mas stderr (com suas mensagens de erro) ainda chega ao console.

Assim, por exemplo:

O comando echo 1 > / dev / null não imprime nada, porque o normal A saída stdout é suprimida e nada foi gravado em stderr .

O comando man doesnotexist> / dev / null imprime uma mensagem de erro porque man escreve sua mensagem de erro para stderr .


Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.


Como usar suas fotos do iCloud como a proteção de tela do seu Apple TV

Como usar suas fotos do iCloud como a proteção de tela do seu Apple TV

Com o Apple TV, você pode fazer login no iCloud para poder ver suas fotos armazenadas lá. É fácil usar essas fotos como protetor de tela ou uma apresentação de slides, que você pode exibir orgulhosamente na sua TV. Você pode estar bem familiarizado com o compartilhamento de fotos do iCloud. Basicamente, se você possui um dispositivo Apple e faz backup de suas fotos no iCloud, qualquer coisa que você armazene lá será propagada para qualquer outro dispositivo da Apple logado na mesma conta.

(how-to)

Como alterar temas no Samsung Galaxy Devices

Como alterar temas no Samsung Galaxy Devices

Com seus aparelhos modernos, a Samsung fez muito para remover o estigma “feio” que foi anexado à sua interface de usuário do Touchwiz desde…bem, o alvorecer do Touchwiz. Mas se você ainda não gostar, você pode alterá-lo. O Touchwiz é geralmente mais limpo e menos intrusivo, mas ainda assim pode não atender ao gosto individual de cada um.

(how-to)