Cita simple y barra invertida

10
~$ echo $'\'test'
'test

man bash dice:

El encerrar caracteres entre comillas simples conserva el valor literal de cada carácter dentro de las comillas. Una comilla simple no puede aparecer entre comillas simples, incluso cuando va precedida de una barra diagonal inversa.

¿Por qué funciona en el echocomando entonces?

mook765
fuente

Respuestas:

16

Las comillas simples '...'son diferentes a las comillas simples en dólares $'...'. El primero no admite ninguna barra invertida, mientras que el segundo usa la especificación ANSI C.

choroba
fuente
14

chorobaLa respuesta es totalmente correcta, aquí los detalles de man bash:

Las palabras de la forma $ 'string' se tratan especialmente. La palabra se expande a
cadena, con caracteres de escape con barra invertida reemplazados según lo especificado por ANSI C
estándar. Las secuencias de escape de barra invertida, si están presentes, se decodifican de la siguiente manera:
              \ una alerta (campana)
              \ b retroceso
              \mi
              \ E un personaje de escape
              \ f alimentación de formulario
              \ n nueva línea
              retorno de carro
              \ t pestaña horizontal
              \ v pestaña vertical
              \\ barra invertida
              \' una frase
              \ "comilla doble
              \? signo de interrogación
              \ nnn el carácter de ocho bits cuyo valor es el valor octal
                     nnn (uno a tres dígitos)
              \ xHH el carácter de ocho bits cuyo valor es el hexadecimal
                     valor HH (uno o dos dígitos hexadecimales)
              \ uHHHH el carácter Unicode (ISO / IEC 10646) cuyo valor es el
                     valor hexadecimal HHHH (de uno a cuatro dígitos hexadecimales)
              \ UHHHHHHHH
                     el carácter Unicode (ISO / IEC 10646) cuyo valor es el
                     valor hexadecimal HHHHHHHH (de uno a ocho dígitos hexadecimales)
              \ cx un carácter control-x

¡Es por eso!

mook765
fuente