Subsecciones
La sustitución de una variable por su valor se conoce como expansión de parámetros
$ A=Pepe
$ echo $A
Pepe
Otras expansiones
Para más detalles sobre la expansión del shell mirar el manual de bash, sección EXPANSION
Expansión de nombres de ficheros
Los comodines (wildcards) permiten especificar múltiples ficheros al mismo tiempo:
$ ls -l *html # Lista los ficheros del directorio actual con terminación html
- también se conoce como expansión de la shell o globbing
- podemos ver como se hace la expansión poniendo set -x o set -o xtrace
- set +x para no ver detalles
- podemos desactivar la expansión con set -f o set -o noglob
Lista de comodines
Carácter | Corresponde a |
* | 0 o más caracteres |
? | 1 carácter |
[ ] | uno de los caracteres entre corchetes |
[! ] o [^ ] | cualquier carácter que no esté entre corchetes |
Los ficheros ``ocultos'' (que empiezan por .) no se expanden
- debemos poner el . de forma explícita
Nota importante: en bash el comportamiento de los rangos depende de la configuración de nuestro sistema, en particular, de la definición de la variable LC_COLLATE
- si LC_COLLATE=C, [L-N] implica LMN y [l-n] implica lmn
- en otro caso (p.e. si LC_COLLATE="es_ES.UTF-8" o "gl_ES@euro") entonces [L-N] implica LmMnN y [l-n] implica lLmMn
Para referirnos a mayúsculas o minúsculas podemos usar los siguientes patrones:
- [[:lower:]]: corresponde a un carácter en minúsculas
- [[:upper:]]: corresponde a un carácter en minúsculas
- [[:alpha:]]: corresponde a un carácter alfabético
- [[:digit:]]: corresponde a un número
Para más detalles: man 7 glob
Expansión de comandos
Permite que la salida de un comando reemplace el propio comando
Formato:
$(comando) o `comando`
Ejemplos:
$ echo date
date
$ echo `date`
Xov Xul 21 13:09:39 CEST 2005
$ echo líneas en fichero=$(wc -l fichero)
# wc -l cuenta el número de líneas en el fichero; el comando se ejecuta y su salida se pasa al echo
Expansión de llaves
Permite generar strings arbitrarios
- no tiene para nada en cuenta los ficheros existentes en el directorio actual
$ echo a{d,c,b}e
ade ace abe
Expansión de la tilde
Expande la tilde como directorio HOME del usuario indicado
- si no se indica usuario, usa el usuario actual
cd ~ | # Accedemos al nuestro HOME |
cd ~root | # Accedemos al HOME de root |
ls ~pepe/cosas/ | # Vemos el contenido del directorio cosas de pepe
|
Expansión aritmética
Permite evaluar expresiones aritméticas enteras
- se usa $(( expresión )) o $[ expresión ]
- expresión tiene una sintaxis similar a la del lenguaje C
- permite operadores como ++, +=, &&,...
- También se puede usar let
$ let numero=(numero+1)/2 #usar " si se dejan espacios en blanco
- Ejemplos:
$ echo $(((4+11)/3))
5
$ numero=15
$ echo $((numero+3))
18
$ echo $numero
15
$ echo $((numero+=4))
19
$ echo $numero
19
$ numero=$(((numero+1)/2))
$ echo $numero
10
bash permite eliminar el significado de los caracteres especiales, usando comillas simples, dobles o \
Carácter | Acción |
' | el shell ignora todos los caracteres especiales contenidos entre un par de comillas simples |
" | el shell ignora todos los caracteres especiales entre comillas dobles excepto $, `y \ |
\ | el shell ignora el carácter especial que sigue a \ |
Ejemplos:
ls "/usr/bin/a*"
echo '$PATH'
echo "$PATH"
echo I\'m Pepe
Administración de Sistemas e Redes <ASR.USC[at]gmail.com>
Tomás Fernández Pena <tf.pena[at]usc.es>
Última actualización: 30-09-15 17:44 por tomas
Curso de Administración de Sistemas y Redes por Tomás Fernández Pena se distribuye bajo la licencia Creative Commons Recoñecemento-Compartir baixo a mesma licenza. 3.0 España.
Trabajo original en persoal.citius.usc.es/tf.pena/ASR.