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> outputse 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> outputtorna-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.lognã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 0através 9são descritores de arquivo no bash.
0significa entrada padrão, 1significa saída padrão, 2significa erro padrão. 3através 9sã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 -sdireciona 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>