Ele redireciona o stdout do programa antes de >>
e o anexa ao arquivo fornecido depois.
Eu me deparei com um comando agora dado abaixo -
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
Pelo que eu posso imaginar, é provavelmente usado para confirmar as alterações no .bash_profile, mas para que exatamente ele é usado?
>>
? Com >>
, você acrescenta a saída de um comando a um arquivo.
Seu comando de exemplo consiste em várias partes, basicamente:
command >> filename
Assim, a saída de command
seria anexada a filename
.
echo
? No seu caso específico, o comando echo "…"
envia seus argumentos de entrada para "stdout", que é o chamado "descritor de saída padrão". Os argumentos de entrada para echo
são seguidos por uma nova linha ( \n
), para que você receba uma quebra de linha.
Aqui, um "descritor de saída padrão" nada mais é do que um fluxo de saída que é mostrado no seu shell quando você executa um comando. (Ou seja, quando você digita echo foo
e pressiona Enter, foo\n
é a saída real do comando echo
, que é mostrado pelo seu shell como foo
seguido por uma nova linha.)
Basicamente tudo o que escreve na sua linha de comando está usando stdout. Existe também outro descritor chamado “stderr” que é normalmente usado para mensagens de erro. Ele também será impresso como stdout, então, às vezes, eles poderiam ser intercalados. E há um descritor stdin que é usado para entrada. Consulte este artigo para obter mais informações.
Você sempre pode redirecionar stdout para um descritor de arquivo, o que pode ser feito com um desses operadores:
>
redireciona para um descritor de arquivo. Ele cria o arquivo se ele não existir ou, se já existir, trunca o arquivo antes de ser gravado. O arquivo será então sobrescrito com stdout.
>>
é anexado a um descritor de arquivo. Cria o arquivo se não existir.
Você também pode redirecionar o stderr usando 2>
ou 2>>
de maneira semelhante. Ou você pode combinar stderr e stdout em um arquivo: 2>&1
faz isso. Para mais informações sobre o redirecionamento e mais alguns exemplos, leia este pequeno tutorial .
Geralmente, você pode tentar explicahell.com , que lhe dará orientação visual e informações sobre um determinado comando shell.
Para os TLDR pessoas que só gostam de ver um exemplo;
A saída padrão (não erros) do comando antes do > > será adicionado ao final do arquivo com o nome.
Então, se o arquivo "flintstones.txt" contiver;
Fred
Barney
echo Dino >> flintstones.txt
resultará na adição do 'Dino' ao final do arquivo;
Fred
Barney
Dino
Novamente, se você fizer
> somefile.txt
Todo o conteúdo do arquivo será apagado.