Bash tiene varios comandos que vienen con el shell (es decir, construido dentro del shell bash).
Cuando ejecuta un comando incorporado, bash shell lo ejecuta inmediatamente, sin invocar ningún otro programa.
Los comandos incorporados de Bash Shell son más rápidos que los comandos externos, porque los comandos externos generalmente bifurcan un proceso para ejecutarlo.
En este artículo, revisemos algunas funciones integradas útiles de bash shell con ejemplos.
1. Ejemplo de comando de exportación de Bash
El comando de exportación se usa para exportar una variable o función al entorno de todos los procesos secundarios que se ejecutan en el shell actual.
export varname=value
export -f functionname # exports a function in the current shell.
Exporta una variable o función con un valor. El comando "env" enumera todas las variables de entorno. En el siguiente ejemplo, puede ver que env muestra la variable exportada.
$ export country=India $ env SESSIONNAME=Console country=India _=/usr/bin/env
El comando "exportar -p" también muestra todas las variables exportadas en el shell actual.
2. Ejemplo de comando Bash eval
El comando eval combina todos los argumentos proporcionados y evalúa la expresión combinada y la ejecuta, y devuelve el estado de salida del comando ejecutado.
$ cat evalex.sh if [ ! -z $1 ] then proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | grep $1" else proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu" fi eval $proccomm
El fragmento de código anterior acepta un argumento, que es el patrón para un comando grep. Esto enumera los procesos en el orden de uso de la CPU y greps para un patrón particular dado en la línea de comando.
3. Ejemplo de comando bash hash
El comando hash mantiene una tabla hash, que tiene los nombres de ruta del comando usado. Cuando ejecuta un comando, busca un comando en la variable $PATH.
Pero si el comando está disponible en la tabla hash, lo recoge desde allí y lo ejecuta. La tabla hash mantiene el número de aciertos encontrados para cada comando usado hasta ahora en ese shell.
$ hash hits command 1 /usr/bin/cat 2 /usr/bin/ps 4 /usr/bin/ls
Puede eliminar un comando en particular de una tabla hash usando la opción -d y la opción -r para restablecer la tabla hash completa.
$ hash -d cat $ hash hits command 2 /usr/bin/ps 4 /usr/bin/ls
4. Ejemplo de comando Bash pwd
pwd es un comando integrado de shell para imprimir el directorio de trabajo actual. Básicamente, devuelve el valor de la variable integrada ${PWD}
$pwd /home/sasikala/bash/exercises $echo $PWD /home/sasikala/bash/exercises
5. Ejemplo de comando de solo lectura de Bash
El comando de solo lectura se usa para marcar una variable o función como de solo lectura, que no se puede cambiar más.
$ cat readonly_ex.sh #!/bin/bash # Restricting an array as a readonly readonly -a shells=("ksh" "bash" "sh" "csh" ); echo ${#shells[@]} # Trying to modify an array, it throws an error shells[0]="gnu-bash" echo ${shells[@]} $ ./readonly_ex.sh 4 readonly_ex.sh: line 9: shells: readonly variable
6. Ejemplo de comando Bash shift
El comando de cambio se usa para cambiar los parámetros posicionales dejados por N número de veces y cambia el nombre de la variable en consecuencia después del cambio.
$ cat shift.sh #! /bin/bash while [ $# -gt 0 ] do case "$1" in -l) echo "List command" ls shift ;; -p) echo "Process command" ps -a shift ;; -t) echo "Hash Table command" hash shift ;; -h) echo "Help command" help shift ;; esac done $./shift.sh -l -t List command analysis break testing t1.sh temp Hash Table command hits command 1 /usr/bin/ls
7. Ejemplo de comando de prueba Bash
El comando test evalúa la expresión condicional y devuelve cero o uno según la evaluación. Consulte la página del manual de bash para obtener más operadores de prueba.
#! /bin/bash if test -z $1 then echo "The positional parameter \$1 is empty" fi
8. Ejemplo de comando getopts de Bash
El comando getopts se usa para analizar los argumentos de la línea de comando dados. Podemos definir las reglas para las opciones, es decir, qué opción acepta argumentos y cuál no. En el comando getopts, si una opción va seguida de dos puntos, espera un argumento para esa opción.
getopts proporciona dos variables $OPTIND y $OPTARG que tienen índice del siguiente parámetro y argumentos de opción respectivamente.
$ cat options.sh #! /bin/bash while getopts :h:r:l: OPTION do case $OPTION in h) echo "help of $OPTARG" help "$OPTARG" ;; r) echo "Going to remove a file $OPTARG" rm -f "$OPTARG" ;; esac done $ ./options.sh -h jobs help of jobs jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args] Lists the active jobs. The -l option lists process id's in addition to the normal information; the -p option lists process id's only.
9. Comando de cierre de sesión de Bash
Cierre de sesión integrado utilizado para salir de un shell actual.
10. Ejemplo de comando Bash umask
El comando umask establece una máscara de creación de modo de archivo para un proceso actual. Cuando un usuario crea un archivo, su permiso predeterminado se basa en el valor establecido en umask. El permiso predeterminado para el archivo es 666 y se enmascarará con los bits umask cuando el usuario cree un archivo.
Para obtener más detalles, consulte nuestro artículo Permisos de archivos y directorios.
Cuando el usuario crea un archivo, 666 se enmascara con 022, por lo que el permiso de archivo predeterminado sería 644.
$ umask 0022 $ > temporary $ ls -l temporary -rw-r--r-- 1 root root 4 Jul 26 07:48 temporary
11. Ejemplos de comandos Bash set
set es un comando integrado de shell, que se utiliza para establecer y modificar las variables internas del shell. El comando set sin argumento enumera todas las variables y sus valores. El comando set también se usa para establecer los valores de los parámetros posicionales.
$ set +o history # To disable the history storing. +o disables the given options. $ set -o history -o enables the history $ cat set.sh var="Welcome to thegeekstuff" set -- $var echo "\$1=" $1 echo "\$2=" $2 echo "\$3=" $3 $ ./set.sh $1=Welcome $2=to $3=thegeekstuff
12. Ejemplos de comandos de Bash unset
unset incorporado se usa para establecer la variable de shell en nulo. unset también se usa para eliminar un elemento de una matriz y
para eliminar una matriz completa.
Para obtener más detalles sobre la matriz Bash, consulte nuestro artículo anterior 15 Operaciones de matriz Bash
$ cat unset.sh #!/bin/bash #Assign values and print it var="welcome to thegeekstuff" echo $var #unset the variable unset var echo $var $ ./unset.sh welcome to thegeekstuff
En el ejemplo anterior, después de desactivar la variable "var" se asignará con una cadena nula.
13. Ejemplo de comando Bash let
let commands se usa para realizar operaciones aritméticas en variables de shell.
$ cat arith.sh #! /bin/bash let arg1=12 let arg2=11 let add=$arg1+$arg2 let sub=$arg1-$arg2 let mul=$arg1*$arg2 let div=$arg1/$arg2 echo $add $sub $mul $div $ ./arith.sh 23 1 132 1
14. Ejemplo de comando Bash shopt
El comando incorporado shopt se usa para configurar y desactivar las opciones de un shell. Con este comando, puede hacer uso de la inteligencia de shell.
$cat shopt.sh #! /bin/bash ## Before enabling xpg_echo echo "WELCOME\n" echo "GEEKSTUF\n" shopt -s xpg_echo ## After enabling xpg_echo echo "WELCOME\n" echo "GEEKSTUF\n" # Before disabling aliases alias l.='ls -l .' l. # After disabling aliases shopt -u expand_aliases l. $ ./shopt.sh WELCOME\n GEEKSTUF\n WELCOME GEEKSTUF total 3300 -rw------- 1 root root 1112 Jan 23 2009 anaconda-ks.cfg -r-xr-xr-x 1 root root 3252304 Jul 1 08:25 backup drwxr-xr-x 2 root root 4096 Jan 26 2009 Desktop shopt.sh: line 17: l.: command not found
Antes de habilitar la opción xpg_echo, la instrucción echo no expandía las secuencias de escape. "yo". tiene el alias de ls -l del directorio actual. Después de deshabilitar la opción expand_aliases en Shell, no expandió los alias, podría notar un error l. comando no encontrado.
15. Ejemplo de comando Bash printf
Similar a printf en lenguaje C, bash printf incorporado se usa para formatear operaciones de impresión.
En el ejemplo 13, el script realiza una operación aritmética en dos entradas. En esa secuencia de comandos en lugar de la instrucción echo, puede usar la instrucción printf para imprimir la salida formateada como se muestra a continuación.
En arith.sh, reemplace la sentencia echo con esta sentencia printf.
printf "Addition=%d\nSubtraction=%d\nMultiplication=%d\nDivision=%f\n" $add $sub $mul $div $ ./arith.sh Addition=23 Subtraction=1 Multiplication=132 Division=1.000000