Ich lerne über Bash Abschluss. Ich kann den Inhalt nur des aktuellen Verzeichnisses auflisten. Hier ist mein Code:Wie kann die Bash-Vervollständigung in einem anderen Verzeichnis erweitert werden?
_foo()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="push pull"
OUTPUT=" $(ls) "
case "${prev}" in
push)
COMPREPLY=($(compgen -W "--in --out" -- ${cur}))
return 0
;;
--in)
COMPREPLY=($(compgen -W "$OUTPUT" -- ${cur}))
return 0
;;
esac
COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
return 0
}
complete -F _foo foo
Es ist Ausgabe lautet:
$ foo push --in[TAB]
file1.txt file2.txt foo ;; content of pwd
Aber wenn ich dies tun:
$ foo push --in ~[TAB]
Es funktioniert nicht. Also ich möchte wissen, wie bash completion in einem anderen Verzeichnis zu tun (nicht nur in pwd)? Vielen Dank.
Oh sie sind in Skript eigentlich nicht. Dies sind nur wegen Vim-Editor. Und ich habe dieses Skript von dort kopiert, so dass auch die Zeilennummer kopiert wurde. –