
Muchas veces en nuestro día como programadores accedemos a la consola para introducir algunos comandos, sea para compilar, hacer un commit o alguna secuencia específica que tiene requiera nuestro trabajo. Un ejemplo es a la hora de hacer un commit:
git add . git commit - m "<nombre del commit>" git push origin master
Solo introducir esta secuencia de comando nos tomaría de 15 a 20 segundos. Si tenemos en cuenta que un programador común realiza de 5 a 15 commits en el día. Sacando las cuentas, el tiempo que invertimos al año, solo escribiendo estos comandos es el siguiente:
- En una semana 5 minutos
- En un mes 20 minutos
- En un año 4 horas
Si reducimos esos comandos a uno solo tardaremos solo 5 segundos.
gp "<nombre del commit>"
Pero cómo hacemos esto, el comando “gp” no existe por default, pero lo podemos crear, con una herramienta del intérprete de comandos llamado, Alias.
Los alias son atajos de consola, que pueden contener comandos o conjuntos de otros comandos. Y con los alias podemos encapsular rutinas como la que mencionamos antes.
Personalizando un alias
Dependiendo de tu shell o intérprete de consola, iras a un archivo dentro de tu carpeta personal:
- .bashrc en el caso de que tengas BASH como intérprete por defecto
- .zshrc en el caso de que tengas ZSH como intérprete por defecto Con el comando “echo $SHELL” sabrás cual tienes
Yo uso ZSH como mi intérprete por defecto
1. Creando el archivo
Nos dirigimos a la carpeta personal y abrimos una terminal y copiamos los siguientes comandos:
touch git_commands.sh nano git_commands.sh
Se abrirá la interfaz de nano donde estaremos editando el archivo git_commands.sh, pegamos los siguientes comandos de git.
git add . git commit -m $1 git push origin master
Ahora guardamos el archivo con los accesos directos
- Ctrl+O (guardar)
- Enter (confirma el nombre del archivo)
- Ctrl+X (salir)
Ya teniendo el archivo de comandos tenemos que hacer un alias del archivo dentro del bash, dentro de la misma consola ingresamos lo siguiente:
echo "alias gp=\"source ~/git_commands.sh\"" >> ~/.bashrc
o en el caso de ZSH
echo "alias gp=\"source ~/git_commands.sh\"" >> ~/.zshrc
Lo que hace este comando es decirle al interprete que busque el archivo .bashrc o .zshrc y agregue una linea al final.
2. Ejecutando el script
Cerramos la consola y listo, ya nuestro script de consola está listo. Lo que hace este script es condensar en una sola línea la rutina de agregar al worker directory, hacer un commit y hacer un push al repositorio remoto.El modo de uso seria de esta manera:
gp "<nombre del commit>"
3. Otros usos
Ya has aprendido a encapsular una rutina de 3 líneas en una sola, ahora puedes hacer tus propios scripts para tu propia rutina, lo único que tienes que hacer es crear el archivo .sh y referenciarlo con un alias en el bash. Aquí tienes una pagina con todos los comandos que puedes usar para construir tus propios scripts https://devhints.io/bashRecuerda que este archivo .bashrc se ejecuta al inicio del sistema, entonces puedes automatizar tareas al inicio también agregando tus propias líneas.
4. Casos de uso
Yo personalmente tengo 2 scripts que me ayudan mucho en la tarea de programar, sobretodo C y microcontroladores.
mrcompiler.sh
Me ayuda a compilar y ejecutar codigo C, guardando los binarios en una carpeta output
echo "**MrRomo Compiler**" file=$1 filec="${file//.c/ }" if [ -e $file ] then echo "Compilando $file" if [ -d output ] then echo "el directorio output existe" else echo "el directorio output NO existe" mkdir output fi if [ "$2" -eq 0 ] then gcc -o output/$filec -lm $file # Try to compile else gcc -o output/$filec -lm $file -l$2 # Try to compile fi if [[ "$?" -ne 0 ]]; then echo "ERROR" else echo "NO HAY ERROR" ./output/$filec $3 fi else echo "ERROR" echo "El archivo $file no existe" fi
mrrtos.sh
Es un script para trabajar con la ESP32, con el cual subo el código del framework ESP-IDF, me ayuda además de compilar, también limpia los binarios previamente compilados, flashea y abre la terminal serial para ver el código ejecutándose en la ESP32
echo "**MrRomo FREE RTOS Manager**" if [ "$1" = "build" ]; then echo "Compiling the code" make clean make all -j8 fi if [ "$1" = "flash" ]; then echo "Compiling and uploading the code" make all -j8 sudo chmod 777 /dev/ttyUSB0 make flash sudo putty -load "USB0" fi if [ "$1" = "clean" ]; then echo "Delete all compiled code" make clean fi if [ "$1" = "monitor" ]; then echo "Open USB0 Serial Monitor" sudo putty -load "USB0" fi
Si es una tarea repetitiva, siempre se puede expresar en código, no importa que tomes mucho tiempo en hacer el script, una vez lo tengas hecho te ahorraras mucho tiempo en tu trabajo y serás más productivo.