6. Entrecomillado
Una característica de la shell BASH que nos puede ayudar a construir comandos y scripts más potentes es el entrecomillado. Debido a que la BASH puede usar nombres simbólicos(variables) que representan valores como el path del usuario, el path del directorio personal,etc el entrecomillado se hace necesario. En BASH o shells parecidas hay tres tipos de entrecomillado, simple, doble e invertido que se pueden combinar. Vamos a verlo con ejemplos:
Entrecomillado simple
Se llama globalización de nombres de archivo a una característica del intérprete de comandos que permite referirse a todos los archivos contenidos por ejemplo en un directorio usando un comodín como el carácter *.
Ej:
# ls $HOME/*
Aquí vemos dos cosas comentadas, la utilización de nombres simbólicos($HOME) y la de comodines(*). Ese ejemplo lista todos los archivos del directorio personal del usuario que ejecute el comando. ¿ Pero que ocurre si tenemos un archivo de nombre * y sólo queremos listar ese archivo y no todo el contenido del directorio que lo contiene ? En ese caso, lo solucionamos incluyendo el carácter comodín entre comillas simples para que el intérprete de comandos tome ese carácter como un literal y no como un comodín.
Ej:
# ls $HOME/'*'
El entrecomillado simple nos sirve para hacer que el intérprete de comandos tome lo encerrado entre él como una expresión literal, ya sean variables, comodines u otras expresiones entrecomilladas.
Entrecomillado doble
El entrecomillado doble nos permite evitar la globalización de archivos(los comodines), pero no afecta a variables u otras expresiones entrecomilladas que se encuentren dentro.
Ej:
# ls "$PATH"
ls: /usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin: No such file or directory
Ej:
# touch *
# ls "*"
*
Como vemos la variable $PATH se sutituye por su valor real, mientras que el comodín es tomado como un literal.
Entrecomillado inverso
Sin duda es el más interesante ya que es el que permite construir comandos tomando como argumentos la salida de otro comando entrecomillado entre comillas inversas`
Ej:
# ls `perl -e 'print "A"x1000'`
Lo cual como veis viene genial para buscar desbordamientos de buffer aunque sin duda se le pueden dar más utilidades menos destructivas. Como podeis observar dentro del entrecomillado invertido hay otras comillas pertenecientes a la sintaxis del comando perl, estas son tratadas como literales.
Sencuencias de escape
Las secuencias de escape es otra forma de hacer que el intérprete considere UN carácter como literal. Para utilizarlas utlizamos \ delante del carácter que queramos escapar.Nótese la diferencia entre:
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin
y
# echo \$PATH
$PATH
Los entrecomillados y sencuencias de escape pueden anidarse teniendo en cuenta que algunos "anulan" los efectos de otros entrecomillado que se encuentren dentro.
Autor y licencia de 'Fundamentos de BASH - Entrecomillado'
Wikis relacionados con 'Fundamentos de BASH - Entrecomillado'
Resulta hasta intelectualmente chocante para una mayoría que a principios de este siglo veintiuno alguien,...
Más »
Si se consulta en Wikipedia la definición de algoritmo, se entiende que éste es un...
Más »
Cuando hablamos de un sitio web nos estamos refiriendo en realidad a un conjunto de...
Más »
Acorde con los cambios y modernización que se han venido realizando en las Empresa a...
Más »
El tema de lo sagrado cual se lee en estas fuentes secretas, cuyos autores estan...
Más »
¿Estás seguro de que deseas eliminar este capítulo?