GNU/Linux >> Tutoriales Linux >  >> Linux

Comandos útiles de Bash que quizás no conozcas

Bash es un lenguaje bastante poderoso para programar y también es bastante fácil para empezar.

Después de todo, es casi universalmente el caparazón que verá cuando abra su terminal. Eso hace que sea extremadamente útil acostumbrarse.

Sin embargo, hay algunos comandos poderosos en Bash que quizás no conozca, incluso si está bastante experimentado en el uso del lenguaje. Sin embargo, todos estos comandos pueden tener propósitos muy útiles y pueden hacer que los scripts de shell que escriba sean más limpios, fáciles de mantener y simplemente más poderosos de lo que podrían haber sido antes.

Leer:Solicitar información del usuario

El comando de lectura le permite recibir información de un usuario y almacenarla dentro de una variable.

#!/usr/bin/env bash
echo "What is your name?"
read name
echo "Your name is ${name}!"

Esto esperará la entrada de usted, el usuario, y luego establecerá el valor para el name variable a la cadena que ingresa.

Por ejemplo, si especificó su nombre como Linux Handbook al ejecutar el script anterior, mostraría Your name is Linux Handbook! .

También puede hacer que el ejemplo anterior sea más compacto especificando -p opción a read comando, que imprimirá la cadena especificada después de -p y luego pídale al usuario que ingrese:

#!/usr/bin/env bash
read -p "What is your name? " name
echo "Your name is ${name}!"

También notará que agregué un espacio después de What is your name? . Si no lo agregáramos, literalmente imprimiría What is your name? sin espacio, lo que haría que se viera un poco más extraño cuando el usuario ingresa su entrada:

Mapfile:Asignar a una variable los valores de las líneas de un archivo

Puedes usar el mapfile comando para leer el contenido de un archivo y luego asignar esa salida a una matriz Bash, y cada elemento de la matriz se crea cada vez que se encuentra una nueva línea en el archivo.

Por ejemplo, creemos un archivo llamado file.txt que contiene el siguiente texto:

Line 1
Line 2
Line 3
Line 4
Line 5

Puede convertir este archivo en una matriz Bash ejecutando lo siguiente, que asigna el contenido del archivo a file_var variables:

#!/usr/bin/env bash
mapfile file_var < file.txt

for i in "${file_var[@]}"; do
	echo "${i}"
done

Notarás que lo anterior también produce una salida extrañamente espaciada que no se alinea con lo que hay dentro del archivo, lo que se puede resolver agregando -t opción al mapfile comando:

#!/usr/bin/env bash
mapfile -t file_var < file.txt

for i in "${file_var[@]}"; do
	echo "${i}"
done

Por último, puede notar que lo siguiente no funciona:

#!/usr/bin/env bash
cat file.txt | mapfile -t file_var

Esto se debe a que el mapfile El comando en el lado derecho de la canalización se ejecuta en una subcapa (o en otras palabras, una nueva instancia de Bash), que no puede afectar su caparazón actual.

Fuente:coloque variables de un archivo en el entorno de su shell

Digamos que tiene el siguiente archivo imaginario, config.sh , con el siguiente contenido:

username=linuxhandbook
domain=linuxhandbook.com

¿Qué sucede si desea tomar el contenido de ese archivo y colocarlo en el entorno de su shell actual?

Esto se puede hacer simplemente usando el comando fuente:

source config.sh

Luego puede verificar que las variables se asignaron como se esperaba:

Debajo del capó, la source El comando en realidad ejecuta el archivo especificado en el entorno de su shell actual, por lo que escribir cualquier comando en ese archivo en realidad haría que se ejecutaran al ejecutar source .

Por ejemplo, pongamos lo siguiente en config.sh :

name="Linux Handbook"
echo "Hello ${name}!"
echo "Have a good day!"

Si luego ejecutamos soure config.sh , verás que los dos echo se ejecutan los comandos, así como el name variable siendo asignada:

También puede usar . en lugar de source , que actúa de la misma manera que source lo haría.

Resumiendo

Y así estará más avanzado en su camino para realizar tareas más poderosas y útiles, mientras puede permanecer dentro de Bash.

¿Hay otros comandos que usa con frecuencia en Bash? Siéntase libre de dejar cualquiera de ellos en los comentarios a continuación.


Linux
  1. Lo que probablemente no sabías sobre sudo

  2. 4 formas útiles de saber el nombre del dispositivo USB conectado en Linux

  3. ¿Por qué la sustitución del proceso Bash no funciona con algunos comandos?

  4. ¿Cómo sé el nombre del archivo de script en un script Bash?

  5. ¿Cómo se normaliza una ruta de archivo en Bash?

Declaraciones If-Else de Bash:todo lo que necesita saber

3 comandos de Linux que has olvidado

Todo lo que necesita saber sobre el sistema de archivos de Linux

Todo lo que necesita saber sobre el comando Chmod de Linux

Todo lo que necesita saber sobre el sistema operativo Linux Zorin

Todo lo que necesita saber sobre el sistema operativo Peppermint Linux