bem ... isso é incrível. Eu reconheci> um pouco antes de >>.
Jokester
Respostas:
411
Um pouco de compreensão de como o * nix pipes funciona ajudaria.
Em suma, o >>operador de redirecionamento anexará linhas ao final do arquivo especificado, sendo que o único maior que >será vazio e substituirá o arquivo.
@BrDaHa Como também posso redirecionar o stderr com> | também? Eu tentei &> | mas não funcionou.
Tu Bui
A @TuBui não sabe por que não está funcionando para você. Na minha máquina &>| filefunciona. Qual shell e versão você está usando? @stimulate para zsh ambos devem trabalhar , para a festança é única>|
Griddo
@Griddo meu shell é bash versão 4.3.48 (1) -release. echo "aaa" &>| test.txtresulta em erro -bash: syntax error near unexpected token |. Meu noclobber está ativado.
Tu Bui
1
@TuBui Aparentemente, eu não estava testando corretamente. Também não está funcionando para mim ... no entanto, a documentação não afirma que deveria ser possível de qualquer maneira. Você provavelmente precisa seguir echo "aaa" >| test.txt 2>&1ou usar outro shell.
Griddo 23/05/19
40
Apesar NylonSmileda resposta , que é "meio que" correta. Não foi possível sobrescrever arquivos dessa maneira.
echo "i know about Pipes, girlfriend" > thatAnswer
zsh: file exists: thatAnswer
para resolver meus problemas .. eu tive que usar ... >!, la la ..
Apenas observe que, se você deseja redirecionar std :: cerr e std :: cout para um arquivo enquanto estiver com o noclobber definido (ou seja set -o noclobber), poderá usar o código:
Respostas:
Um pouco de compreensão de como o * nix pipes funciona ajudaria.
Em suma, o
>>
operador de redirecionamento anexará linhas ao final do arquivo especificado, sendo que o único maior que>
será vazio e substituirá o arquivo.fonte
-bash: TheAccount.txt: cannot overwrite existing file
.>
e>>
são os operadores de redirecionamento de saída . O operador do tubo é|
.>|
para forçar a substituição existenteNo Bash, se você definiu noclobber a la
set -o noclobber
, usa a sintaxe>|
Por exemplo:
echo "some text" >| existing_file
Isso também funciona se o arquivo ainda não existir
Verifique se o noclobber está definido com:
set -o | grep noclobber
Para uma explicação mais detalhada sobre esse tipo especial de operador, consulte esta postagem
Para uma lista mais completa de operadores de redirecionamento, consulte esta postagem
fonte
&>| file
funciona. Qual shell e versão você está usando? @stimulate para zsh ambos devem trabalhar , para a festança é única>|
echo "aaa" &>| test.txt
resulta em erro-bash: syntax error near unexpected token |
. Meu noclobber está ativado.echo "aaa" >| test.txt 2>&1
ou usar outro shell.Apesar
NylonSmile
da resposta , que é "meio que" correta. Não foi possível sobrescrever arquivos dessa maneira.echo "i know about Pipes, girlfriend" > thatAnswer
para resolver meus problemas .. eu tive que usar ...
>!
, la la ..Obviamente, tenha cuidado com isso ...
fonte
NOCLOBBER
definida. Usesetopt clobber
para restaurar o comportamento padrão.Se o seu ambiente não permitir a substituição
>
, use pipe|
e,tee
em seguida, da seguinte maneira:Observe que isso também será impresso no stdout. Caso isso não seja desejado, você pode redirecionar a saída da
/dev/null
seguinte maneira:fonte
fonte
Apenas observe que, se você deseja redirecionar std :: cerr e std :: cout para um arquivo enquanto estiver com o noclobber definido (ou seja
set -o noclobber
), poderá usar o código:Mais informações sobre isso podem ser vistas em https://stackoverflow.com/a/876242 .
Também a pergunta desta resposta de @ TuBui sobre a resposta @BrDaHa fornecida acima em 9 de agosto de 18 às 9:34.
fonte
Para substituir o conteúdo de um arquivo para outro arquivo. use gato, por exemplo.
Agora, para substituir o foobar, podemos usar um comando cat como abaixo
fonte
>>
éSe você possui uma saída que pode ter erros, convém usar um e comercial e maior que, da seguinte maneira:
my_task &> 'Users/Name/Desktop/task_output.log'
isso redirecionará stderr e stdout para o arquivo de log (em vez de apenas stdout).fonte