Cómo usar el comando Echo en Linux
El es perfecto para escribir texto formateado en la ventana del terminal. Y no tiene que ser texto estático. Puede incluir variables de shell, nombres de archivos y directorios. También puede redirigir echo para crear archivos de texto y archivos de registro. Siga esta sencilla guía para averiguar cómo hacerlo.
Echo Repite Lo Que Le Dices Que Repita
A Zeus le gustaba dejar el Monte Olimpo para unirse con hermosas ninfas. En un viaje, le dijo a una ninfa de la montaña llamada Echo que se alejara de 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 Eco 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 suposición.
Y eso, básicamente, es echo
el lote en la vida. Repite lo que se le ha dicho que repita. Es una función simple, pero vital. Sin echo
, no podríamos obtener una salida visible de los scripts de shell, por ejemplo.
Aunque no está cargado de una multitud de campanas y silbidos, hay una buena probabilidad de que echo
tenga algunas capacidades que no conocía o que había olvidado.
echo? echo!
La mayoría de los sistemas Linux proporcionan dos versiones de echo
. El shell Bash tiene incorporado su propio echo
, y también hay una versión ejecutable binaria de echo
.
podemos ver las dos versiones diferentes mediante los siguientes comandos:
type echo
whereis echo
El type
comando nos indica si el comando que se le pase como argumento es un shell builtin, un binario ejecutable, un alias, o una función. Nos informa que echo
es un shell incorporado.
Tan pronto como encuentre una respuesta, type
deja de buscar más coincidencias. Por lo 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 usará de forma predeterminada cuando emitamos ese comando.
El comando whereis
busca el ejecutable binario, el código fuente y la página de manual del comando que le pasamos como parámetro de línea de comandos. No busca shell builtins porque no tienen un ejecutable binario separado. Son una parte integral del ejecutable Bash.
El comandowhereis
informa que echo
es un ejecutable binario ubicado en el directorio /bin
.
Para utilizar esa versión de echo
tendría que llamar explícitamente por proporcionar la ruta de acceso al ejecutable en la línea de comandos:
/bin/echo --version
El shell builtin no sabe lo que el --version
argumento de línea de comandos es, simplemente repite en la ventana de terminal:
echo --version
Los ejemplos que se muestran aquí utilizan la versión predeterminada de echo
, en el shell de Bash.
Escribir Texto en el Terminal
escribir una simple cadena de texto en la ventana de terminal, escriba echo
y de la cadena que desea es visualizar:
echo My name is Dave.
El texto se repite para nosotros. Pero a medida que experimentes, pronto descubrirás que las cosas pueden complicarse un poco más. Mira este ejemplo:
echo My name is Dave and I'm a geek.
La ventana del terminal muestra un signo >
y se sienta allí, esperando. Ctrl + C le devolverá al símbolo del sistema. ¿Qué pasó allí?
La comilla simple o apóstrofo en la palabra «estoy» confundida echo
. Interpretó esa cita única como el comienzo de una sección de texto citada. Debido a que no detectó una comilla simple de cierre, echo
estaba esperando más entrada. Esperaba que esa información adicional incluyera la cita única que faltaba que estaba esperando.
Para incluir una comilla simple en una cadena, la solución más sencilla es envolver toda la cadena con comillas dobles:
echo "My name is Dave and I'm a geek."
Envolver el texto con comillas dobles es un buen consejo general. En los scripts, delimita claramente los parámetros que está pasando a echo
. Esto facilita mucho la lectura y depuración de scripts.
¿Qué pasa 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 la comilla doble (sin espacio entre ellas).
echo "My name is Dave and I'm a \"geek.\""
Esto concluye la palabra «geek» en comillas dobles para nosotros. Veremos más de estos caracteres escapados de barra invertida en breve.
Usando 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 tenga valores insertados en ella por el shell. Podemos definir una variable simple, con este comando:
my_name="Dave"
Una variable llamada my_name
ha sido creado. Se le ha asignado el valor del texto «Dave.»Podemos usar el nombre de la variable en las cadenas que pasamos a echo
, y el valor de la variable se escribirá en la ventana del terminal. Debe colocar 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 con comillas simples echo
tratará todo literalmente. Para mostrar 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"
Algo adecuado, vale la pena repetir:
- El uso de comillas simples da como resultado que el texto se escriba en la ventana del terminal de forma literal.
- El uso de comillas dobles da como resultado que la variable se interprete, también llamada expansión de variable, y el valor se escribe en la ventana de terminal.
RELACIONADOS: Cómo trabajar con Variables en Bash
Usando Comandos Con echo
Podemos usar un comando con echo
e incorporar su salida en la cadena que se escribe en la ventana de 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 date. Un consejo es usar el comando por sí solo antes de comenzar a usarlo con echo
. De esta manera, si hay algún problema con la sintaxis de su comando, lo identifica y lo corrige antes de incluirlo en el comando echo
. Entonces, si el comando echo
no hace lo que espera, sabrá que el problema debe ser con la sintaxis echo
porque ya ha probado la sintaxis del comando.
Entonces, prueba esto en la ventana de terminal:
date +%D
Y, satisfechos de que estamos obteniendo lo que esperamos del comando date, lo integraremos en un comando echo
:
echo "Today's date is: $(date +%D)"
Nota el comando está dentro de los paréntesis y el signo de dólar $
está inmediatamente antes del primer paréntesis.
Formatear texto Con eco
La opción -e
(habilitar escapes de barra invertida) nos permite usar algunos caracteres de escape de barra invertida para cambiar el diseño del texto. Estos son los caracteres de escape de 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 la etiqueta \n
caracteres y se inserta una ficha donde hemos usado la etiqueta \t
caracteres.
echo -e "Here\vare\vvertical\vtabs"
Como el \n
nueva línea de caracteres, un tabulador vertical \v
mueve el texto a la línea siguiente. Pero, a diferencia de los caracteres de línea nuevos \n
, la pestaña vertical \v
no inicia 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 que escribir en la terminal, ese texto sobrescribirá el carácter anterior.
echo -e "123\b4"
El «3» es la sobre-escrito por 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 carácter de alerta \a
producirá un pitido audible.»Utiliza el sonido de alerta predeterminado para el tema actual.
echo -e "Make a bleep\a"
La opción -n
(sin nueva línea) no es una secuencia con escape de barra invertida, pero afecta a los cosméticos del diseño del texto, por lo que lo discutiremos aquí. Evita echo
añadir 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 del terminal.
echo -n "no final newline"
Usando echo Con Archivos y Directorios
Puedes usar echo
como una especie de versión para pobres de ls
. Sus opciones son pocas y distantes entre sí cuando usa echo
de esta manera. Si necesita cualquier tipo de fidelidad o control fino, es mejor usar ls
y su legión de opciones.
Este comando enumera todos los archivos y directorios del directorio actual:
echo *
Este comando enumera todos los archivos y directorios del directorio actual cuyo nombre comienza con» D»:
echo D*
Este comando enumera todos los».de escritorio» los archivos en el directorio actual:
echo *.desktop
Sí. Esto no se reproduce en las fortalezas de echo
. Utilice ls
.
Escribir en archivos con echo
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 inicio del archivo, sobrescribiendo cualquier contenido anterior.
Si usamos el operador de redirección >>
, el archivo se crea si no existe. La salida de echo
se agrega al final del archivo y no sobrescribe cualquier contenido del archivo.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
se crea Un nuevo archivo por el primer comando, y el texto se inserta en ella. El segundo comando añade 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 añadir 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 hacerlo con el siguiente comando.
Observe las comillas simples alrededor de los parámetros del comando date
. Evitan 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 el datestamp y la marca de tiempo se agregan a ella.
RELACIONADOS: ¿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 bueno, después de todo.