Skip to main content

P.033: Introducción a BashScript [Miércoles]

Saludos, he aquí Jaroslav con un nuevo Podcast.

Shell:
  • Programa intermediario entre ordenador y usuario, que funciona en base a comandos
  • Permite acceder a los servicios del Sistema Operativo
  • El tipo de Shell varía de un sistema a otro
  • GNU/Linux generalmente utiliza Bash
BashScript:
  • Secuencia de ordenes en programadas en bash 
  • Permite automatizar tareas
  • Permite crear nuestros propios programas
  • Permite  crear los modos de ejecución de nuestros programas (Lo explicaré mejor más adelante)

     Para programar en Bashscript (O sea, un Script de Bash), primero necesita conocer los comandos básicos, como "echo", que imprime todo lo que escribamos en la pantalla. Empecemos por el típico "Hola Mundo"... Sí, puede ser tedioso hacerlo siempre, pero ya es una tradición empezar desde aquí. Normalmente, con la práctica escribes "Hola Mundo" que no digan Hola Mundo. Pero ese no será el caso de este tutorial.

Pasos para empezar a programar:

  1. Abre tu terminal de GNU/Linux
  2. Ejecuta la orden mkdir ~/Mis\ Archivos\ SH
  3. Entra en la carpeta cd ~/Mis\ Archivos\ SH
  4. Crea tu primer Bashscript con vim hola_mundo.sh
  5. En caso de toner vim instalado, instalalo
  6. Asegúrate de estar en modo texto (Si no lo estas, oprime la tecla "I latina")
  7. Escribe
#!/bin/bash
# Esto es un Comentario (Se ignora por el ordenador)
# Los Comentarios sirven para ordenar contenido
# Los comentarios, muchas veces, sirven para que los programadores pongan sus datos
# Lo siguiente imprime Hola mundo
echo "Hola Mundo"

     Si ya escribiste lo anterior, sal del modo texto con escape, y guarda el documento con el comando :wq (Guardar y Salir). Ahora ejecuta en el terminal el comando sudo chmod +x hola_mundo.sh si estás como usuario normal, y chmod +x hola_mundo.sh si estás como usuario Root.

     Si eres usuario normal debe salirte este signo $, si eres usuario Root (O Superusuario) deberías er este otro #. Pero normalmente (Salvo pocas excepciones), la mayoría de Distros (O sea, distribuciones de sistemas GNU/Linux) te abrirán la terminal en modo de usuario normal.

     Me disculpo que mi Shell se vea así. Ya que cambie la Shell por defecto por "Oh My Zsh". Pero ustedes aún no necesitan que les enseñe eso. Tal vez más adelante.

     Ahora sólo ejecutas tu Script con ./[ScriptSH], o sea ./hola_mundo.sh. Si acaso te sale un error, puede que no estés dentro de la carpeta. Pon cd ~/Mis\ Archivos\ SH, e inténtalo de nuevo. Si tienes otro error, es que no diste los privilegios de ejecución, pon sudo chmod +x hola_mundo.sh, y si vez un error es que estás en modo Root y necesitas omitir el sudo, entonces ejecuta chmod +x hola_mundo.sh. Si sale otro error (Que ya sería raro), es posible que escribieras mal el nombre del archivo. Pon el comando ls y verás todos los nombres de los archivos dentro de la carpeta donde te encuentras.

     Recuerda también que Linux distingue mayúsculas de minúsculas. Así que asegúrate de escribir el nombre correctamente. Puedes usar la tecla Tab para auto-completar.

     Pasemos ahora a las variables, y posteriormente a las funciones. Una variable, como su nombre lo indica, es algo que varía. Son llamadas al Sistema de donde se extraen los datos ingresados por el programa o usuario, y que generalmente sobre estos resultados se puede ejecutar una orden específica,

     Una función, es un conjunto de ordenes que serán ejecutadas al ingresar una orden específica. Esto se entenderá mejor con ejemplos, vamos a modificar nuestro programa. Asegurate de estar en la carpeta correcta, o ingresa a ella con cd ~/Mis\ Archivos\ SH, ahora ejecutas vim hola_mundo.sh. No necesito decir que entres al modo texto.

#!/bin/bash
# La orden read convertirá lo que ingresemos en una variable
# El símbolo $ sirve para indicar una llamada a una variable
echo "Ingrese su nombre"
read H
echo "Hola Mundo, mi nombre es $H"
echo "Mi hostname es $USER"

     Ejecuta, y mira el resultado. Ya tienes un programa que dice "Hola Mundo", y escribe cualquier nombre. Puede que ahora te preguntes "[...] ¿Para qué sirve? [...]". No sirve de nada, sólo para aprender a programar. Así que pasemos a hacer algo útil. empieza descargando imágenes a tu ordenador

     Ingresa al terminal y has una copia de tu archivo "~/.bashrc", cp ~/.bashrc ~/bashrc-copia, el comando cp es una complexión de la palabra "Copy" (Copiar). Copiará el archivo que indiquemos primero, y lo guardará con el nombre que le indiquemos segundo. Ahora podemos modificar ~/.bashrc, sabiendo que tenemos una copia de respaldo.

     Ahora ejecutamos vim ~/.bashrc en el terminal, y añadiremos esta función en el documento:

img-ordenar{
mkdir PNG JPG JPEG GIF WEBP
mv *.[pP][nN][gG] PNG
mv *.[jJ][Pp][gG] JPG
mv *.[jJ][Pp][eE][gG] JPEG
mv *.[gG][iI][fF]
mv *.[wW][eE][bB][pP]
}

     Lo que está entre corchetes es la función que hemos programado. Ahora guardemos los cambios yendo al modo normal de vim, y ejecutando el comando :wq, cerremos el terminal con exit,y abramos otro terminal. Vamos a la carpeta donde están nuestras imágenes cd [Ruta], ejemplo cd ~/Downloads, y ejecutamos nuestra función con img-ordenar.

     Como podremos ver, las imágenes se guardarán automáticamente en las carpetas que les hemos indicado. Este nuevo comando ya estará disponible, de ahora en más, siempre que lo necesitemos.

     Una buena idea es crear nuestra función para hacer actualizaciones automáticas. Pero los comandos de actualización varían de una distro a la otra. Por lo que enseñaré funciones para añadir a nuestro ~/.bashrc para Arch Linux y derivados, Debian y derivados, y Ubuntu y derivados.

# Esta función es sólo para Arch y derivados
pcmn{
yes | sudo pacman -Syuu
}

     En el ejemplo anterior, el comando yes le da "Sí" a todo lo que pregunte el equipo. Si no estamos seguros, podemos omitirlo para evitar incompatibilidades de software (Especialmente si tienen código compilado. Si no sabés que es compilar, entonces seguramente NO lo tienes)

     Otra forma de hacer lo mismo es con el comando alias, este lo explicaré más adelante. Por ahora prefiero explicarles el tema de las funciones. Las Tuberías o Pipes, se explicarán en el próximo programa del Miércoles de Informática.

# Esta función es sólo para Debian y derivados (También funcionaría con Ubuntu)
sapt{
yes | sudo apt update ; yes | sudo apt upgrade
}

     Ahora pasemos a la función de Ubuntu y derivados, que como verán es exactamente la misma que la anterior, pero con una pequeña diferencia.

# Esta función es sólo para Ubuntu y derivados (NO funciona con Debian)
sapt{
yes | sudo apt-get update ; yes | sudo apt-get upgrade
}

     Aquí es donde se preguntarán la diferencia apt entre y apt-get. Pues la única respuesta, es que apt-get es una versión modificada de apt, lanzada por Cannonical para su distro Ubuntu, y todas sus derivadas.

     Por defecto apt-get NO se encuentra disponible en Debian, y aunque  apt también funcione para Ubuntu y derivadas, el equipo de Cannonical en su momento recomendó usar apt-get para actualizar su distro (Ubuntu). Supongo que ellos sabrán el porqué de que lo digan. Después de todo son el equipo detrás de la creación y/o mantenimiento de Ubuntu. 

Comments

Popular posts from this blog

Git-Hub da de baja "Youtube-dl" de su sitio web

      Escribo triste la triste noticia. La lluvia que golpea por fuera de la casa, resuena como eco de cientos de llantos. Es lluvia rápida y melancólica me recuerda la triste noticia.      Ignorarán algunos de que trata, otros también lo lamentarán. Pero lo cierto es que desde que Microsoft compró Git-Hub ya nada ha sido igual.      Ahora, por reclamo de la RIAA, la empresa que registra los derechos musicales de USA (Sólo de este País), Git-Hub decidió remover youtube-dl para todo el mundo desde sus repositorios.      Youtube-dl es una aplicación de línea de comandos que permite descargar en cuestión de segundos vídeos de Youtube, Vimeo, y cualquier web que no encripte los enlaces de los vídeos. Así que es debatible si youtube-dl incumplia o no delitos.      Creo que no, ya que también podías descargar música independiente. A veces compartida gratuitamente por sus propios creadores, y que no es mala idea conserv...

P.051: Compartiendo archivos en Red Local (I) [Miercoles]

Saludos, he aquí Jaroslav con un nuevo Podcast.      Conecta todos tus ordenadores a una red para compartir tus archivos. Te enseño como hacerlo. No me responsabilizo del mal uso que puedan hacer de este tutorial. El mismo está pensado para que el dueño de los archivos acceda a otros archivos en otros ordenadores que también sean suyos.      Si estás en Debian, debes entrar en un terminal y ejecutar sudo apt install openssh-server , en la máquina que usaras como servidor.       Las máquinas de Servidores también pueden interactuar a su vez como clientes. De este modo se podría compartir todos tus archivos entre todos tus ordenadores y dispositivos con Android. De hecho puedes usar tmux para compartir ssh, o bien usar vlc en Android y Windows para visualizar vídeos compartidos mediante el protocolo ssh.      Ahora en la máquina que usaremos de Cliente (Puede ser también usada de Servidor), en una terminal escribimos sudo apt ins...

P. 049: Interpretación [Lunes]

Saludos, he aquí Jaroslav con un nuevo Podcast.      Un podcast con trucos básicos de actuación para aprender a ponerse en los zapatos de algún personaje que nos guste. Por cierto un pequeño dato que menciono en el Podcast es que estoy trabajando de copywriter. A quien requiera mis servicios me puede contactar en harosman@protonmail.com