Estoy usando, entre otras cosas, bash 4.2.37 en Linux Mint 14.
Cuando autocompleto el nombre de una variable de entorno escribiendo Tab, se expande al nombre de la variable seguido de un espacio.
Si el valor de la variable es un nombre de directorio, quiero que se expanda al nombre de la variable seguido de /
.
Por ejemplo, si escribo:
$ ls $HOM<tab>
se expande a:
$ ls $HOME _
donde _
marca la ubicación del cursor. El problema es que normalmente quiero seguir escribiendo el nombre de algún archivo o directorio en mi directorio de inicio, lo que significa que tengo que escribir backspacey luego /
.
Entonces, quiero que lo anterior se expanda a:
$ ls $HOME/_
Lo mismo sucede cuando escribí el nombre completo de la variable; después ls $HOME
, tabagrega un espacio, y quiero que agregue un /
.
(Y, por supuesto, no quiero que agregue un /
si el valor de la variable no es un nombre de directorio).
¿Hay alguna forma de decirle a bash que se comporte de la manera que quiero, ya sea a través de comandos bash o actualizando mi $HOME/.inputrc
?
Nota: Estoy buscando específicamente una forma de hacer que se tabcomporte de la manera que quiero. Las formas de lograr el mismo comportamiento con diferentes teclas serían interesantes, pero no responderían a mi pregunta.
(He desactivado /etc/profile.d/bash_completion.sh
en mi sistema porque interactúa mal con él set -o nounset
. Un experimento rápido indica que esto probablemente no sea relevante para mi pregunta).
Por cierto, tcsh hace esto: dada una variable de entorno $FOOBAR
, la escritura se $FOOBA<tab>
expande $FOOBAR/
si se refiere a un directorio, $FOOBAR
(con un espacio) si no lo hace. No, eso no es suficiente para convencerme de volver a tcsh. zsh hace esto también.
fuente
Respuestas:
Esta característica se implementa en bash 4.3, lanzado el 26/02/2014.
Citando el
NEWS
archivo (incluido en el nivel superior debash-4.3.tar.gz
, vea también la firma GPG ):Un experimento rápido con una copia creada a partir de la fuente muestra que si escribo
ahora se expande a
(Por cierto, zsh también hace esto).
fuente
ayudará, no habrá espacio para que pueda continuar escribiendo, pero reemplazará la variable de entorno con su contenido.
Ver alsp /programming/6418493/bash-variable-expansion-on-tab-complete
fuente