Qual è il formato per l'opzione -F di _path_files
e compadd
?
Sto passando diverse directory a _path_files
:
_path_files -W "($base_directories)" -/
Ma alcuni di quegli alberi di directory non voglio completare per questo particolare comando.
La documentazione che posso trovare per _path_files
dice che accetta un -F
opzione, proprio come compadd
, ma non riesco a trovare il formato per passarli.
Anche gironzolare non è stato molto fruttuoso.
Ho provato, ad esempio,
_path_files -W "($base_directories)" -/ -F shared; # shared still shows up
_path_files -W "($base_directories)" -/ -F "(shared)"; # barfs on that guy
Risposta accettata:
Sembra corretto se vuoi ignorare shared
alla radice dell'albero delle directory, cioè se stai ignorando una delle $base_directories
. Ma se intendevi ignorare shared
da qualche parte più in profondità nella gerarchia, hai bisogno di -F "(shared **shared)"
. Puoi anche inserire i modelli in una matrice, che ridurrà i problemi di citazione.
local -a ignored base_directories
base_directories=(…)
ignored=(shared '*/shared')
_path_files -W base_directories -/ -F ignored
Ci sono esempi nella distribuzione standard in _cvs
e _darcs
.
Se questo non aiuta, prova a indagare su cosa sta succedendo aggiungendo set -x
e set +x
intorno al codice problematico, o setopt local_options xtrace
(aka set -x
e modificare le opzioni solo per la durata della funzione corrente).