Existem várias maneiras de ler e gravar um arquivo no bash. A maneira mais simples é usar operadores> e >>.
- > operador irá sobrescrever os dados existentes
- >> operador irá anexar dados
O formato geral de uso de operadores de redirecionamento é:
Dados> Nome do arquivo
Dados >> Nome do arquivo
Vamos entender o procedimento de gravação de um arquivo com um exemplo:
Como escrever um arquivo usando operadores de redirecionamento
Conforme discutido acima, a abordagem simples e direta de gravar em um arquivo é usar operadores de redirecionamento. Por exemplo, se você deseja alterar o texto de um arquivo já existente, primeiro crie um arquivo de texto com o nome de testfile.txt e escreva qualquer coisa nele:
Salve o arquivo de texto.
Digite o comando mencionado abaixo no terminal:
$ echo Sobrescrevendo o texto existente no arquivo> testfile.txt
Espremer demais pode ser arriscado; portanto, é uma boa prática habilitar o noclobber. Definir noclobber bloquearia qualquer substituição em qualquer arquivo existente.
$ set –o noclobber$ echo Sobrescrevendo o texto existente no arquivo> testfile.txt
Mas se você quiser ignorar o noclobber, use o > | operador em vez de > :
$ echo Sobrescrevendo o texto existente no arquivo> | testfile.txtOu você pode simplesmente desativar o noclobber:
$ set + ou noclobber
Mas este comando tirará a proteção de todos os arquivos.
A saída acima indica que o texto existente foi sobrescrito. Agora, vamos usar o >> operador:
$ echo Anexando texto ao arquivo de texto existente >> testfile.txt
jogou fora nem sempre é ideal para usar, pois você não pode formatar texto usando-o, portanto, use printf no lugar de echo para formatar o texto conforme demonstrado no seguinte comando:
$ printf Bem-vindo n Este é um novo arquivo de texto. > newtestfile.txt
Vamos entender o conceito com um exemplo de script bash. Abra o Vim digitando vim no terminal. Se você não tiver o editor Vim em seu dispositivo, instale-o usando:
$ sudo apt install vimDigite o script:
#! / bin / bashecho Digite seu nome
ler o nome
echo $ name> data_dir.txt
echo Informe sua idade
idade de leitura
echo $ age >> data_dir.txt
cat data_dir.txt
o gato comando é usado para criar e editar os arquivos. Salve o script acima no Vim alternando o modo após pressionar o Esc chave e depois digite : em myscript.sh . Abra o terminal e execute o código:
Como escrever um arquivo usando Heredoc
Se você quiser escrever várias linhas, o método mais fácil é usar o Heredoc. Aqui, o documento, também conhecido como Heredoc, é um bloco de código multiuso. A sintaxe do Heredoc é:
Comando<<[-] Delimiter.
texto / comandos
.
Delimitador
Qualquer string pode ser usada no lugar do Delimitador e - também pode ser usada para remover quaisquer espaços de tabulação no arquivo. Vamos entender usando um exemplo simples:
#! / bin / bashgato<< TEXTFILE
Este é um arquivo de texto.
Este arquivo é criado usando o heredoc.
ARQUIVO DE TEXTO
O comando script cat acima cria um arquivo de texto com o nome de TEXTFILE e grava o texto no arquivo recém-criado. Agora salve o arquivo com o nome de myscript.sh . Inicie o terminal e execute o script.
Como escrever um arquivo usando o comando Tee
Outro método para escrever um arquivo é usar o comando Tee. Como nome que indica este comando pega a entrada e grava em um arquivo e mostra a saída simultaneamente. Por padrão, o comando Tee substituirá os dados existentes.
$ echo Este é algum texto | tee textfile.txt
Para anexar use –a:
$ echo Este é outro texto | tee –a textfile.txt
Para escrever várias linhas, use:
$ echo Adicionando texto a vários arquivos | tee textfile1.txt textfile2.txt textfile3.txt
O comando acima criará três arquivos se eles não existirem e gravará um texto em cada um deles.
Conclusão
Este guia está se concentrando em várias abordagens para gravar em um arquivo em bash com exemplos. No script bash, existem várias maneiras de escrever um arquivo, mas a mais simples é usar operadores de redirecionamento>, >>. Para escrever várias linhas, o heredoc pode ser usado, e se você quiser escrever os mesmos dados em várias linhas, o comando tee é bastante útil.