Uma das tarefas mais comuns ao escrever scripts Bash ou trabalhar na linha de comando do Linux é ler e gravar arquivos.
Este artigo explica como escrever texto em um arquivo no Bash, usando os operadores de redirecionamento e tee
comando.
Gravando em um arquivo usando operadores de redirecionamento #
No Bash, o redirecionamento da saída permite capturar a saída de um comando e gravá-la em um arquivo.
O formato geral para redirecionar e gravar a saída em um arquivo é o seguinte:
saída> saída do nome do arquivo >> nome do arquivo
- O
>
operador de redirecionamento grava a saída em um determinado arquivo. Se o arquivo existir, ele será truncado para comprimento zero. Caso contrário, o arquivo é criado. Seja extremamente cuidadoso ao usar este operador, pois você pode sobrescrever um arquivo importante. - O
>>
operador de redirecionamento anexa a saída a um determinado arquivo. O arquivo é criado se não existir.
Você precisa ter permissões de gravação para o arquivo. Caso contrário, você receberá um erro de permissão negada.
Aqui está um exemplo simples que mostra como redirecionar a saída do eco
comando para um arquivo:
echo "isto é uma linha"> arquivo.TXT
Para evitar a substituição de arquivos existentes, habilite a opção “noclobber” com o definir
construídas em:
set -o noclobber
echo "isto é uma linha"> arquivo.TXT
bash: arquivo.txt: não é possível sobrescrever o arquivo existente
O > |
operador permite que você substitua a opção “noclobber” do Bash:
set -o noclobber
echo "esta é uma linha"> | Arquivo.TXT
O >>
operador anexa a saída ao final do arquivo, em vez de sobrescrever o arquivo:
echo "esta é uma linha" >> arquivo.TXT
Use o printf
comando para criar uma saída complexa:
printf "Olá, sou% s.\ n "$ USER> arquivo.TXT
Se você quiser gravar várias linhas em um arquivo, use o redirecionamento de documento Aqui (Heredoc).
Por exemplo, você pode passar o conteúdo para o gato
comando e gravá-lo em um arquivo:
gato << EOF > Arquivo.txt O diretório de trabalho atual é: $ PWD Você está logado como $ (whoami) EOF
Para acrescentar as linhas, mude >
com >>
antes do nome do arquivo:
gato << EOF >> arquivo.txt O diretório de trabalho atual é: $ PWD Você está logado como $ (whoami) EOF
Você pode gravar a saída de qualquer comando em um arquivo:
data + "Ano:% Y, Mês:% m, Dia:% d"> arquivo.TXT
A saída do data
o comando será escrito no arquivo.
Gravando em um arquivo usando o tee
Comando #
O tee
o comando lê a entrada padrão e grava na saída padrão e em um ou mais arquivos simultaneamente.
echo "esta é uma linha" | arquivo tee.TXT
O tee
o comportamento padrão do comando é substituir o arquivo especificado, o mesmo que o >
operador. Para anexar a saída ao arquivo, invoque o comando com o -uma
(--acrescentar
) opção:
echo "esta é uma linha" | tee -a arquivo.TXT
Se você não quer o tee
para escrever na saída padrão, você pode redirecioná-lo para / dev / null
:
echo "esta é uma linha" | arquivo tee.txt> / dev / null
Para escrever o texto em mais de um arquivo, especifique os arquivos como argumentos para o tee
comando:
echo "esta é uma linha" | tee file_1.arquivo txt_2.txt file_3.TXT
Outra vantagem do tee
comando é que você pode usá-lo em conjunto com sudo
e escrever em arquivos pertencentes a outros usuários. Para anexar texto a um arquivo para o qual você não tem permissão de gravação, adicione sudo
antes tee
:
echo "esta é uma linha" | arquivo sudo tee.TXT
O eco
a saída do comando é passada como entrada para o tee
, que eleva as permissões sudo e grava o texto no arquivo.
Conclusão #
No Linux, para escrever texto em um arquivo, use o >
e >>
operadores de redirecionamento ou o tee
comando.
Se você tiver alguma dúvida ou feedback, fique à vontade para deixar um comentário.