Eu sei disso:
$ command 2>> error
$ command 1>> output
Existe alguma maneira de eu enviar o stderr para o arquivo de erro e o stdout para o arquivo de saída na mesma linha do bash?
Eu sei disso:
$ command 2>> error
$ command 1>> output
Existe alguma maneira de eu enviar o stderr para o arquivo de erro e o stdout para o arquivo de saída na mesma linha do bash?
Respostas:
Basta adicioná-los em uma linha command 2>> error 1>> output
No entanto, observe que >>
é para anexar se o arquivo já tiver dados. Visto que, >
substituirá todos os dados existentes no arquivo.
Então, command 2> error 1> output
se você não deseja anexar.
Apenas para concluir, você pode escrever 1>
como apenas >
uma vez que o descritor de arquivo padrão é a saída. assim 1>
e >
é a mesma coisa.
Então, command 2> error 1> output
torna-se,command 2> error > output
command &2>err.log
, acho que estou com sintaxias totalmente confusas. (Um link para uma resposta adequada de todos os festança tubulação-ismos poderia estar em ordem)
command &2>err.log
não é muito legítimo - o e comercial nessa sintaxe é usado para o descritor de arquivo como destino, por exemplo command 1>&2
, redirecionaria o stdout para o stderr.
Tente o seguinte:
your_command 2>stderr.log 1>stdout.log
Os números 0
através 9
são descritores de arquivo no bash.
0
significa entrada padrão, 1
significa saída padrão, 2
significa erro padrão. 3
através 9
são de reposição para qualquer outro uso temporário.
Qualquer descritor de arquivo pode ser redirecionado para um arquivo ou para outro descritor de arquivo usando o operador >
. Em vez disso, você pode usar o operador >>
para anexar a um arquivo em vez de criar um vazio.
Uso:
file_descriptor > filename
file_descriptor > &file_descriptor
Por favor, consulte Bash-Scripting Guia Avançado: Capítulo 20. I / O redirecionamento .
Curtiu isso:
$ command >>output 2>>error
Ou se você gosta de misturar saídas (stdout e stderr) em um único arquivo, pode usar:
command > merged-output.txt 2>&1
A saída de vários comandos pode ser redirecionada. Isso funciona para a linha de comando ou de maneira mais útil em um script bash. O -s
direciona o prompt de senha para a tela.
Os cmds hereblock stdout / stderr são enviados para arquivos separados e nada para exibir.
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
Os cmds de herança stdout / stderr são enviados para um único arquivo e exibidos.
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
Os cmds hereblock stdout / stderr são enviados para arquivos separados e stdout para exibição.
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
Dependendo de quem você é (whoami) e do nome de usuário, uma senha pode ou não ser necessária.
1>
pode ser escrita como>