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