Un truco genial con scripts bash con arreglos

[*]

Si hace muchos scripts de bash, sabe que hay algunos trucos geniales que puede hacer con ellos. Bash es una herramienta muy flexible. La mayoría de los usuarios de Linux no se dan cuenta de lo poderoso que es y rara vez lo usan. Pero cuando lo necesitas, siempre está ahí. Juego mucho con bash y lo uso para varias cosas. La línea de comando es, por supuesto, mi amiga. Con un comando, puede hacer casi cualquier cosa, pero a veces la cosa más simple, por ejemplo, contar archivos en un directorio, se le puede escapar. Para hacer esto como equipo, debe emitir algo como ls -1 ~ / | inodoro -l. No siempre es fácil de recordar. Pero supongamos que puede crear un script Bash simple que contará la cantidad de archivos en un directorio y enumerará esos archivos. Eso sería genial... y aplicable.

En este artículo, le presentaré un script bash simple que hará exactamente eso: contar y enumerar la cantidad de archivos en un directorio. El script bash es bastante simple y aprovecha las matrices.

¿Qué es una matriz?

Si no está seguro de qué es una matriz, no tenga miedo. Una matriz es solo una disposición sistemática de objetos. Esta disposición suele ser en filas y columnas. Por supuesto, hay definiciones mucho más complejas de arreglos... especialmente cuando se trata de programación de aplicaciones. Pero por el bien de este escenario bash, es seguro detenerse en esta definición.

Texto

Figura 1

El script para la matriz es bastante simple. La Figura 1 muestra cómo se verá el script si lo edita en su editor favorito. Y para que disfrutes de copiar/pegar te doy el propio código:

matriz = (`ls`)

wd = `contraseña`

longitud = $ {# matriz[*]}

notificar-enviar "Tienes $ len objetos en $ wd".

yo = 0

aún [ $i -lt $len ]; que hacer

echo "$ i: $ {matriz[$i]} "

déjame ++

hecho

Tenga en cuenta que la secuencia de comandos anterior utiliza el sofisticado comando de notificación y envío que le presenté recientemente. Este script usa una matriz para contar, enumerar y numerar archivos en un directorio. Ahora, si observa el código, verá que también enumera los archivos (y los números de cada uno). Esto no es práctico con informe-enviar comando, por lo que en su lugar usamos un sistema de notificación solo para informar al usuario cuántos archivos hay en el directorio. Esto es normal porque la salida completa estará en la línea de comandos.

Lo que debe hacer es copiar este código en un archivo, guardar el archivo (llamémoslo formación) y luego dé a este archivo permiso para ejecutar con el comando chmod ugo + matriz x. Le doy permisos de usuario/grupo/otros para ejecutar en caso de que copie este archivo / usr / papelera.

Naturalmente, este escenario es un poco erróneo. Por ejemplo, si copió este script en un archivo / usr / papelera directorio puede ejecutarlo desde cualquier directorio y le dará todos los resultados necesarios. Sin embargo, si intenta ejecutar este comando desde el cuadro de diálogo de inicio (haga clic en F2), no obtendrá una conclusión. Por lo tanto, esta secuencia de comandos, tal como está, se limita a la línea de comandos.

Figura 2

Si ejecuta el script desde la línea de comando, los resultados se verán como en la Figura 2. Aquí puede ver ambos informe-enviar resultados, así como los resultados impresos en el terminal. Un pequeño gran truco.

Obviamente, este escenario es un poco limitado, ¿verdad? El propósito real de este ejercicio era mostrarle un script de shell un poco más avanzado, así como también cómo el script puede interactuar con informe-enviar mandar

Observaciones finales

Shell scripting es una herramienta sorprendentemente flexible y útil. Todos aquellos usuarios de Linux que evitan la línea de comandos no tienen idea de la potencia que les falta. Con este simple script puedes cambiarlo o usarlo para cualquier cantidad de posibilidades. Volveremos a las matrices en el script y mucho, mucho más.

Artículos de interés

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Subir

Si continuas utilizando este sitio aceptas el uso de cookies. Más información