¿Cómo puedo ingresar los siguientes contenidos en un archivo?
Hi
abcd
Intenté usar echo "Hi\nabcd" >> ab.txt
, pero en el archivo está escrito tal cual ( \n
está incluido, en lugar de una nueva línea)
Respuesta1
Tienes que decir echo
que se respeten las secuencias de escape.
echo -e "Hi\nabcd" >> ab.txt
Respuesta2
Respuesta3
Yo sugeriría usarcaracterística de bash shell llamadaAquí documento. Parece la forma más elegante de lograr lo que describe. Lo más importante es que el contenido de varias líneas se ve exactamente igual que lo tendría en el archivo de salida (a diferencia de \n
cadenas largas, separadas e ilegibles).
cat > ab.txt <<EOL
Hi
abcd
EOL
Aquí EOL
está el marcador que indica qué shell debe buscar para encontrar el final delaquí documento. Puedes elegir arbitrariamente una palabra que te permita elegir algo que no entre en conflicto con laaquí documentoEl contenido en sí. Lo bueno es que podrías tener un caparazón ${VARIABLES}
que será sustituido. Si eso no es deseado, siempre puedes encerrar la palabra marcadora de apertura (¡sólo la de apertura!) entre comillas ( '
) para evitarlo.
Personalmente uso mucho esto en los scripts de inicio para crear pequeños archivos de configuración al configurar mi entorno, algo como:
cat > ~/.screenrc <<END_OF_HEREDOC_MARKER
defscrollback ${MAX_LINES}
END_OF_HEREDOC_MARKER
Respuesta4
También puedes jugar juegos con citas:
% echo 'Hi
> abcd' >> ab.txt
Escribe eso en bash presionando "Entrar" después de "Hola". Bash usa '>' como símbolo de continuación del comando para mí. Por alguna razón no pude escapar de una devolución individual con una barra invertida.