Check the new version here

Popular channels

Terminal: Bash - [expansión de llaves] + yapa



Buenas gente, les traigo una info muy útil para aquellos que utilizamos bastante la Terminal. Espero que les sirva y, de ser así, comenten también en la fuente para apoyar al autor original.

Brace Expansion - expansión de llaves en Bash:


En Español expansión de llaves me parece que es una función inspirada por C Shell, esta genera combinaciones entre los caracteres que se ingresen dentro de las llaves, el orden que usa es de izquierda a derecha. No tiene nada de complicado pero es una opción que nos será muy útil en nuestros recorridos por GNU/Linux.

Ejemplo:



$ echo a{1,2,3}
a1 a2 a3


Cuando se usa con comas (,) genera combinaciones entre el valor a y los valores dentro de las llaves. Si no existiera un valor fuera de las llaves solo mostraría una vez cada valor que contiene la llave.


$ echo {a,b,c}
a b c


No es nada complejo su uso, existen otros ejemplo mas comunes como crear muchos directorios en una carpeta


$ mkdir ~/Trabajos/{uno,dos,tres,cuatro,cinco}


Esto crea cinco carpetas dentro de la carpeta trabajos, es como ingresar un comando a la vez. Creando los 5 directorios.

Existen expansión por dos puntos .. esto crea una serie de números o caracteres que van de el valor inicial a el valor final, no se deben usar números con letras.



$ echo {1..5} #Correcto
1 2 3 4 5

$ echo {a..f} #Correcto
a b c d f

$ echo {a..5} #Incorrecto
{a..5}


Podemos ahorrar tiempo al crear un ciclo for:



#En lugar de escribir
$ for (( i=1; i<=5; i++ )); do echo "Mi numero $i"; done
Mi numero 1
Mi numero 2
Mi numero 3
Mi numero 4
Mi numero 5

#Ahorramos código usando brace expansion.
$ for i in {1..5}; do echo "Mi numero $i; done
Mi numero 1
Mi numero 2
Mi numero 3
Mi numero 4
Mi numero 5

#Claro que es valido usar aunque la salida es diferente.
$ echo "Mi numero "{1..5}
Mi numero 1 Mi numero 2 Mi numero 3 Mi numero 4 Mi numero 5


Bueno creo que ya quedo claro el concepto haha ahora solo comentare que es combinable y anidado ¿A que me refiero con esto?
Con combinable a que podemos juntar una o mas llaves:



$ echo {a..c}{1..3}
a1 a2 a3 b1 b2 b3 c1 c2 c3


Con anidado como muchos imaginaran puedes usar llaves de expansion dentro de llaves de expansión:


$ echo {a,c{1..3},d}
a c1 c2 c3 d


Y por ultimo desde Bash 4 es posible incrementar los valores:


$echo {0..20..2}
0 2 4 6 8 10 12 14 16 18 20


YAPA - Como crear un /bin local:

Cuando digo un bin local me refiero a un directorio en el que tengamos scripts propios y sea posibles ejecutarlos como un simple comando…

Lograr esto es relativamente fácil, lo primero que se necesita hacer es crear un directorio donde guardaremos los scripts.



mkdir ~/.bin #En este ejemplo estará oculta


Ahora tenemos nuestra carpeta para guardar los script pero no funcionara hasta que agregamos la ruta de el nuevo .bin a $PATH
Para esto se edita el archivo bash_profile, y se agrega la linea.



export PATH=$PATH:~/.bin


Y listo eso es suficiente para crear un bin local, claro que pedirá permisos de root si es necesario para un ejemplo escribimos un script rápido.


#!/bin/bash

echo "Hola $1, ¿Como estas?"


Guardarlo con el nombre de hola
Al script se le da permiso de ejecución y solo bastará llamarlo desde la terminal



$ hola wada
#Esto mostrará el mensaje
Hola wada, ¿Como estás?


Así con este truco rápido podrás ejecutar mas rápidos tus scripts


Si les gustó este aporte:



Y como siempre:





Todo comentario desubicado, irrespetuoso y/o fuera de lugar será borrado y en caso de que sea necesario el usuario será bloqueado.
0
0
0
3
0No comments yet