Como eu combino stdout e stderr para diferentes shells?


18

Eu sei a resposta para algumas conchas, por exemplo, com cmd.exevocê pode:

some.exe > out.txt 2>&1

Como você consegue o mesmo para outros shells (bash, ksh, tcsh, powershell, etc)?

Respostas:


16

Casca de peixe

Para redirecionar a saída padrão e o erro padrão para o arquivo all_output.txt, você pode escrever:

echo Hello > all_output.txt ^&1

3
se canalizar a saída para o próximo comando, use 2> | em vez disso: eco Olá 2> | menos
Jeffrey04

A sintaxe da tubulação pode ter sido alterada. Meu shell de peixe usa a mesma sintaxe "^ & 1" para ambos.
precisa saber é o seguinte

2>&1também funciona - ^é essencialmente uma abreviação de peixe >2. Note-se que 2>| lessou ^| lesspor si só tubos única stderr; a tubulação tanto o nosso e err, fazer^&1 | less
Beni Cherniavsky-Paskin

Shorthands de sintaxe para redirecionando / tubulação tanto fora e err ainda estão em discussão github.com/fish-shell/fish-shell/issues/110
Beni Cherniavsky-Paskin


2

No Powershell , é exatamente o mesmo:

2> & 1 Envia erros para o processo de obtenção nenhum, PowerShell 2> & 1
          fluxo de saída de sucesso.

(de about_Redirection).

No bashksh e pelo menos eu também sei que funciona dessa maneira.

Parece ser uma convenção comum.

Uma maneira rápida de descobrir isso é abrir a página de manual do shell e pesquisar &1(com /e digitando &1). Isso raramente ocorre em outros contextos.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.