Kann ich den "which" -Befehl für eine teilweise Übereinstimmung verwenden?
352
ironsand
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 jedoch nicht als "any" mit dem whichBefehl erkannt .
Gibt es eine Möglichkeit, alle Programme in der PATH-Umgebungsvariablen anhand einer Musterübereinstimmung zu finden?
In den meisten Shells können Sie einfach "gcc" eingeben und zweimal die Tabulatortaste drücken, um die automatische Vervollständigung zu erreichen. Funktioniert das für Sie oder wie ist Ihre Situation? Das heißt, warum brauchen Sie das?
slhck vor 10 Jahren
2
In UNIX und Linux wird '*' erweitert _, bevor das Programm ausgeführt wird. Das bedeutet, dass die Interpretation nicht vom Programm abhängt. In diesem Fall wird `gcc *` im aktuellen Verzeichnis erweitert. Deshalb funktioniert es nicht.
MSalters vor 10 Jahren
1
In der OSX-Standardeinstellung ist gcc llvm-basiert, die `/ usr / bin / gcc` platziert wird. und mit `brew` installiert wird gcc` / usr / local / bin / gcc-4.x` platziert. Ich wollte wissen, dass es noch andere gcc- * -Programme gibt. Natürlich kann ich 'find' verwenden, aber es dauert einige Zeit.
ironsand vor 10 Jahren
0
Danke MSalters! Mir war dieser Punkt nicht klar. Ich dachte, es hängt von Programmen ab.
ironsand vor 10 Jahren
0
Wenn Sie nur nach den in Ihrem $ PATH suchen, ist es am einfachsten, zweimal auf die Registerkarte zu klicken, wie von @slhck vorgeschlagen.
terdon vor 10 Jahren
1
Danke, Terdon. Ich habe falsch gelesen, was er geschrieben hat. Ich habe nur einmal getroffen.
ironsand vor 10 Jahren
0
2 Antworten auf die Frage
4
justbrowsing
Es gibt einen BASHintegrierten Befehl, mit compgendem alle Befehle, Funktionen, Aliasnamen und integrierten Funktionen aufgelistet werden können .
Eigentlich kann die gesamte Funktionalität in which( -aExit-Status, Eingaben für mehrere Dateien) auch in diesem Shell-Skript-Kontext hinzugefügt werden, aber ich lasse das dem Leser als Übung.