Esta publicación de blog es la segunda de dos que cubren algunos consejos y trucos prácticos para aprovechar al máximo el shell Bash. En la primera parte, cubrí la historia, el último argumento, el trabajo con archivos y directorios, la lectura de archivos y las funciones de Bash. En este segmento, cubro variables de shell, búsqueda, descriptores de archivos y operaciones remotas.
Usar variables de shell
Las variables de Bash las establece el shell cuando se las invoca. ¿Por qué debería usar hostname
? cuándo puedo usar $HOSTNAME, o por qué debería usar whoami
¿Cuándo puedo usar $USER? Las variables Bash son muy rápidas y no requieren aplicaciones externas.
Estas son algunas variables de uso frecuente:
$PATH
$HOME
$USER
$HOSTNAME
$PS1
..
$PS4
Usa el echo
Comando para expandir variables. Por ejemplo, la variable de shell $PATH se puede expandir ejecutando:
$> echo $PATH
[ Descargar ahora:una guía para administradores de sistemas sobre secuencias de comandos Bash. ]
Utilice el comando de búsqueda
El find
command es probablemente una de las herramientas más utilizadas dentro del sistema operativo Linux. Es extremadamente útil en shells interactivos. También se utiliza en guiones. Con find
Puedo enumerar archivos más antiguos o más nuevos que una fecha específica, eliminarlos en función de esa fecha, cambiar los permisos de archivos o directorios, etc.
Familiaricémonos más con este comando.
Para listar archivos con más de 30 días, simplemente ejecuto:
$> find /tmp -type f -mtime +30
Para eliminar archivos de más de 30 días, ejecute:
$> find /tmp -type f -mtime +30 -exec rm -rf {} \;
o
$> find /tmp -type f -mtime +30 -exec rm -rf {} +
Si bien los comandos anteriores eliminarán archivos de más de 30 días, tal como están escritos, bifurcan el rm
comando cada vez que encuentran un archivo. Esta búsqueda se puede escribir de manera más eficiente usando xargs
:
$> find /tmp -name '*.tmp' -exec printf '%s\0' {} \; | xargs -0 rm
Puedo usar find
para listar sha256sum
archivos solo ejecutando:
$> find . -type f -exec sha256sum {} +
Y ahora para buscar y deshacerse de los archivos .jpg duplicados:
$> find . -type f -name '*.jpg' -exec sha256sum {} + | sort -uk1,1
Descriptores de archivos de referencia
En el shell de Bash, los descriptores de archivo (FD) son importantes para administrar la entrada y salida de los comandos. Muchas personas tienen problemas para comprender correctamente los descriptores de archivos. Cada proceso tiene tres descriptores de archivo predeterminados, a saber:
Código | Significado | Ubicación | Descripción |
---|---|---|---|
0 | Entrada estándar | /dev/stdin | Teclado, archivo o alguna secuencia |
1 | Salida estándar | /dev/stdout | Monitor, terminal, pantalla |
2 | Error estándar | /dev/stderr | Los códigos de salida distintos de cero suelen ser>FD2, mostrar |