Tú has estado ahí, yo también, y volveremos a pasar: se te presenta una tarea cualquiera y acabas viendo que la manera más sencilla de automatizarla es mediante un script de terminal.
Con suerte, podrás usar Fish, pero todos sabemos que no está siempre disponible así que acabarás usando Bash, salvo que tal vez quieras que tu script corra en Alpine y entonces tengas que usar Ash (SH para Busybox), o puede que hasta haya algo peor… 👿
¿Y no habría una forma de escribir scripts de terminal que no implicara elegir entre usar una sintaxis comprensible y mantenible, o tener portabilidad?
Te presento a Plumbum.
Si usas Fish como tu shell, cosa que recomiendo, tal vez te hayas topado con el problema de que no puedes hacer una cosa tan sencilla en Bash como:
una_variable="$(cat un_archivo_con_varias_lineas.txt)"
echo "$una_variable"
Teníamos un ordenador con 1 usuario, y ahora pasan a ser más, pero necesitan poder compartir documentos.
Para lograrlo, seguiremos todas las buenas prácticas posibles:
No sé si esto está disponible en otras distribuciones, pero es una pasada. Escribes un comando, y si no encuentra el paquete que lo ejecuta, te lo instala automáticamente:
Supongamos que estás actualizando tu Linux...
# dnf -y update # Si fuera en Fedora # apt-get -y update && apt-get -y upgrade # Si fuera en Debian
... y te tienes que ir, y te gustaría apagar tu ordenador cuando acabe, ¡pero todavía le queda un rato largo!
Una de las cosas más curiosas que suceden hoy en día es que la gente se pelea por tener un teléfono con más megapíxeles que nadie, para luego mandar las fotos por WhatsApp y que pierdan toda su calidad.
Ironías aparte, lo que más me fastidia de todo en realidad es que WhatsApp le quita los metadatos EXIF a las imágenes.
Contienen un montón de información valiosa para los amantes de la fotografía, o para cualquiera que guste de organizarse bien su colección de fotos:
Con esos datos, puedes comparar qué tal saca las fotos tal o cual cámara o teléfono, y así no llevarte sorpresas si lo compras.
También (lo que más me interesa para esta entrada), un programa de organización de colecciones de fotos puede usar la fecha para organizarte las fotos automáticamente, o la ubicación para pintártelas en un mapa.
Un título bien largo, pero es lo que vamos a hacer
Tengo una unidad de red llamada share en mi servidor de datos de red llamado host que quiero montar usando Samba y GVFS automáticamente, pero al ejecutar:
$ gvfs-mount smb://host/share
Siempre me pide lo siguiente:
User [tu_usuario]: Domain [WORKGROUP]: Password:
Y no tengo forma de automatizar eso.
Primero, enchufa tu móvil Android a tu ordenador para averiguar el ID con el que se
monta, para reemplazarlo en la fila que pone
PHONE_ID=XXXX-XXXX
.
Ahora copia este script en ~/.local/bin/rsync-music2phone
(por ejemplo):
A estas alturas todos deberíamos saber qué es Shellshock, pero a modo de resumen: una seria vulnerabilidad en bash que nos puede salir muy cara si no lo actualizamos, y que lleva escondida entre nosotros unos 14 años.
Mi problema es que tenía un servidor bastante viejo ya, con una versión de Ubuntu anticuada, pero que por problemas de pereza agenda nunca he actualizado.
Gracias a Shellshocker ha sido coser y cantar.
Si bien siempre me ha encantado Bash, hay que reconocer que Fish es increíble:
No te tienes que complicar configurando absolutamente nada, por defecto ya viene coloreando tu terminal, auto completando tus comandos y permitiendo llevar todo esto de las configuraciones de manera muy simple e intuitiva mediante una interfaz web (local, claro está) en donde tendrás al alcance absolutamente todo lo que quieras modificar; desde el historial de comandos, hasta las funciones a ejecutarse por defecto, colores, autocompletado inteligente y/o personalizado, ¿Ya les dije que el auto completado es inteligente y simplemente aprende tus comandos? ¡No tienes que decirle que haga nada, él solito aprende!