bash completamento per alcuni tipi di file in una directory speciale
-
03-07-2019 - |
Domanda
Ho un elenco di profili unisono che esiste in ~ / .unison / *. prf
.
Mi piacerebbe avere il completamento bash in modo che quando scrivo unison
o unison-gtk
e premo il tab elencherò il .prf
file da quella cartella senza la parte .prf
.
Forse un esempio sarebbe più chiaro:
$ ls ~/.unison/*.prf
default.prf dot-mozilla.prf to-desktop.prf
$ cd ~ # just to show you don't have to be in the ~/.unison folder
$ unison to<tab>
$ unison to-desktop
Prevedo di averne bisogno anche per un altro strumento, quindi sarebbe conveniente se ci fossero parti che potrebbero essere riutilizzate.
Soluzione
Se stai eseguendo debian / ubuntu o possibilmente altre distro GNU / Linux, ci dovrebbero essere esempi di questo tipo di completamento nella tua directory /etc/bash_completion.d/. Ecco un esempio di come è possibile impostare uno script di completamento all'unisono:
have unison &&
_unison_show()
{
local cur
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=($( compgen -W "$(for x in ~/.unison/*.prf; do echo $(basename ${x%.prf}); done)" -- $cur ) )
}
complete -F _unison_show unison
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow