El comando echo agrega automáticamente una nueva línea al final. Eso es genial.
Pero, ¿qué sucede si desea mostrar solo una nueva línea vacía? ¿O si desea generar algo que contenga una nueva línea?
La buena noticia es que echo te permite usar el carácter de nueva línea \n
para imprimir una nueva línea dentro de la misma línea de salida si usa -e
opción:
echo -e "Name\nAddress\nPhone Number"
Si ejecuta el comando anterior, obtendrá este resultado:
Name
Address
Phone Number
Eso es bueno, ¿verdad? Echémosle un vistazo más detallado.
Mostrar nueva línea con la bandera -e del comando echo (recomendado)
Una nueva línea es un término que usamos para especificar que la línea actual ha terminado y el texto continuará desde la línea debajo de la actual. En la mayoría de los sistemas tipo UNIX, \n
se utiliza para especificar una nueva línea. Se conoce como carácter de nueva línea.
El comando echo, por defecto, deshabilita la interpretación de los escapes de barra invertida. Entonces, si intenta mostrar una nueva línea usando la secuencia de escape '\n', notará un problema.
$ echo Hello\nworld
Hellonworld
$ echo 'Hello\nworld'
Hello\nworld
Encerrar texto entre comillas simples como un literal de cadena tampoco funciona.
Ese no era un resultado esperado. Para imprimir realmente una nueva línea, puede usar el indicador '-e' para decirle al comando de eco que desea habilitar la interpretación de los escapes de barra invertida.
$ echo -e 'Hello\nworld'
Hello
world
Genial, eso es lo que estás buscando.
Permítanme otras formas de mostrar el carácter de nueva línea.
echo de una variable que contiene una nueva línea
Puede almacenar una cadena en una variable bash y luego repetirla usando el indicador '-e'.
$ str="Hello\nworld"
$ echo -e $str
Hello
world
Utilice el carácter '$' en lugar de la bandera -e
El símbolo del dólar, '$' se llama el carácter de "expansión" en bash. Este es el carácter que usé en el ejemplo anterior para referirme al valor de una variable en shell.
Si observa detenidamente el fragmento a continuación, se dará cuenta de que el carácter de expansión, en este caso, actúa para contener un valor temporal.
$ echo Hello$'\n'world
Hello
world
O bien, puede usar la cadena completa como una 'variable temporal':
$ echo $'Hello\nworld'
Hello
world
Preferiría usar -e
bandera, sin embargo.
echo your echo para imprimir algo con nueva línea
Cuando repite un fragmento de texto, el comando echo agregará automáticamente una nueva línea (y así es como puede evitarlo) al final de su texto.
Esto significa que puede encadenar varios comandos de eco para generar una nueva línea.
$ echo Hello; echo world
Hello
world
Utilice printf para imprimir una nueva línea en Bash shell
printf es otra herramienta de línea de comandos que esencialmente imprime texto en la terminal, pero también le permite formatear su texto.
El uso es muy simple y similar a echo pero un poco más confiable y consistente.
$ printf 'Hello\nworld\n'
Hello
world
Como era de esperar, tiene una nueva línea sin usar ninguna bandera.
Conclusión
Personalmente, preferiría quedarme con el indicador -e o usar el comando printf para mostrar las nuevas líneas en la salida. Te recomiendo que hagas lo mismo, pero siéntete libre de experimentar.