Alguém poderia me explicar a diferença entre >
e >>
ao usar comandos shell?
Exemplo:
ps -aux > log
ps -aux >> log
Parece que o resultado é o mesmo de qualquer maneira.
command-line
whale_steward
fonte
fonte
Respostas:
>
é usado para substituir (" clobber ") um arquivo e>>
é usado para anexar a um arquivo.Assim, quando você usa
ps aux > file
, a saída deps aux
será gravadafile
e, se um arquivo nomeadofile
já estiver presente, seu conteúdo será sobrescrito.E se você usar
ps aux >> file
, a saída deps aux
será gravadafile
e, se o arquivo nomeadofile
já estiver presente, o arquivo agora conterá o conteúdo anterior e também o conteúdo deps aux
, gravado após o conteúdo anterior defile
.fonte
se você escrever no terminal
Colocará a saída de
ps aux
para registrar o arquivo nomeado.então se você colocar
a próxima saída será anexada abaixo da primeira. se você colocar apenas um,
>
ele substituirá o arquivo anterior.fonte
Sim,
>>
acrescenta,>
sempre substitui / destrói o conteúdo anterior.é o mesmo que
Em Wintel é o mesmo para
.bat
,.cmd
e.ps1
roteiros também; herança comum, senso comum.fonte
A diferença mais importante é que
>
faz com que o shell abra um arquivo ou objeto semelhante a um arquivo comO_WRONLY|O_CREAT|O_TRUNC
sinalizadores - o arquivo será criado ou truncado se existir, enquanto>>
abre arquivo comO_WRONLY|O_CREAT|O_APPEND
sinalizadores - o arquivo será criado ou anexado se existir. Isso é evidente se você rastrear chamadas do sistema, por exemplo, comE com
Observe que, nos dois casos, o descritor de arquivo do arquivo aberto é duplicado no descritor de arquivo 1 (stdout) do comando, e isso será herdado por qualquer comando que o shell bifurque.
fonte