19.11.2018
Debido a la consulta de un lector del blog decidimos hacer una entrada para explicar la diferencia entre comillas dobles ("), comillas simples (') y comillas invertidas [backticks] (`) en Bash.
Las comillas dobles ("") se usan para encerrar frases, generalmente se usan cuando tenemos que referirnos a un nombre de archivo o directorio que contiene espacios. Un par de ejemplos:
ls -l "Mis Documentos"
cat "documento de texto con espacios.txt"
Lo que esté dentro de las comillas dobles se toma literalmente a excepción de
los caracteres $
(sustitución de variable), ` (sustitución de comando) y \
(caracter de escape). Más
ejemplos:
echo "$SHELL"
export TEST="`ls | wc -l`"
En el primer ejemplo el contenido de la variable SHELL es mostrado en el
terminal, siendo el resultado "/bin/bash"
porque estamos usando Bash o en su
defecto la ruta del shell que se esté utilizando. En el segundo ejemplo se asigna dinamicamente a la variable TEST el resultado que devuelve el comando entre las comillas simples (en este caso la cantidad de archivos y directorios en el directorio actual).
Las comillas simples (') también se usan para encerrar frases sin embargo todo lo que esta dentro de las comillas simples es tomado literalmente.
echo '$SHELL'
El resultado sería:
$SHELL
Esta es la gran diferencia entre los tipos de comillas más importantes. Otro ejemplo:
echo 'las comillas "simples" cuidan a las dobles'
y devuelve
las comillas "simples" cuidan a las dobles
Las comillas invertidas (`) son interpretadas como sustitución de comandos, es decir, los comandos que estén dentro serán pasados al comando que lo preceden. Por ejemplo el comando:
echo "estoy en el directorio `pwd` y contiene `ls -d | wc -l` subdirectorios"
devuelve
estoy en el directorio /home/Documentos y contiene 3 subdirectorios
Basicamente eso sería todo, y como siempre en el mundo linux/unix para saber más hay que leer las páginas de man bash.