El comando 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 descubrir cómo.
Echo repite lo que le dice que repita
A Zeus le gustaba abandonar el Olimpo para asociarse con hermosas ninfas. En un viaje, le dijo a una ninfa de la montaña llamada Echo que matara 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 la suposición de nadie.
Y eso, más o menos, es mucho eco en la vida. Repite lo que se le ha dicho que repita. Esa es una función simple, pero vital. Sin eco, no podríamos obtener resultados visibles de los scripts de shell, por ejemplo.
Si bien no está cargado con una multitud de campanas y silbatos, existe una buena posibilidad de que el eco tengaalgunas capacidades que no conocías o que habías olvidado.
echo?¡eco!
La mayoría de los sistemas Linux proporcionan dos versiones de echo. El shell Bash tiene su propio eco incorporado, 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 comando type nos dice si el comando que le pasamos como argumento esun shell integrado, un ejecutable binario, un alias o una función. Nos informa que echo es un shell incorporado.
Tan pronto como encuentra una respuesta, el tipo 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 sí 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 para el comando que le pasamos comosu parámetro de línea de comando. No busca componentes integrados de shell porque no tienen un ejecutable binario separado. Son ’ 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 echonecesitaría llamarlo explícitamente proporcionando la ruta al ejecutable en la línea de comando:
/ bin / echo --version
El shell incorporado no sabe cuál es el argumento de la línea de comando --version, solo 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 shell Bash.
Escritura de texto en el terminal
Para escribir una cadena simplede texto a la ventana de terminal, escriba echo y la cadena que desea que se muestre:
echo Mi nombre es Dave.
ElEl texto se repite para nosotros. Pero a medida que experimente, pronto descubrirá que las cosas pueden volverse un poco más complicadas. Mira este ejemplo:
echo Mi nombre es Dave y soy un geek.
La ventana de terminal muestra un >firma y se sienta allí, esperando. Ctrl + C lo regresará al símbolo del sistema.¿Qué pasó allí?
La cita simple o apóstrofe en la palabra “ I ’ m ”eco confusoInterpretó esa cita simple como el comienzo de una sección de texto citada. Como no detectó una comilla simple de cierre, echo estaba esperando más información. Se esperaba que la entrada adicional incluyera la comilla simple que faltaba.
Para incluir una comilla simple en una cadena, la solución más simple es envolver la cadena completa entre comillas dobles:
echo "Mi nombre es Dave y soy un geek".
Ajustar el texto entre comillas dobles es un buen consejo general. En los scripts, delimita limpiamente los parámetros que está 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 espacio entre ellas).
echo "Mi nombre es Dave y soy un \" geek. \ ""
Esto envuelve la palabra “ geek ”entre comillas dobles para nosotros. En breve veremos más de estos caracteres con barra invertida.
Uso de variables con echo
Hasta ahora, hemos estado escribiendo texto predefinido en la ventana del terminal. Podemos usar variables con echo para producir una salida que sea más dinámica y que tenga valores insertados por el shell. Podemos definir una variable simple con este comando:
my_name = "Dave"
Se ha creado una variable llamada my_name. 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 poner un signo de dólar $ delante del nombre de la variable para que echo sepa que es una variable.
Hay una advertencia. Si has envuelto tu cadena entre comillas simples, echo tratará todo literalmente. Para mostrar el valor de la variable, y no el nombre de la variable, utilice comillas dobles.
echo 'Mi nombre es $ my_name'
echo "Mi nombre es $ my_name "
Algo acertado, que vale la pena repetir:
- El uso de comillas simples da como resultado el textose escribe en la ventana de terminal de manera 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.
RELACIONADO: Cómo trabajar con variables en Bash
Usando comandos con echo
Podemos usar un comando con echo e incorporar su salida en la cadenaque 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 de fecha. Un consejo es usar 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 incluirlo en el comando echo. Luego, si el comando echo no hace lo que espera, sabrá que el problema debe estar relacionado con la sintaxis echo porque ya ha probado la sintaxis del comando.
Entonces, intente esto en la ventana de terminal:
fecha +% D
Y, satisfecho de que ’ reobteniendo lo que esperamos del comando de fecha, lo integraremos en un comando de eco:
echo "La fecha de hoy es: $ (fecha +% D)"
Tenga en cuenta que el comando está dentro de los paréntesis y el signo de dólar $ está inmediatamente antes del primer paréntesis.
Formateo de texto con eco
El -eLa opción (habilitar escapes de barra invertida) nos permite usar algunos caracteres con barra invertida para cambiar el diseño del texto. Estos son los caracteres con barra invertida que podemos usar:
- \ a: Alert (históricamente conocido como BEL). Esto genera el sonido de alerta predeterminado.
- \ b: escribe un carácter de retroceso.
- \ c: abandona cualquier salida adicional.
- \ e: escribe un escapecarácter.
- \ f: escribe un carácter de avance de formulario.
- \ n: 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 diagonal inversa.
Usemos algunos de ellos y veamos qué hacen.
echo -e "Esta es una larga línea de texto \ ndividida en tres líneas \ ncon \ ttabs \ton \ tthe \ tthird \ tline "
El texto se divide en una nueva línea donde hemos utilizado los caracteres \ n y se inserta una pestaña donde & #8217; he usado los caracteres \ t.
echo -e "Aquí \ vare \ vvertical \ vtabs"
Como el \ nnuevos caracteres de línea, una pestaña vertical \ v mueve el texto a la línea de abajo. Pero, a diferencia de los \ n nuevos caracteres de línea, 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 para escribir en el terminal, ese texto sobrescribirá el carácter anterior.
echo -e "123 \ b4"
El “ 3 ”está sobrescrito por el “ 4 ”.
El carácter de retorno de carro \ r hace que el eco regrese al inicio de la línea actual y escriba cualquier texto adicional desde la columna cero.
echo -e "123 \ r456"
El “ 123 ”los caracteres se sobrescriben con el “ 456 ”caracteres.
El carácter de alerta \ a producirá un sonido audible “ bleep. ”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 con barra invertida, pero sí afecta a los cosméticos del diseño del texto, por lo que lo discutiremos aquí. Impide 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 del terminal.
echo -n "no final newline"
Utilizandoecho con archivos y directorios
Puede usar echo como una especie de versión pobre de ls. Sus opciones son pocas y distantes cuando usa echo como este. Si necesita algún tipo de fidelidad o control preciso, es mejor usar 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 “ . desktop ”archivos en el directorio actual:
echo * . desktop
Sí. Esto no está jugando para hacer eco de las fortalezas de # 8216;Utilice ls.
Escritura en archivos con echo
Podemos redirigir la salida desde echo y crear archivos de texto o escribir en archivos de texto existentes.
Siusa 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 "Creación de un nuevo archivo".>sample. txt
echo "Agregando al archivo".> >sample. txt
cat sample. txt
El primer comando crea un nuevo archivo y el texto se inserta en él. 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 agregarle una marca de tiempo. Podemos hacerlo con el siguiente comando.
Tenga en cuenta las comillas simples alrededor de los parámetros para el comando de fecha. Evitan que el espacio entre los parámetros se interprete como el final de la lista de parámetros. Se aseguran de que los parámetros se pasen a la fecha correctamente.
echo "Archivo de registro iniciado: $ (fecha + '% D% T')" >logfile. txt
cat logfile. txt
Nuestro archivo de registro se creó para nosotros y cat nos muestra que la fecha y la marca de tiempo se agregaron
RELACIONADO: ¿Qué son stdin, stdout y stderr en Linux?
Ese ’ s echo ’ s Repertoire
Un simplecomando, pero indispensable. Si no existiera, tendríamos que inventarlo.
Las travesuras de Zeus hicieron algo bueno, después de todo.
Fuente: How to Geek
Comentarios
Publicar un comentario