Diario de aprendizaje de GNU-linux

Día 33 Expanciones

  • como ya vimos el comando $((2 + 2)) es una expanción, esto significa que bash no lee directamente el comando, si no que resuelve antes lo que esta dentro de la expanción y luego dicho resultado es que el toma

  • Expanciones de llaves:

    • Las expanciones por llaves son muy utiles, nos permiten generar cadenas de caracteres con distintas convinaciones, ejemplo:

    • echo {a,b,c}{1,2,3}

    • esto nos devolveria: a1 a2 a3 b1 b2 b3 c1 c2 c3

    • en esencia se podria decir que genera un producto cartesiano de los elementos separados por comas

    • ejemplo de uso:

    • 	  mkdir {grupoA,grupoB,grupoC}{01,02,03}
      
      
    • 	  rmdir {grupoA,grupoB,grupoC}{01,02,03}
      
      
  • Expanciones Aritmeticas:

    • Las expanciones aritmeticas, son basicamente operaciones aritmeticas de toda la vida, como ya dijimos para que bash no lea el comando directamente si no que primero resuelva una operación y luego dicho resultado sea el que nos devuelva se usa la expanción $((1 + 2)) si simplemente escribimos 1 + 1 0 ((1 + 2)) bash lo interpretara como texto simpelmente

    • Ejemplo de uso:

    • 	  echo $((1 + 2))
      
      
  • División de palabras:

  • La división de palabras hace justo lo que su nombre indica, para entender mejor esto pongamos un ejemplo: lista="manzana,pera,fresa" si vemos lo que hay dentro de la lista nos devolvera todos los valores juntos, las comas no serviran como separadores, seran parte del texto ejemplo:

  •   lista="manzanas,peras,fresas"
      printf $lista
      ~$  manzanas,peras,fresa
    
    
  • Para que las comas sirvan como separadores hacemos uso de una variable interna de bash llamada IFS (Internal Field Separador) esta variable solo almecena dentro un espacio o una tabulación, de esta forma si le asignamos otro signo como por ejemplo una coma esa coma funcionara como separador ejemplo:

  •   IFS=","
      ~$  printf $lista
    
    
  • Expansión de nombre de ficheros:

    • Este tipo de expansión hace uso de (*) ([]) (?) para tratar las palabras como patrones, ejemplo:

    • 	  $ ls
      	  fichero1 fichero11 fichero2
      	   fichero3
      	   LÉEME
      	   script.sh
      	  $ ls fichero?
      	  fichero1 fichero2 fichero3
      	  $ ls *[1-2]
      	  fichero1 fichero11 fichero2
      	  $ ls *[^1-2]
      	  fichero3 LEEME script.sh
      	  $ ls s*
      	  script.sh
      
      
2 Me gusta