Saltar al contenido principal
Página

Tema 2.7 - Expansiones y Alias

la línea de comandos se divide en una serie de elementos que representan cierto significado en la semántica del intérprete. La expansión es un procedimiento especial que se realiza sobre dichos elementos individuales.

BASH dispone de 8 tipos de expansiones, que según su orden de procesado son:

  • Expansión de llaves: modifica la expresión para crear cadenas arbitrarias.
  • Expansión de tilde: realiza sustituciones de directorios.
  • Expansión de parámetro y variable: tratamiento general de variables y parámetros, incluyendo la sustitución de prefijos, sufijos, valores por defecto y otras operaciones con cadenas.
  • Sustitución de mandato: procesa el mandato y devuelve su salida normal.
  • Expansión aritmética: sustituye la expresión por su valor numérico.
  • Sustitución de proceso: comunicación de procesos mediante tuberías con nombre de tipo cola (FIFO).
  • División en palabras: separa la línea de mandatos resultante en palabras usando los caracteres de división incluidos en la variable IFS.
  • Expansión de fichero: permite buscar patrones con comodines en los nombres de ficheros.


Expansión de llaves

La expansión de llaves es el preprocesado de la línea de comandos que se ejecuta en primer lugar y se procesan de izquierda a derecha. Se utiliza para generar cadenas arbitrarias de nombre de ficheros, los cuales pueden o no existir, por lo tanto, puede modificarse el número de palabras que se obtienen tras ejecutar la expansión.

las llaves ({..}) se expanden para crear un patrón

El formato general es el siguiente:


Ejemplo



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(1,2,3)
# Dando como resultado:
a1 a2 a3



Expansión de tilde. (~)

Este tipo de expansión obtiene el valor de un directorio, tanto de las cuentas de usuarios, como de la pila de directorios accedidos. Los formatos válidos de la expansión de tilde son:



Expansión de parámetro o de variable.

Permite la sustitución del contenido de la variable siguiendo una amplia variedad de reglas. Los distintos formatos para la expansión de parámetros son




BASH proporciona unas potentes herramientas para el tratamiento de cadenas, sin embargo, la sintaxis puede resultar engorrosa y requiere de experiencia para depurar el código. Por lo tanto, se recomienda crear guiones que resulten fáciles de comprender, documentando claramente las órdenes más complejas

Ejemplos:




Sustitución de mandato

Esta expansión sustituye el mandato ejecutado –incluyendo sus parámetros– por su salida normal, ofreciendo una gran potencia y flexibilidad de ejecución a un “shell script”. Los formatos válidos son:


Cuando la sustitución de mandatos va en una cadena entre comillas dobles se evita que posteriormente se ejecute una expansión de ficheros


Expansión aritmética.

La expansión aritmética calcula el valor de la expresión indicada y la sustituye por el resultado de la operación. El formato de esta expansión es:

 


Ejemplo

Sumar dos números usando el comando echo
echo $(( 10+5 ))

Sumar dos números, contenidos en las variables X y Y
#!/bin/bash
X=5
Y=10
resultado=$(( X+Y ))
echo "$X + $Y = $resultado"



Sustitución de proceso:

La sustitución de proceso permite utilizar un fichero especial de tipo cola para intercambiar información entre 2 procesos, uno que escribe en la cola y el otro que lee de ella en orden (el primero en llegar es el primero en salir). Los formatos válidos para esta expansión son:



División en palabras

Una vez que se hayan realizado las expansiones previas, el intérprete divide la línea de entrada en palabras, utilizando como separadores los caracteres especificados en la variable de entorno IFS. Para evitar problemas de seguridad generados por un posible “Caballo de Troya”, el administrador debe declarar esta variable como de sólo lectura y establecer unos valores fijos para los separadores de palabra; que por defecto éstos son espacio, tabulador y salto de línea. Una secuencia de varios separadores se considera como un único delimitador.

Por ejemplo, si se ejecuta el siguiente mandato:
du –hs $HOME

el intérprete realiza las sustituciones y –antes de ejecutar la orden– divide la línea en las siguientes palabras.
“du” “-hs” “/home/qvision”



Expansión de fichero.

Si algunas de las palabras obtenidas tras la división anterior contiene algún caracteres especial conocido como comodín (*, ? o [), ésta se trata como un patrón que se sustituye por la lista de nombres de ficheros que cumplen dicho patrón, ordena da alfabéticamente. El resto de caracteres del patrón se tratan normalmente.

Los patrones válidos son:


La siguiente tabla describe algunos ejemplos




ALIAS EN  BASH


Los alias en bash (terminal) nos dan multitud de posibilidades en el uso de comandos. Una de ellas es ejecutar un comando o conjunto de comandos escribiendo una palabra más sencilla, lo que puede ser muy útil si no te gusta escribir el mismo comando una y otra vez o no te llevas bien con la terminal

  • Un alias no es más que un acceso directo a los comandos.
  • Use el comando alias para mostrar la lista de todos los alias definidos.
  • Agregue alias definidos por el usuario al archivo ~ /.bashrc

Sintaxis para crear un alias:
alias nombre='comando'

Ejemplo Crearemos un alias llamado “cl” para simplificar el comando clear
alias cl=’clear’        # Definimos el alias
cl                      # Invocamos el alias

Como eliminar un alias
Los alias se crean y enumeran con el comando alias, y se eliminan con el comando unalias. La sintaxis es:
unalias alias-name
# Ejemplo
unalias cl

Obtener la lista de alias disponibles
Para obtener todos los alias disponibles teclee el siguiente comando
alias

Como crear un alias permanente

Si quiere crear alias para todos los usuarios disponibles, debe agregar estos directamente en el archivo ~/.bashrc


En la carpeta raíz ingresamos:
sudo nano ~/.bashrc

Al final del código que encontramos podemos agregar los alias que necesitemos



Última modificación: lunes, 11 de mayo de 2020, 22:14