Você precisa dizer echo
para honrar sequências de escape.
echo -e "Hi\nabcd" >> ab.txt
Como posso inserir o seguinte conteúdo em um arquivo:
Hi
abcd
Eu tentei usar echo "Hi\nabcd" >> ab.txt
, mas no arquivo está escrito como está (o \n
está incluído, em vez de uma nova linha)
Você precisa dizer echo
para honrar sequências de escape.
echo -e "Hi\nabcd" >> ab.txt
Você também pode fazer cat > file
, digitar e pressionar Ctrl-D quando terminar.
Você também pode jogar com cotações:
% echo 'Hi
> abcd' >> ab.txt
Você digita isso no bash pressionando "Enter" depois de "Hi". Bash usa '>' como seu prompt de continuação de comando para mim. Eu não poderia escapar de um retorno individual com uma barra invertida por algum motivo.
Eu sugeriria usar o bash recurso de shell chamado aqui documento . Parece a forma mais elegante de conseguir o que você descreve. O mais importante é que o conteúdo de múltiplas linhas é exatamente igual ao que você teria no arquivo de saída (em oposição às cadeias separadas ilegíveis, longas, \n
).
cat > ab.txt <<EOL
Hi
abcd
EOL
O EOL
aqui é o marcador que informa o que o shell deve procurar para encontrar o fim do documento aqui . Você pode escolher arbitrariamente uma palavra que lhe permite escolher algo que não conflituará coincidentemente com o próprio conteúdo do documento . O bom é que você poderia ter o shell ${VARIABLES}
, que será substituído. Se isso é de alguma forma indesejado, você pode sempre quebrar a palavra do marcador de abertura (apenas a abertura!) Com aspas ( '
) para evitar isso.
Eu pessoalmente uso muito isso nos scripts de init para criar pequenos arquivos de configuração ao configurar meu ambiente, algo como:
cat > ~/.screenrc <<END_OF_HEREDOC_MARKER
defscrollback ${MAX_LINES}
END_OF_HEREDOC_MARKER
cp /dev/tty file
pressione enter. então comece a digitar. continue digitando o quanto quiser. Quando você tiver preenchido todos os tipos de digitação, digite sua string EOF tty. isso geralmente é enviado com CTRL+D
. agora, talvez, aperte mais uma vez. você está feito.
Tags echo escape-characters