Ich möchte alle Programme mit Namen wie "gcc", "gcc-4.2", "gcc-4.9" und so weiter finden.
Alle Binaries finden, mit denen ich versucht habe which -a gcc*
.
"*" Wird aber nicht als "any" erkannt which
Befehl.
Gibt es eine Möglichkeit, alle Programme in der PATH-Umgebungsvariablen anhand einer Musterübereinstimmung zu finden?
gcc
und drücken Sie zweimal die Tabulatortaste, um die automatische Vervollständigung durchzuführen. Funktioniert das für Sie oder wie ist Ihre Situation? Das heißt, warum brauchen Sie das?*
ist erweitert Vor Das Programm wird ausgeführt. Das bedeutet, dass die Interpretation nicht vom Programm abhängt. In diesem Fall,gcc*
wird im aktuellen Verzeichnis erweitert. Deshalb funktioniert es nicht./usr/bin/gcc
. und mitbrew
installiertes gcc wird platziert/usr/local/bin/gcc-4.x
. Ich wollte wissen, dass es andere gibtgcc-*
Programme. Natürlich kann ich verwendenfind
, aber es dauert einige Zeit.Antworten:
Da ist ein
BASH
eingebauter Befehlcompgen
die verwendet werden kann, um alle aufzulisten Befehle . Funktionen . Aliase und eingebaute .Parameter:
help compgen
quelle
Hier ist ein schnelles und schmutziges Beispielskript, um das zu tun, was Sie in der Praxis wollen:
Speichern Sie dies als z.
whichglob
und mache es ausführbar. Probelauf:Eigentlich die gesamte Funktionalität
which
(-a
(Exit-Status, mehrere Dateieinstellungen) können in diesem Shell-Skript-Kontext problemlos hinzugefügt werden, aber ich lasse das dem Leser als Übung.quelle