Mais
Como anexar a saída ao fim de um ficheiro de texto
Como é que adiciono a saída de um comando ao fim de um ficheiro de texto?
412
10
Como é que adiciono a saída de um comando ao fim de um ficheiro de texto?
Utilize
>>
em vez de>
quando dirigir a saída para um ficheiro:Se
file_to_append_to
não existir, será criado.Exemplo:
Para
apender
um arquivo utilize>>
Para "sobreescrever" um arquivo utilize
>
Pode utilizar o >> operador. Isto irá anexar dados de um comando ao fim de um ficheiro de texto.
Para testar esta tentativa, tente correr:
Faça isto um par de vezes e depois corra:
Você'verá que o seu texto foi anexado várias vezes ao ficheiro textfile.txt.
Utilize
command >> file_to_append_to
para anexar a um arquivo.Por exemplo `echo "Hello"
CAUTION: se você utilizar apenas um único
>
você irá sobrescrever completamente o conteúdo do arquivo. Para garantir que isso não'nunca aconteça, você pode adicionarset -o noclobber
ao seu.bashrc
.Isso garante que se você acidentalmente digitar
command > file_to_append_to
a um arquivo existente, ele irá alertá-lo de que o arquivo já existe. Exemplo de mensagem de erro:file exists': testFile.txt
Assim, quando você utiliza
>
isso só lhe permitirá criar um novo arquivo, e não sobrescrever um arquivo existente.Utilize o operador
>>
para anexar texto a um ficheiro.para toda a questão:
Usar tee com a opção -a (--append) permite anexar a vários arquivos ao mesmo tempo e também usar **sudo*** (muito útil ao anexar a arquivos protegidos). Além disso, é interessante se você precisar usar outros shells além do bash, pois nem todos os shells suportam o > e >> operadores
Este [fio][1] tem boas respostas sobre o tee
[1]: https://askubuntu.com/questions/408340/is-there-any-significance-to-using-tee
Eu utilizaria printf ao invés de echo porque ele's [mais confiável][1] e formatação de processos como a nova linha `\n' propriamente dita.
Este exemplo produz uma saída semelhante à echo em exemplos anteriores:
No entanto, se você substituísse printf por echo neste exemplo, echo trataria \n como uma corda, ignorando assim a intenção
[1]: https://unix.stackexchange.com/questions/65803/why-is-printf-better-than-echo
Por exemplo, o seu ficheiro contém :
se você quiser anexar no final do arquivo, então ---->lembre-se dos espaços entre 'text'
E para sobrescrever o conteúdo do ficheiro :
I'sugeriria que fizesse duas coisas:
>>
no seu script shell para anexar conteúdo a um arquivo em particular. O nome do arquivo pode ser corrigido ou utilizando algum padrão.Configure um cronjob de hora em hora para acionar o script da shell