koloriere bash_completion

9

Wenn ich tippe grepund dann TABzweimal drücke , bash_completionwerden Dateien und Verzeichnisse im aktuellen Verzeichnis aufgelistet. Es werden auch Dateinamen vervollständigt, wenn ich den Anfangsbuchstaben eingebe. Das ist alles sehr schön, das einzige Problem ist, dass das Verzeichnis, wenn es viele Dateien und Unterverzeichnisse enthält, ziemlich chaotisch und unorganisiert sein kann.

Es wäre sehr hilfreich, wenn bash_completionzumindest Verzeichnisse anders gefärbt werden könnten, ähnlich wie dies der ls -lAFall ist.

Ist das möglich?

BEARBEITEN:

So bash_completionsieht meine Beispielkonfigurationsdatei aus:

if [[ ${cur} == -* ]] ; then
    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
    return 0

else
    _filedir
fi
Martin Vegter
quelle
1
Ich weiß nicht, ob dies in möglich ist, bashaber es ist das Standardverhalten in zsh.
Terdon
1
Falls es nicht offensichtlich ist, suche ich nach einer Lösung fürbash
Martin Vegter
Welche Datei zeigen Sie?
Terdon

Antworten:

7

In der aktuellen Version von Bash gibt es keine solche sofort einsatzbereite Funktion. Sie können dies verwenden zsh, sie ist standardmäßig vorhanden.

Eines der Tools für die Fertigstellung wird aufgerufen compgen. Sie können es finagle, um Befehle korrekt koloriert anzuzeigen, aber dies ist ein Hack und nicht so praktisch nützlich.

$ compgen -W "$(ls --color=always *)"

Dadurch werden die kolorierten Dateien korrekt aufgelistet, aber es wird die Farbe von erhalten ls, sodass ich diese native Färbung nicht in Betracht ziehen würde auto_completion.

Verweise

slm
quelle
Bitte sehen Sie meine Bearbeitung. Ich habe keine lsin meinen bash_completionKonfigurationsdateien. Anscheinend gibt es eine Funktion, _filedirdie Dateien auflistet.
Martin Vegter