sábado, 6 de febrero de 2021

scripts en Bash... para torpes (I)

Voy a meterme en una aventura de la que no se cómo saldré… y ni si la abandonaré por inviable. Entraré en materia diciendo que me pasa muy a menudo que, si quiero hacer algún pequeño script, para facilitarme algo, me topo con mi ignorancia en programación. Y, lo que es peor, que por mucho que aprenda (o busque y estudie, en un momento, por una necesidad determinada) la falta de uso hace que se me olvide fácilmente lo aprendido. Un ejemplo es que hace unos tres años me metí en este Blog, reconozco que ‘entrando como un elefante en una cacharrería’ (y con cierto ‘barullo mental’), con el tema del ‘scripting’... y prácticamente he olvidado todo lo que allí decía.

Lo que me propongo hacer ahora es ordenar un poco las ideas y, en este ‘Bash para torpes’, tratar de aclarar algunos conceptos, con el fin de poder 'jugar a hacer’ pequeños scripts… y sobre todo a entender mejor lo que te aconsejen, o leas.
Asi que debe quedar claro que esto no pretende ser un cursillo de programación (para torpes).


Y es que, en primer lugar, yo no tengo ni idea de Programación... y lo único que intento es tratar de aclararme yo mismo. Y si lo pongo en el Blog es porque es una buena forma de tenerlas siempre a mano. Por tanto, parangonando las conocidas siglas ‘WYSIWYG’, del What You See Is What You Get (en español, "lo que ves es lo que obtienes")… que nadie me pida más, que esto es lo doy de mi...

El grave problema de los novatos
Tengamos siempre presente una cuestión muy clara: que programar (en Bash, o en lo que sea) se hace a través de unos comandos (y a través de un saber interpretar un idioma de programación, y sus reales posibilidades). Y hay muchísimos comandos. Y los comandos, además, ofrecen distintas funcionalidades al podérseles asignar diversos modificadores, u opciones. Un programador ha estudiado estos comandos, el idioma que los correlaciona, y los conoce bien. Un novato no.
Y la conclusión es muy clara: lo que puede ‘programar’ un novato va a estar muy limitado al alcance de sus conocimientos sobre los comandos. Vamos, que viene a ser como querer interpretar música, al piano, sin haber estudiado solfeo. O sea, ‘si tienes buen oido’, algo saldrá, pero alguien que ha ido al Conservatorio lo hará, probablemente, mejor.
Lo único de lo que disponemos los novatos, aparte de Google, es del ‘Manual’ al que se accede, por consola, con ‘man nombre_comando’ (también puede aportar datos ‘help nombre_comando’, e igualmente ‘nombre_comando --help’ asi que puede ser recomendable probar todo, que a veces hay comandos ‘que no son del sistema’ y se encuentra ayuda complementaria ahí).
Por cierto, y antes de nada, no olvidemos hacer un
sudo apt install manpages-es manpages-es-extra
para poder tenerlo (básicamente) en español. Y tampoco es malo conocer un poco a fondo el manual viendo el ‘manual de man’ con ‘man man’, o sus archivos (y ver que a veces hay un man1, man2, man3…) con
ls /usr/share/man/es
Y que puede ser útil para buscar, extraer e imprimir o copiar alguna página del man.
Aunque el problema, básico también, para un novato… es entender lo que dice el manual. Prueba, por ejemplo, con ‘man bash’… y entonces te das cuenta de que, como cuando intentas leer una partitura sin saber nada de solfeo... te faltan ‘fundamentos’.

Y es cuando (en mi caso) dudo seriamente de si todo lo que pretendo hacer no es más que una pérdida de tiempo, porque no conduce a nada. Pero bueno, puestos a ello...

La famosa consola
Acostumbrados al entorno gráfico, a los clic de ratón, etc, el novato mira la consola como una cosa anticuada, y para frikis… cuando, lo cierto es que es una herramienta muy útil, que te permite, muy a menudo, trabajar mucho más rápido que en un entorno de ‘ventanas y clics de ratón’. Así que no hay que tenerle miedo, sino que es bueno aprender a usarla… aunque sea para ‘copiar y pegar’ cosas que veas en foros y blogs sobre Linux.
Debo reconocer que, hasta ahora, cuando mencionaba la consola, nunca había pasado de decir más de esto. Pero hoy me apetece dejar por escrito algunas cuestiones básicas sobre ella.
Si vas (normalmente) a Menu-Administración-Terminal (consola, o terminal, se usan indistintamente) y clicas en su icono se te abrirá ‘una consola de usuario’ donde (en mi caso) verás...
doc@debian:~$ (y un cuadrito blanco que parpadea)
Y lo que indica esta información es (en este caso)...
a) que el propietario de esta consola abierta (el que tiene permisos de uso) es el usuario ‘doc’,
b) que está (es lo que significa el simbolo @ de la arroba) en una máquina que se llama ‘debian’,
c) Y precisamente en la ruta principal de su carpeta personal (o /home), indicado por la virgulilla « ~ »). Y
d) Finalmente, la consola nos dice que está esperando recibir algo. Esto se indica por el símbolo $ y el cuadradito que parpadea, que se llama ‘prompt’ (y que puede variar dependiendo del intérprete de comandos, e incluso es configurable)

Claro que, si escribimos ¿qué hora es? nos dirá ‘orden no encontrada’, o similar. Y es que solo acepta ‘lo que entiende su intérprete de comandos’. Y solo entiende de la terrible palabra que ya he comentado: de ‘comandos’. O de algún script, o alguna orden (‘si están bien confeccionados’ porque si no, también dara ERROR). La ventaja es que también acepta el copiar + pegar cosas, que siempre lo sabremos hacer los novatos (por eso dije antes que no se necesita ser experto programador para poder usar la consola).

Y, para terminar, me gustaría hablar (solo un poco) de los atajos de teclado 
Para la consola, claro. Desde luego, el más utilizado es el de Copiar y Pegar. Hace unos años a alguien se le ocurrió mejorar la seguridad añadiendo la necesidad de pulsar también la tecla de las Mayúsculas, y copiar y pegar, en consola, suelen ser, por defecto, Mayusc+Ctr+C y Mayusc+Ctrl+V. Pero normalmente en Editar-Preferencias-Atajos (o similar) de casi todas las consolas se pueden cambiar al modo tradicional de Ctrl+C y Ctrl+V, mucho más cómodos.

Otro: si queremos dejar limpia la consola debemos usar el comando ‘clear’. Pero es mucho más rápido ‘automatizarlo’ con el atajo Ctrl+L

Más: con la consola abierta, usando las flechas del teclado ‘arriba’ y ’abajo’ nos van apareciendo, ordenadamente, los últimos comandos u órdenes que hayamos introducido, lo que nos facilita enormemente repetirlas.

Otra forma de simplificar escribir comandos: si escribimos la primera (o primeras) letras de un comando y damos al tabulador del teclado, en la consola nos aparecerán todas los comandos que cumplan esa condición… por lo que nos puede servir para recordar algún comando (o, si con las teclas pulsadas llegamos a uno solo, ya nos aparece, sin necesidad de tener que teclearlo completo).


Y, finalmente, no pierdas el tiempo tecleando en consola un largo texto con la ruta y el nombre de un archivo. Es mucho más fácil o bien abrir una consola en esa ruta, y escribir solo el nombre del archivo o, aún más fácil, arrastrar el archivo hasta el ‘prompt’ de la consola… y se copiará.
Prueba a hacerlo...


Nota final: también existe la consola de ‘superusuario’, o root, pero no quiero alargarme, cuando lo habitual es, normalmente, trabajar ‘con privilegios de root’ desde la consola de usuario, anteponiendo a las ordenes el mandato ‘sudo’ (y la contraseña del administrador, o root). O pasando a ella (en el caso de Debian) al escribir ‘su’ y luego poner esa contraseña.


Ir al Sumario (del tema)

No hay comentarios:

Publicar un comentario