Desde que la finalización de la pestaña se convirtió en una característica estándar en los shells, he sido un usuario muy feliz. Incluso me gusta la finalización inteligente de Bash (donde solo busca archivos PDF, si escribo evince foo <TAB>), siempre que adivine correctamente.
Arruina un día feliz cuando Bash usa su terminación inteligente para negarse a completarla.
Hoy quería:
tar xvf centos5.8_x86_1.ova
Entonces entré:
tar xvf cent<TAB>
y Bash se niega a completar la ruta porque .ova-files no es lo que usualmente usa con tar.
Sé que puedo desinstalar el paquete bash-complete para eliminar la finalización inteligente. ¿Pero puedo tener mi pastel y comerlo también?
¿Puedo pedirle a bash que use primero la finalización inteligente, y si eso falla, entonces use la finalización no inteligente?
fuente
Respuestas:
Lo siguiente debería activar la finalización de bash normal después de que todas las finalizaciones 'inteligentes' hayan fallado para los programas tar, vim y emacs:
vea también la página correspondiente en el manual de bash en línea.
Advertencia: obtiene el comportamiento normal para el tipo de finalización (comandos / nombres de archivo / nombres de usuario, etc.) definido por la finalización inteligente del comando en cuestión, por ejemplo, la finalización de
service
no completará los nombres de archivo incluso si llamacomplete -o bashdefault service
.En este y otros casos en los que falla el autocompletado inteligente, siempre puede presionar
Alt-/
(oM-/
en la notación del manual bash) para completar los nombres de archivo casi de la misma manera que TAB funciona si la finalización inteligente está desactivada (casi de la misma manera en el sentido queM-/
no patrones completos como*.txt
). Consulte aquí las secuencias de teclas para otros tipos de finalizaciones, como comandos y nombres de usuario.fuente
La finalización de bash es una extensión de la finalización estándar de bash y es en sí misma un programa de bash. Entonces, si desea cambiar la forma en que actúa el programa, simplemente cámbielo. Esto es software libre, eres libre de hacerlo. Para el caso específico del
tar
comando, el archivo es/usr/share/bash-completion/completions/tar
. Paratar
autocompletar un archivo con extensiónova
, simplemente agréguelo a la líneaentonces dice
Tenga en cuenta que esta es la ruta y el código existente para Debian Wheezy (versión estable actual). Una distribución o versión diferente puede tener un código diferente, pero la idea es la misma. Abra el código y ajústelo para hacer lo que quiere que haga.
Edit: Acabo de notar que la pregunta era casi cada vez que no se encuentra una coincidencia y no sólo el caso específico de la adición
ova
atar
. Tal vez aún pueda ser útil para alguien saber dónde pueden buscar la fuente.fuente