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.