Cómo usar el comando Echo en Linux
- Dave McKay
@TheGurkha
- 29 de octubre de 2019, 8:00 a. M. EDT
El echo
El comando es perfecto para escribir texto formateado en la ventana del terminal. Y no tiene por qué ser texto estático. Puede incluir variables de shell, nombres de archivos y directorios. También puede redirigir el eco para crear archivos de texto y archivos de registro. Sigue esta sencilla guía para descubrir cómo.
Echo repite lo que le dices que repita
A Zeus le gustaba dejar el monte Olimpo para asociarse con hermosas ninfas. En un viaje, le dijo a una ninfa de la montaña llamada Echo que acechara a su esposa, Hera, si ella lo seguía. Hera vino a buscar a Zeus, y Echo hizo todo lo que pudo para mantener a Hera en conversación. Finalmente, Hera perdió los estribos y maldijo al pobre Echo para que solo repitiera las últimas palabras que alguien más había dicho. Lo que Hera le hizo a Zeus cuando lo alcanzó es una incógnita.
Y eso, prácticamente, es echo
mucho en la vida. Repite lo que se le ha dicho que repita. Esa es una función simple, pero vital. Sin echo
, no podríamos obtener resultados visibles de los scripts de shell, por ejemplo.
Mientras no esté cargado con una multitud de campanas y silbidos, es muy probable que echo
tenga algunas capacidades que no conocías o que habías olvidado.
¿echo? echo!
La mayoría de los sistemas Linux proporcionan dos versiones de echo
. El shell Bash tiene su propio echo
integrado, y también hay una versión binaria ejecutable de echo
.
Podemos ver las dos versiones diferentes usando los siguientes comandos:
type echo
whereis echo
El type
nos dice si el comando que le pasamos como argumento es un intérprete de comandos incorporado, un ejecutable binario, un alias o una función. Nos informa que echo
es un shell incorporado.
Tan pronto como haya encontrado una respuesta, type
deja de buscar más coincidencias. Por tanto, no nos dice si hay otros comandos con el mismo nombre presentes en el sistema. Pero nos dice cuál encuentra primero. Y ese es el que se utilizará de forma predeterminada cuando emitamos ese comando.
El comando whereis
busca el ejecutable binario, el código fuente y la página de manual de el comando que le pasamos como su parámetro de línea de comandos. No busca elementos internos de shell porque no tienen un ejecutable binario separado. Son una parte integral del ejecutable Bash.
El comando whereis
informa que echo
es un ejecutable binario ubicado en el directorio /bin
.
Para usar esa versión de echo
, necesitaría llamarlo explícitamente proporcionando la ruta al ejecutable en la línea de comando:
/bin/echo --version
El intérprete de órdenes del shell no sabe qué --version
argumento de línea de comandos es, simplemente lo repite en la ventana de terminal:
echo --version
Todos los ejemplos que se muestran aquí usan el valor predeterminado versión de echo
, en el shell Bash.
Escribir texto en la terminal
Para escribir una simple cadena de texto en la ventana de la terminal , escriba echo
y la cadena que desea que muestre:
echo My name is Dave.
El texto se repite para nosotros. Pero a medida que experimente, pronto descubrirá que las cosas pueden complicarse un poco más. Mira este ejemplo:
echo My name is Dave and I"m a geek.
La ventana de terminal muestra un signo >
y se sienta allí, esperando. Ctrl + C lo regresará al símbolo del sistema. ¿Qué pasó allí?
La comilla simple o el apóstrofo en la palabra «Estoy» confundido echo
. Interpretó esa comilla simple como el comienzo de una sección entre comillas. del texto. Debido a que no detectó una comilla simple de cierre, echo
estaba esperando más información. Esperaba que la entrada adicional incluyera la comilla simple que faltaba que estaba esperando.
Para incluir una comilla simple en una cadena, la solución más simple es envolver toda la cadena entre comillas dobles:
echo "My name is Dave and I"m a geek."
Envolver su texto entre comillas dobles es un buen consejo general. En los scripts, delimita claramente los parámetros que le estás pasando a echo
. Esto hace que leer y depurar scripts sea mucho más fácil.
¿Qué sucede si desea incluir un carácter de comillas dobles en su cadena de texto?Eso es fácil, simplemente coloque una barra invertida \
delante de las comillas dobles (sin espacios entre ellas).
echo "My name is Dave and I"m a \"geek.\""
Esto envuelve la palabra «geek» entre comillas dobles para nosotros. Veremos más de estos caracteres de escape con barra invertida en breve.
Uso de variables con echo
Hasta ahora , hemos estado escribiendo texto predefinido en la ventana de terminal. Podemos usar variables con echo
para producir una salida que sea más dinámica y que tenga valores insertados en ella por el shell. puede definir una variable simple con este comando:
my_name="Dave"
Se ha creado una variable llamada my_name
. asignó el valor del texto «Dave». Podemos usar el nombre de la variable en las cadenas que le pasamos a echo
, y el valor de la variable se escribirá en la ventana del terminal. Debe poner un signo de dólar $
delante del nombre de la variable para que echo
sepa que es una variable.
Hay una advertencia. Si ha envuelto su cadena entre comillas simples, echo
tratará todo literalmente. Para que se muestre el valor de la variable, y no el nombre de la variable, utilice comillas dobles.
echo "My name is $my_name"
echo "My name is $my_name"
Con bastante acierto, vale la pena repetirlo:
- El uso de comillas simples da como resultado que el texto se escriba en la ventana de terminal de manera literal.
- El uso de comillas dobles da como resultado la variable que se interpreta, también llamada expansión de variables, y el valor se escribe en la ventana de la terminal.
RELACIONADO: Cómo trabajar con variables en Bash
Uso de comandos con echo
Podemos usar un comando con echo
e incorporar su salida en la cadena que se escribe en la ventana del terminal. Debemos usar el signo de dólar $
como si el comando fuera una variable, y envolver todo el comando entre paréntesis.
Vamos a usar el comando de fecha . Un consejo es usar el comando por sí solo antes de comenzar a usarlo con echo
. De esa forma, si hay algún problema con la sintaxis de su comando, lo identifica y lo corrige antes de incluirlo en el comando echo
. Luego, si el comando echo
no hace lo que esperaba, sabrá que el problema debe estar en la sintaxis echo
porque ya he probado la sintaxis del comando.
Entonces, intente esto en la ventana de la terminal:
date +%D
Y, satisfecho de que estamos obteniendo lo que esperamos del comando date, lo integraremos en un comando echo
:
echo "Today"s date is: $(date +%D)"
Tenga en cuenta que el comando está entre paréntesis y el signo de dólar $
está inmediatamente antes del primer paréntesis.
Formateo de texto con eco
La opción -e
(habilitar escapes de barra invertida) nos permite usar algunos caracteres con escape de barra invertida para cambiar el diseño del texto. Estos son los caracteres de escape con barra invertida que podemos usar:
Usemos algunos de ellos y veamos qué hacen.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
El texto se divide en una nueva línea donde hemos usado los caracteres \n
y se inserta una pestaña donde hemos usado los caracteres \t
.
echo -e "Here\vare\vvertical\vtabs"
Al igual que los \n
caracteres de nueva línea, una pestaña vertical \v
mueve el texto a la línea de abajo. Pero, a diferencia de los \n
caracteres de nueva línea, la pestaña vertical \v
no comienza la nueva línea en la columna cero. Utiliza la columna actual.
Los caracteres de retroceso \b
mueven el cursor un carácter hacia atrás. Si hay más texto para escribir en la terminal, ese texto sobrescribirá el carácter anterior.
echo -e "123\b4"
El «3» se sobrescribe con el » 4 ”.
El carácter de retorno de carro \r
hace que echo
vuelva al inicio de la línea actual y escriba cualquier texto adicional desde la columna cero.
echo -e "123\r456"
Los caracteres «123» se sobrescriben con los caracteres «456».
El \a
el carácter de alerta producirá un «pitido» audible. Utiliza el sonido de alerta predeterminado para su tema actual.
echo -e "Make a bleep\a"
El -n
(sin nueva línea) no es una secuencia de escape con barra invertida, pero sí afecta la apariencia del diseño del texto, así que lo discutiremos aquí. Evita que echo
agregue una nueva línea al final del texto El símbolo del sistema aparece directamente después del texto que se escribe en la ventana de terminal.
echo -n "no final newline"
Uso de echo con archivos y directorios
Puede usar echo
como clasificación de la versión de hombre pobre de ls
. Sus opciones son pocas y distantes cuando usa echo
de esta manera. Si necesita algún tipo de fidelidad o control fino, es mejor que use ls
y su legión de opciones.
Este comando enumera todos los archivos y directorios en el directorio actual:
echo *
Este comando enumera todos los archivos y directorios en el directorio actual cuyo nombre comienza con «D»:
echo D*
Este comando enumera todos los archivos «.desktop» en el directorio actual:
echo *.desktop
Sí. Esto no juega con los puntos fuertes de echo
. Utilice ls
.
Escribir en archivos con eco
Podemos redirigir la salida desde echo
y crear archivos de texto o escribir en archivos de texto existentes.
Si usamos el operador de redirección >
, el archivo se crea si no existe. Si el archivo existe, la salida de echo
se agrega al comienzo del archivo, sobrescribiendo cualquier contenido anterior.
Si usamos >>
operador de redirección, el archivo se crea si no existe. La salida de echo
se agrega al final del archivo y no sobrescribe ningún contenido existente del archivo.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
Se crea un nuevo archivo con el primer comando y se inserta el texto en ello. El segundo comando agrega una línea de texto al final del archivo. El comando cat
muestra el contenido del archivo en la ventana del terminal.
Y por supuesto, podemos incluir variables para agregar información útil a nuestro archivo. Si el archivo es un archivo de registro, es posible que deseemos que se le agregue una marca de tiempo. Podemos hacer eso con el siguiente comando.
Note las comillas simples alrededor de los parámetros del comando date
. Impiden que el espacio entre los parámetros se interprete como el final de la lista de parámetros. Aseguran que los parámetros se pasen a date
correctamente.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Nuestro archivo de registro se crea para nosotros y cat
nos muestra que la marca de fecha y la marca de tiempo se le agregaron.
RELACIONADO : ¿Qué son stdin, stdout y stderr en Linux?
Ese es el repertorio de echo
Un comando simple, pero indispensable. Si no existiera, tendríamos que inventarlo.
Las travesuras de Zeus hicieron algo bien, después de todo.
Dave McKay usó computadoras por primera vez cuando la cinta de papel perforada estaba de moda, y ha estado programando desde entonces. Después de más de 30 años en la industria de TI, ahora es un periodista de tecnología a tiempo completo. Durante su carrera, ha trabajado como programador autónomo, gerente de un equipo de desarrollo de software internacional, gerente de proyectos de servicios de TI y, más recientemente, como oficial de protección de datos. Dave es un evangelista de Linux y defensor del código abierto. Lee la biografía completa «