Diese Frage ist ganz ähnlich wie diese , aber ich kann die Lösung nicht verstehen. Ich kenne dieses Tutorial auch , kann aber immer noch nicht verstehen, was ich falsch mache.
Ich versuche, die Liste der Verzeichnisse automatisch zu vervollständigen, in denen sich Folgendes befindet /something/
:
$ ls /something/
One Other Three
auf eine Weise, die dies passieren wird:
$ hi [TAB]
One Other Three
$ hi O[TAB]
One Other
Nur wenn das erste Wort ist hi
und nicht nur drinnen /something/
.
Das mache ich in .profile
:
_codeComplete()
{
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen `ls /something/` -- $cur) )
}
complete -F _codeComplete "hi "
bash
filenames
autocomplete
Donovan
quelle
quelle
complete
Befehls zu finden, wenn Sie ihn noch nicht kennen und nachautocomplete
oder suchentab-completion
... Dies war der erste Ort, an dem ich den Befehlsnamen gefunden habe und worauf ich ihn beimeject
Upgrade auf Ubuntu korrigieren musste 14.04 ($ complete -p ls
->complete -F _longopt ls
, also dascomplete -F _longopt eject
Lassen Sie mich versuchen, die akzeptierte Antwort zu verbessern.
Die ursprüngliche Antwort schlägt mit Dateinamen fehl, die Leerzeichen enthalten. Nach einigen Nachforschungen ist mir klar, dass Sie das Eingabetrennzeichen in Zeilenende ändern können:
Stellen Sie sicher, dass die Funktion Leerzeichen korrekt verarbeitet.
quelle
Hier ist eine Version, die nicht nur mit Leerzeichen umgeht, sondern diese auch verschwindet:
(Basierend auf den Antworten von dogbane und Eduardo Almeida dos Santos , jedoch mit Flucht, wie von antak auf SO bereitgestellt : /programming//a/11536437/1536933 )
quelle
quelle