¿Cuál es el uso del comando quote? No he encontrado ninguna información al respecto, no se encuentra entre los archivos ejecutables en las /bincarpetas, y no se puede encontrar entre las funciones integradas de Bash. Parece que solo imprime su primer parámetro, como un echocomando y nada más.
command-line
bash
whtyger
fuente
fuente

quote, utilizada para un propósito tan oscuro ... Sin prefijo para marcarlo "interno", sin documentación, nada, a menos que vaya a cavar en detalles de implementación de la mecánica de finalización avanzada de la distribución. Esto me parece un poco inquietante.Respuestas:
¿Qué es?
Noté que este comando no funciona en mi shell ( fish, shell interactivo amigable ). Parece que solo funciona en bash (el valor predeterminado de Ubuntu).
¿Qué hace? Para qué se puede usar?
Agrega las comillas pero no la nueva línea. También escapa a las comillas simples de una manera adecuada para bash. Puede ser útil en las secuencias de comandos para citar una variable o algún otro tipo de cadena. Necesita esto, por ejemplo, para rutas / parámetros con espacios. Aunque hay otras formas de hacer esto.
Es realmente extraño que no pude encontrar ninguna documentación (en la web) al respecto. Pero bueno, es fácil ver lo que hace.
fuente
whiches inútil, tanto en shells interactivos como en scripts. Usar en sutypelugar.type quotele dirá que es una función e incluso muestra la definición de la función. Correhelp typepor más en eltypeedificio./etc/bash_completion, que se obtiene~/.bashrcde forma predeterminada, no por/etc/bash.bashrcdonde/etc/bash_completionse comenta la sección correspondiente. También la/usr/share/bash-completion/carpeta está ausente en Ubuntu 12.04.quotees una función que está definida (aquí en mi sistema Debian, pero supongo que es lo mismo en Ubuntu) en el archivo/usr/share/bash-completion/bash_completion, que en sí mismo se origina/etc/bash.bashrcen el inicio de Bash.¡Nunca usaría esta función! Si necesita citar cosas para que un shell pueda usarlas
printfcon seguridad, úselas con el%qmodificador, como:De hecho, incluso esto se usa muy raramente, siempre hay mejores estrategias para cosas de alto nivel como nosotros, los usuarios, usualmente lo hacemos. Esta
quotecosa es utilizada internamente por algunas cosas oscuras que ni siquiera queremos saber. Estaquotefunción es probablemente específica del proveedor / distribución (leer específica de Debian) y probablemente no sea portátil en absoluto, e incluso podría cambiar en futuras versiones.Editar. Acabo de comprobar en un sistema Ubuntu 12.04, y la
quotefunción se define en/etc/bash_completion, originada por/etc/bash.bashrc, propiamente dicha/etc/profile.¿Cómo determiné esto? usando un poco de heurística:
Verificar si
quoteaparece en/etc/profile:No. Ve al siguiente paso.
¿De qué proceden los archivos
/etc/profile?Tengo
$i(necesito buscar en la fuente cuáles son estas fuentes, pero en este caso son los archivos/etc/profile.d/*.shsi los hay (y si son legibles) y/etc/bash.bashrc. Buscando/etc/bash.bashrc.quoteadentro/etc/bash.bashrc? si / no, etc ...fuente
quoteen realidad escapa a las comillas simples, por lo que puede ser utilizado por el shell. Funciona tan bien comoprintf %qpara este caso de uso.my_str='~/.bashrc'; echo ' Expected:' "$my_str"; bash -c "echo ' quote:' $(quote "$my_str")"; bash -c "echo 'printf %q:' $(printf '%q\n' "$my_str")". Verías algo comoExpected: ~/.bashrc,quote: ~/.bashrcyprintf %q: /home/your_username/.bashrc.(shopt -s extdebug; declare -F quote), que le indica el nombre de la función, el número de línea en el que está definido y el nombre de archivo en el que está definido.quotees una función:Esta función se define en algún lugar de un archivo de inicialización bash. Más precisamente, si está usando Ubuntu 13.04, puede encontrarlo en
/usr/share/bash-completion/bash_completionla línea 142.Use el siguiente comando para verificarlo:
Su propósito es evidentemente claro.
fuente
$INPUT, que puede contener espacios, comillas u otros caracteres, y devolver una cadena que definitivamente solo bash trata como un argumento único.