Como principiante, cuando comienza a trabajar con scripts de Bash, el primer comando que probablemente aprenda y use es echo dominio. Puede pensar en el comando bash echo algo similar a print comando en otros lenguajes de programación. El echo El comando es un bash incorporado y su propósito es imprimir la salida en la salida estándar (es decir, Terminal).
En este artículo, le mostraré qué es el comando bash echo y cómo usarlo en sus scripts de shell. Antes de entrar en materia, veamos la diferencia entre un Bash incorporado y un comando externo.
Eco incorporado de Bash vs comando de eco externo
En Linux y otros sistemas similares a Unix, algunos comandos se proporcionan como comandos incorporados y externos. Por ejemplo, /bin/echo es un comando externo que tiene el mismo nombre que el echo bash integrado.
Cuando llamamos a un comando que existe tanto como un comando interno como externo, generalmente el comando incorporado se ejecuta de forma predeterminada. Porque el orden de precedencia para los nombres de los comandos es alias , luego function , luego builtin y luego comando externo en los directorios listados en $PATH en orden.
Si desea forzar un comando externo que está disponible como comando interno y externo, simplemente use su ruta completa.
Para poner esto claramente, el siguiente comando llama al bash incorporado:
$ echo <some-text>
Y las siguientes llamadas externas echo comando:
$ /bin/echo <some-text>
Para averiguar si un comando es un comando interno o externo, podemos usar type comando:
$ type echo echo is a shell builtin
Para mostrar todas las ubicaciones que contienen el ejecutable especificado, use -a bandera:
$ type -a echo echo is a shell builtin echo is /usr/bin/echo
Para más detalles sobre type uso de comandos, consulte el siguiente enlace:
- Tutorial de comandos de tipo con ejemplos para principiantes
A lo largo de esta guía, discutiremos el echo incorporado de bash comando, no el externo.
Mostrar la ayuda del comando bash echo
Casi todos los comandos de Linux tienen una página de manual o una sección de ayuda para comprender cómo usar ese comando. El manual de ayuda de echo el comando está incluido en la página del manual de Bash
Para acceder a la página man de bash comando, ejecutar:
$ man bash
Ahora, escriba /echo y presiona n hasta que vea la sección de ayuda de echo comando.
Alternativamente, puede usar el siguiente comando de una sola línea para mostrar la sección de ayuda de echo comando:
$ man bash | less --pattern='^ *echo +\['
Estructura del comando echo
El echo El comando acepta tres argumentos opcionales y el texto que se imprimirá en la salida estándar.
echo [-neE] [arg ...] -n → Do not append a new line -e → enable interpretation of backslash escapes -E → disable the interpretation of backslash escapes (default)
Omitamos los tres argumentos opcionales por ahora y veamos cómo usar echo para imprimir un texto en la salida estándar (Terminal).
Puede ejecutar el siguiente fragmento de código directamente en la terminal o crear un archivo de secuencia de comandos y luego ejecutarlo. Voy a ejecutarlo directamente en la Terminal:
$ echo "Hello World" Hello World
Echa un vistazo al ejemplo anterior. Es el tradicional hello world programa que ejecutamos cada vez que aprendemos un nuevo idioma y lo ejecutamos como el primer código. El echo el comando aquí acepta "hello world" text como argumento y lo imprime en la terminal (Stdout).
Cómo suprimir el carácter de nueva línea
El comportamiento predeterminado de bash echo comando es, agregará automáticamente una nueva línea (\n ). Ejecute el mismo hello world programe de nuevo y observe que el aviso del terminal se mostrará en una nueva línea.
$ echo "Hello world" Hello world
Ahora, si desea suprimir este comportamiento, puede usar el "-n" marca que suprimirá la nueva línea y el aviso del terminal se imprimirá en la misma línea que se muestra a continuación.
$ echo -n "Hello world" Hello world
Qué sucede cuando no se pasa ningún argumento
Cuando no se pasa ningún argumento al comando echo, el comando no fallará pero devolverá una nueva línea vacía. Inicie su terminal y ejecute "echo" y verá que simplemente imprime una línea vacía y sale.
$ echo
$ echo $?
0
Puede anular este comportamiento agregando "-n" marca que no imprimirá una nueva línea incluso si no se pasa ningún argumento.
$ echo -n
¿Dónde será útil esto? Usted podría preguntarse. Cuando desee algunas líneas vacías entre sus salidas, puede usar echo sin argumentos.
Trabajar con variables y comandos
El echo El comando interpretará las variables de shell o definidas por el usuario que se pasan como argumento e imprimirá el valor. Echa un vistazo a los siguientes ejemplos.
Primero, la variable env "SHELL" se pasa al echo comando e imprime el valor de la variable.
# Environmental Variable:
$ echo " I am currently using ${SHELL}"
I am currently using /bin/bash
En segundo lugar, la variable definida por el usuario "NAME" se pasa al echo comando y el valor se imprime en el terminal.
# User Defined Variable:
$ NAME="PoP_OS"
$ echo "I am using ${NAME}"
I am using PoP_OS
También puede ejecutar comandos dentro de los argumentos. Eche un vistazo al siguiente ejemplo donde "uname -r" el comando se pasa como argumento y el comando se interpreta y se imprime la salida.
$ echo "KERNEL_VERSION=$(uname -r)" KERNEL_VERSION=5.11.0-7620-generic
Impacto del uso de comillas simples y dobles
En todos los ejemplos anteriores, es posible que haya notado que he estado usando comillas dobles alrededor de los argumentos. Entonces, ¿qué sucede cuando el argumento no está entre comillas? Echo Command no fallará y obtendrá el mismo resultado.
Echa un vistazo al siguiente ejemplo. Estoy ejecutando el mismo comando que usé en la sección anterior pero sin comillas e imprime la salida sin ningún error.
$ echo I am using ${NAME}
I am using Pop_OS
Como buena práctica, siempre incluya los argumentos entre comillas.
Si el argumento es texto sin formato, puede usar comillas simples o dobles. Pero si desea ejecutar cualquier comando o expandir cualquier variable en el argumento, debe usar comillas dobles, no comillas simples.
La comilla simple evitará que se ejecute cualquier comando o que se expanda una variable. Simplemente tratará todo el argumento como texto sin formato.
Mira el siguiente ejemplo. Cuando encierro el argumento entre comillas simples, la variable "NAME" no se interpreta ni se trata como texto.
# SINGLE QUOTES
$ echo 'I am using ${NAME}'
I am using ${NAME}
# DOUBLE QUOTES
$ echo "I am using Linux ${NAME}"
I am using Linux PoP_OS
Redireccionamiento de salida y tubería
Como se indicó anteriormente, el echo El comando imprime la salida en la salida estándar (terminal) de forma predeterminada. Cuando escribe scripts de shell, puede terminar en una situación para almacenar la salida del echo comando a un archivo. Puedes hacer esto usando la redirección bash operador.
$ echo "Welcome to OSTechNix" > /tmp/op.log
$ cat /tmp/op.log Welcome to OSTechNix
Lectura sugerida:
- Redireccionamiento de Bash explicado con ejemplos
- Tutorial de Bash Heredoc para principiantes
También puede enviar la salida del echo comando a la pipe para su posterior procesamiento.
$ echo "I am using ${NAME}"
I am using PoP_OS $ echo "I am using ${NAME}" | grep -i -o POP
PoP
Cadena de varias líneas
Su argumento a veces puede generar más de una línea. Puede encerrar el argumento de varias líneas entre comillas dobles para imprimir el resultado teniendo en cuenta las nuevas líneas, tabulaciones y espacios.
$ echo "This is Line 1
This is Line 2
This is Line 3"
En algunos casos, aunque su argumento se pasa como una cadena de varias líneas, es posible que desee imprimirlo como una sola línea. En tales casos, use el "\" símbolo al final de cada línea, por lo que la siguiente línea será una continuación de la línea anterior.
$ echo "I am running \ the echo command \ again"
Salida de muestra:
I am running the echo command again
Esto no es exclusivo de bash echo dominio. Puede usar este enfoque para generar comandos muy grandes en varias líneas para una mejor legibilidad.
La barra invertida escapa a la interpretación
El echo El comando acepta muchos caracteres escapados como argumentos. Para que estos caracteres especiales sean reconocidos por el comando echo, el "-e" se debe pasar la bandera. Puede obtener la lista de caracteres especiales admitidos en echo página man del comando.
No utilizará todos los caracteres especiales en su vida cotidiana. En su mayoría, utilizará caracteres de nueva línea, tabuladores y caracteres de escape de barra invertida.
Carácter de nueva línea - \n
Se agregará una nueva línea cuando pase \n al echo dominio. También puede pasar múltiples \n que agregarán más líneas en consecuencia.
$ echo -e "This is the first line\nThis is the second Line\nThis is the third line"
Salida de muestra:
This is the first line This is the second Line This is the third line
Pestaña horizontal - \t
Cuando \t se utiliza, agregará espacios de tabulación. También puede combinar varios caracteres de escape como hice a continuación.
$ echo -e "Enter the U_NAME\t:\n" Enter the U_NAME :
Pestaña vertical - \v
Para crear pestañas verticalmente, use \v .
$ echo -e "Enter the username\vEnter the password"
Enter the username
Enter the password Suprimir salida - \c
Cuando \c se usa, cualquier cosa que viene después de \c será suprimido.
$ echo -e "I am using \cCosmic Desktop" I am using
Retorno de carro - \r
Cuando \r se usa, el cursor se restablece al primer carácter y lo que viene después de \r se imprime reemplazando los caracteres existentes.
$ echo -e "I use Arch, \rBtw" Btwse Arch,
Deshabilitar la barra invertida escapa a la interpretación
El comportamiento predeterminado de echo comando es que tratará los caracteres especiales como texto sin formato a menos que -e se pasa la bandera. Se puede lograr el mismo comportamiento usando -E bandera.
Te mostraré un ejemplo.
Déjame ejecutar echo comando sin banderas:
$ echo "Welcome to OSTechNix \nblog" Welcome to OSTechNix \nblog
Luego, ejecuto el mismo comando con -E Bandera:
$ echo -E "Welcome to OSTechNix \nblog" Welcome to OSTechNix \nblog
Como puede ver, el resultado es similar cuando ejecuté el echo comando con -E bandera y sin bandera. En ambos casos, echo el comando trata el /n carácter especial como cadena simple.
Ahora déjame ejecutar el mismo comando nuevamente, pero esta vez con -e bandera.
$ echo -e "Welcome to OSTechNix \nblog"
Welcome to OSTechNix
blog
¿Viste la diferencia? El comando echo no trató /n carácter como texto sin formato y muestra lo que viene después del /n carácter especial en la nueva línea.
Por lo tanto, si desea utilizar caracteres especiales como \n , \t , \v etc., debe usar -e bandera. De lo contrario echo tratará todo como una simple cadena.
Permítame mostrarle otro ejemplo.
$ echo -e "Hello world\nHello World\nHello World" Hello world Hello World Hello World
Como puede ver en el resultado anterior, echo el comando muestra "Hello World" cadena tres veces, una por una (es decir, en una nueva línea).
¿Qué sucede si desea escapar solo de un carácter especial específico? Aquí es donde doble barra invertida (\\ ) viene al rescate.
Por ejemplo, quiero escapar del tercer /n carácter especial en el comando anterior.
Para hacerlo, voy a anteponer el tercer carácter especial con doble barra invertida (\\ ) como a continuación:
$ echo -e "Hello world\nHello World\\\nHello World" Hello world Hello World\nHello World
Ahora, echo el comando trata el tercer \n carácter especial como cadena simple.
Por lo tanto, cuando tiene muchos caracteres especiales y desea escapar solo un carácter especial específico, debe agregar la barra invertida doble (\\ ) delante de ese carácter especial.
Conclusión
En este artículo, hemos visto lo que echo comando es y diferentes formas de usarlo. Este es un comando muy simple y no habrá script de shell sin usar echo comando a menos que decidas usar printf cual es la alternativa para echo comando en bash.
Lectura relacionada:
- Secuencias de comandos de Bash:variables explicadas con ejemplos
- Bash Scripting:funciones explicadas con ejemplos
- Secuencias de comandos de Bash:bucle For explicado con ejemplos
- Secuencias de comandos de Bash:ciclo while y till explicado con ejemplos