El echo
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 archivo 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.
¿De qué vamos a hablar?
Echo repite lo que le dices que repita
Zeus era aficionado a dejar el Monte Olimpo para consorte con hermosas ninfas. En un viaje, le dijo a una ninfa de montaña llamada Echo que waylay su esposa, Hera, si ella lo seguía. Hera vino a buscar a Zeus, y Eco hizo todo lo posible 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, más o menos, es echo
Es mucho en la vida. Repite lo que se le ha dicho que se repita. Esa es una función simple, pero vital. Sin echo
, no podríamos obtener resultados visibles de scripts de shell, por ejemplo.
Si bien no está cargado con una multitud de campanas y silbatos, hay una buena posibilidad de que echo
tiene algunas capacidades que no conocías o que habías olvidado.
¿eco? ¡eco!
La mayoría de los sistemas Linux proporcionan dos versiones de echo
. El Concha Bash tiene su propio echo
integrado en él, y hay una versión ejecutable binaria de echo
También.
Podemos ver las dos versiones diferentes mediante los siguientes comandos:
type echo
whereis echo
El type
comando nos dice si el comando que le pasamos como su argumento es un shell integrado, un ejecutable binario, un alias o una función. Nos informa que echo
es una cáscara incorporada.
Tan pronto como haya encontrado una respuesta, type
deja de buscar más partidos. Por lo tanto, no nos dice si hay otros comandos con el mismo nombre presentes en el sistema. Pero sí nos dice cuál encuentra primero. Y ese es el que se usará por defecto cuando emitamos ese comando.
El whereis
El comando busca el ejecutable binario, el código fuente y la página man para el comando que le pasamos como su línea de comandos parámetro. No busca shell builtins porque no tienen un ejecutable binario separado. Son una parte integral del ejecutable Bash.
El whereis
el comando informa que echo
es un ejecutable binario ubicado en el /bin
directorio.
Para usar esa versión de echo
tendría que llamarlo explícitamente proporcionando la ruta de acceso al ejecutable en la línea de comandos:
/bin/echo --version
La carcasa incorporada no sabe lo que el --version
El argumento de la línea de comandos es, simplemente lo repite en la ventana del terminal:
echo --version
Todos los ejemplos que se muestran aquí utilizan la versión predeterminada de echo
, en el shell Bash.
Escribir texto en el terminal
Para escribir una cadena de texto simple en la ventana del terminal, escriba echo
y la cadena que desea que se muestre:
echo My name is Dave.
El texto se repite para nosotros. Pero a medida que experimentas, 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 >
firma y se sienta allí, esperando. Ctrl+C le devolverá al símbolo del sistema. ¿Qué pasó allí?
La sola cita o apóstrofo en la palabra “Soy” confundida echo
. Interpretó esa única cita como el comienzo de una sección del texto citada. Debido a que no detectó una sola cotización de cierre, echo
estaba esperando más información. Espera que esa aportación adicional incluya la cotización única que falta y que está esperando.
Para incluir una sola comilla en una cadena, la solución más sencilla 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 de forma limpia los parámetros a los que está pasando echo
. Esto hace que la lectura y depuración de 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, solo pon una barra diagonal inversa /
delante de las comillas dobles (sin espacio 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 barra invertir-escape personajes en breve.
Uso de variables con eco
Hasta ahora, hemos estado escribiendo texto predefinido en la ventana del terminal. Podemos usar variables con echo
para producir output that es más dinámico y tiene valores insertados en él para nosotros 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 a las que pasamos echo
, y el valor de la variable se escribirá en la ventana del terminal. Debes poner un signo de dólar €
delante del nombre de la variable que se debe dejar echo
saber que es una variable.
Hay una advertencia. Si has envuelto la cadena entre comillas simples echo
tratará todo literalmente. Para tener la variable valor mostrado, y no el nombre de la variable, use comillas dobles.
echo 'My name is €my_name'
echo "My name is €my_name"
Algo acertadamente, vale la pena repetirlo:
- Usando soltero Las comillas da como resultado que el texto se escriba en la ventana del terminal en un literal moda.
- Usando doble Las comillas da como resultado la interpretación de la variable, también llamada expansión variable, y el valor se escribe en la ventana del terminal.
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 del dólar €
como si el comando fuera una variable, y envuelve 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 esa manera, si hay algo mal con la sintaxis de su comando, lo identifica y lo corrige antes de incluirlo en el echo
mandar. Entonces, si el echo
El comando no hace lo que esperas, sabrás que el problema debe ser con el comando echo
sintaxis porque ya ha probado la sintaxis del comando.
Por lo tanto, pruebe esto en la ventana del terminal:
date +%D
Y, satisfechos de que estamos obteniendo lo que esperamos del comando date, lo integraremos en un echo
mandar:
echo "Today's date is: €(date +%D)"
Tenga en cuenta que el comando está dentro de los paréntesis y el signo de dólar €
es inmediatamente antes del primer paréntesis.
Formato de texto con eco
El -e
(habilitar escapes de barra diagonal inversa) nos permite usar algunos caracteres de escape de barra diagonal inversa para cambiar el diseño del texto. Estos son los personajes escapados de barra diagonal inversa que podemos usar:
- /a: Alerta (históricamente conocida como BEL). Esto genera el sonido de alerta predeterminado.
- /b: escribe un carácter de retroceso.
- /c: Abandona cualquier otra salida.
- /e: Escribe un carácter de escape.
- /f: escribe un carácter de fuente de formulario.
- /n: Escribe una nueva línea.
- /r: Escribe un retorno de carro.
- /t: Escribe una ficha horizontal.
- /v: Escribe una ficha vertical.
- //: escribe un carácter de barra diagonal inversa.
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 utilizado el /n
y se inserta una pestaña donde hemos utilizado el /t
Caracteres.
echo -e "Here/vare/vvertical/vtabs"
Como el /n
nuevos caracteres de línea, una pestaña vertical /v
mueve el texto a la línea siguiente. Pero, a diferencia de la /n
nuevos caracteres de línea, el /v
La pestaña vertical no inicia la nueva línea en la columna cero. Utiliza la columna actual.
El /b
los caracteres de retroceso mueven el cursor hacia atrás un carácter. Si hay más texto por escribir en el terminal, ese texto sobrescribirá el carácter anterior.
echo -e "123/b4"
El “3” está sobreescrito por el “4”.
El /r
Causas del carácter de retorno del carro echo
para volver al principio de la línea actual y escribir cualquier texto adicional desde la columna cero.
echo -e "123/r456"
Los “123” caracteres se sobrescriben con los “456” caracteres.
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
La opción (sin nueva línea) no es una secuencia de escape de barra diagonal inversa, pero afecta a los cosméticos del diseño del texto, por lo que lo discutiremos aquí. Previene echo
de agregar 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"
Uso de echo con archivos y directorios
Puedes usar echo
como una especie de versión del pobre hombre de ls
. Sus opciones son pocas y distantes entre sí cuando usa echo
Así. Si necesitas algún kind 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 archivos “.desktop” en el directorio actual:
echo *.desktop
Sí. Esto no es jugar a echo
‘s fortalezas. Uso 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 utilizamos el >
operador de redirección, el archivo se crea si no existe. Si el archivo existe, la salida de echo
se agrega al principio del archivo, sobrescribiendo cualquier contenido anterior.
Si utilizamos el >>
operador de redirección, el archivo se crea si no existe. El resultado 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
El primer comando crea un nuevo archivo y se inserta texto en él. El segundo comando agrega una línea de texto a la parte inferior del archivo. El cat
muestra el contenido del archivo en la ventana del terminal.
Y por supuesto, podemos incluir variables para añadir alguna 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.
Anote las comillas simples alrededor de los parámetros para el date
mandar. 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 está creado para nosotros y cat
nos muestra que la marca de fecha y la marca de tiempo se agregaron a ella.
Ese es el repertorio de echo
Un comando sencillo, pero indispensable. Si no existiera, tendríamos que inventarlo.
Las travesuras de Zeus hicieron algo bueno, después de todo.