los echo
El comando es perfecto para escribir texto formateado en la ventana de la terminal. Y no tiene por qué ser texto estático. Puede incluir variables de shell, nombres de archivos y directorios. Además puede redirigir el eco para crear archivos de texto y archivos de registro. Siga 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 unirse con hermosas ninfas. En un viaje, le dijo a una ninfa de la montaña llamada Echo que acecha 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. Para terminar, 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 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, a modo de ejemplo.
Aunque no está cargado con una multitud de campanas y silbidos, es muy probable que echo
tiene algunas capacidades que no conocía o que había olvidado.
¿eco? ¡eco!
La mayoría de los sistemas Linux proporcionan dos versiones de echo
. los Cáscara de Bash tiene su propio echo
integrado en él, y hay una versión ejecutable binaria de echo
así como.
Podemos ver las dos versiones diferentes usando los siguientes comandos:
type echo
whereis echo
los type
el comando nos dice si el comando que le pasamos como su argumento es un shell 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 eso, 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.
los whereis
comando busca el ejecutable binario, el código fuente y la página de manual del comando que le pasamos como su línea de comando parámetro. No busca ítems internos de shell debido a que no disponen un ejecutable binario separado. Son una parte integral del ejecutable Bash.
los whereis
comando informa que echo
es un ejecutable binario ubicado en el /bin
directorio.
Para utilizar 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 shell incorporado no sabe lo que --version
El argumento de la línea de comandos es, simplemente lo repite en la ventana de terminal:
echo --version
Todos los ejemplos que se muestran aquí usan la versión predeterminada de echo
, en el caparazón Bash.
Escribir texto en la terminal
Para escribir una simple cadena de texto en la ventana de terminal, escriba echo
y la cadena que desea que se muestre:
echo My name is Dave.
El texto se nos repite. 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 la terminal muestra un >
firmar y se sienta allí, esperando. Ctrl + C lo volverá al símbolo del sistema. ¿Que paso ahi?
La comilla simple o el apóstrofo de la palabra «Estoy» confundido echo
. Interpretó esa comilla simple como el comienzo de una sección de texto citada. Debido a que no detectó una sola comilla 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 respuesta más simple es envolver toda la cadena entre comillas dobles:
echo "My name is Dave and I'm a geek."
Poner el texto entre comillas dobles es un buen consejo general. En los scripts, delimita claramente los parámetros a los que está pasando echo
. Esto facilita mucho la lectura y la depuración de los scripts.
¿Qué sucede si desea incluir un carácter de comillas dobles en su cadena de texto? Eso es fácil, solo ponga 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 barra invertida escapó personajes en breve.
Utilizar variables con eco
Hasta ahora, hemos estado escribiendo texto predefinido en la ventana de la terminal. Podemos utilizar variables con echo
para producir una salida que sea más dinámica y tenga valores insertados en ella por el shell. Podemos establecer 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 utilizar el nombre de la variable en las cadenas que pasamos a echo
, y el valor de la variable se escribirá en la ventana de terminal. Debes poner un signo de dólar $
delante del nombre de la variable para dejar echo
sé que es una variable.
Hay una salvedad. Si ha envuelto su cadena entre comillas simples echo
tratará todo literalmente. Tener la variable valor mostrado, 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, es importante destacar repetirlo:
- Usando soltero las comillas dan como consecuencia que el texto se escriba en la ventana de terminal en un literal Moda.
- Usando doble las comillas dan como consecuencia la interpretación de la variable, además llamada expansión de variable, y la valor se escribe en la ventana de la terminal.
RELACIONADO: Cómo trabajar con variables en Bash
Utilizar comandos con echo
Podemos utilizar un comando con echo
e incorporar su salida en la cadena que se escribe en la ventana del terminal. Debemos utilizar el signo de dólar $
como si el comando fuera una variable, y envuelva todo el comando entre paréntesis.
Vamos a usar el comando de fecha. Un consejo es utilizar el comando por sí solo antes de comenzar a usarlo con echo
. De esa manera, si hay algún problema con la sintaxis de su comando, lo identifica y lo corrige antes de incorporarlo en el echo
mando. Entonces, si el echo
comando no hace lo que espera, sabrá que el problema debe ser con el echo
sintaxis debido a que ya ha probado la sintaxis del comando.
Entonces, intente esto en la ventana de la terminal:
date +%D
Y, satisfechos de que estamos obteniendo lo que esperamos del comando de fecha, lo integraremos en un echo
mando:
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
los -e
La opción (habilitar los escapes de barra invertida) nos posibilita utilizar algunos caracteres de escape con barra invertida para cambiar el diseño del texto. Estos son los caracteres de escape con barra invertida que podemos utilizar:
- a: Alerta (históricamente conocida como BEL). Esto genera el sonido de alerta predeterminado.
- B: Escribe un carácter de retroceso.
- C: Abandona cualquier salida adicional.
- mi: Escribe un carácter de escape.
- F: Escribe un carácter de avance de página.
- norte: Escribe una nueva línea.
- r: Escribe un retorno de carro.
- t: Escribe una pestaña horizontal.
- v: Escribe una pestaña vertical.
- : Escribe un carácter de barra invertida.
Usemos algunos de ellos y veamos qué hacen.
echo -e "This is a long line of textnsplit across three linesnwithttabstontthetthirdtline"
El texto se divide en una nueva línea donde hemos utilizado el n
caracteres y se inserta una pestaña donde hemos utilizado el t
caracteres.
echo -e "Herevarevverticalvtabs"
Como el n
caracteres de nueva línea, una pestaña vertical v
mueve el texto a la línea de abajo. Pero, a diferencia del n
caracteres de nueva línea, el v
tabulación vertical no comienza la nueva línea en la columna cero. Utiliza la columna actual.
los b
los caracteres de retroceso 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 "123b4"
El «3» está sobreescrito por el «4».
los r
Causas del carácter de retorno de carro echo
para volver al inicio de la línea actual y escribir cualquier texto adicional desde la columna cero.
echo -e "123r456"
Los caracteres «123» se sobrescriben con los caracteres «456».
los a
El carácter de alerta producirá un «pitido» audible. Utiliza el sonido de alerta predeterminado para su tema actual.
echo -e "Make a bleepa"
los -n
La opción (sin nueva línea) no es una secuencia de escape con barra invertida, pero afecta la apariencia del diseño del texto, por lo que lo discutiremos aquí. Previene echo
desde agregar una nueva línea al final del texto. El símbolo del sistema aparece de forma directa después del texto que se escribe en la ventana del terminal.
echo -n "no final newline"
Utilizar echo con archivos y directorios
Puedes utilizar echo
como una especie de versión pobre de ls
. Sus opciones son pocas y distantes entre sí cuando utiliza echo
como esto. 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 está jugando a echo
fortalezas. Utilizar ls
.
Escribir en archivos con echo
Podemos redirigir la salida de echo
y cree archivos de texto o escriba 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 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 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 al final del archivo. los cat
El comando muestra el contenido del archivo en la ventana de la terminal.
Y, desde luego, podemos incluir variables para agregar información útil a nuestro archivo. Si el archivo es un archivo de registro, es factible que deseemos que se le agregue una marca de tiempo. Podemos hacer eso con el siguiente comando.
Tenga en cuenta las comillas simples alrededor de los parámetros para el date
mando. 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 tanto la marca de fecha como la marca de tiempo se le agregaron.
RELACIONADO: ¿Qué son stdin, stdout y stderr en Linux?
Ese es el repertorio de echo
Un comando sencillo, pero indispensable. Si no existiera, tendríamos que inventarlo.
Las travesuras de Zeus hicieron algo bien, después de todo.
setTimeout(function(){
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s) } (window, document,’script’,
‘https://connect.facebook.net/en_US/fbevents.js’);
fbq(‘init’, ‘335401813750447’);
fbq(‘track’, ‘PageView’);
},3000);