/ / Autocompletar Bash personalizado con finalización de ruta de archivo - bash, macos, bash-completed

Autocompletar Bash personalizado con finalización de ruta de archivo - bash, macos, bash-completed

Estoy trabajando en la finalización automática de bash para un proyecto del cual soy el encargado de mantener. Usted puede encuentra el guion aqui. He arreglado esto junto con algunos piratas informáticos por mi cuenta y con la ayuda de algunos colaboradores que entienden que las API de finalización son mejores que yo.

Lo que tenemos funciona muy bien, con una excepción. Podemos gestionar una finalización como esta.

//type
pestle.phar som[TAB]

//completes to
pestle.phar some-command-name

Sin embargo, una vez que estamos aquí estamos perder la ruta del archivo / la terminación del nombre es parte del shell bash de valores. Es decir, trabajando en el ejemplo anterior, si un usuario escribe

//type
pestle.phar some-command-name /va[TAB]

nos gustaría que completara

//completes to the following, because var exists
pestle.phar some-command-name /var

¿Hay una manera de simplemente decirle al complete comandar algo como

Oye, además de todo lo que te estamos diciendo que hagas con nuestra función de bash personalizada, también mantén tu ruta de archivo normal completada

Si no es así, ¿hay alguna ciencia / placa de calderas conocida para volver a implementar la finalización de la ruta del archivo en sus propias funciones de finalización de base personalizadas?

Algunos Otras respuestas y los documentos parecer para indicar que el -o filenames o -o bashdefault las opciones deberían ocuparse de esto, pero no parece que esté funcionando en OS X 10.11. No estoy seguro de si entiendo mal -o, o si el código en mis archivos de terminación de alguna manera anula el -o comportamiento, o si OS X lo está haciendo "s Soy solo un Unix mayormente bien portado cosa.

Además, si no es obvio, esto es Mi primer rodeo de bash profundo. Si he dicho algo aparentemente tonto / ingenuo arriba, por favor, hágamelo saber. Puede que esté buscando un pez en este momento, pero me gustaría aprender. a Peces en el río bash finalización yo mismo.

Respuestas

2 para la respuesta № 1

creo -o default (sin -o filenames) debería funcionar para usted. Según el manual:

  • bashdefault
    Realizar el resto de la terminaciones de bash predeterminadas Si el compspec no genera coincidencias.
  • defecto
    Utilizar readline completada por defecto del nombre de archivo Si el compspec no genera coincidencias.
  • nombres de archivos
    Dile a readline que la compspec generalos nombres de archivo, por lo que puede realizar cualquier procesamiento de nombre de archivo específico (como agregar una barra al directorio) nombres, citando caracteres especiales, o suprimiendo espacios finales). Diseñado para ser utilizado con funciones de shell.

(Ver también Problema de "complete -d -o default cd" por la diferencia entre -o default y -o bashdefault.)