Frage:
Wie finde ich alle verfügbaren Tools im Mac Terminal?
Spear A1
2019-04-16 01:00:30 UTC
view on stackexchange narkive permalink

Ich versuche, eine Reihe von Entwicklungsprojekten auf meinem Mac einzurichten.Ich muss verschiedene Tools wie Python, Ruby, Scala, Groovy usw. ausführen. Um zu sehen, ob ein Tool verfügbar ist, verwende ich Optionen wie

  ruby --version.
 

Stattdessen möchte ich alle im Mac-Terminal verfügbaren Tools mit einem einzigen Befehl anzeigen.Was ist der Befehl / die Optionen dafür?

Die Liste wird eher überwältigend als informativ sein.Unter macOS 10.14.4 werden 1.302 ausführbare Dateien in / bin, / sbin, / usr / bin und / usr / sbin angezeigt.Die meisten von ihnen sind dunkel und / oder für einen bestimmten Zweck bestimmt.Zum Beispiel: "hpftodit", das Schriftarten aus dem HP-Tagged-Font-Metric-Format (TFM) konvertiert, um sie mit einem Drucker der HP Laser-Jet 4-Serie (oder neuer) mit "groff -Tlj4" zu verwenden.Ok, das ist ein extremes Beispiel, ich behaupte, der Punkt ist noch gültig.
Sechs antworten:
jksoegaard
2019-04-16 01:14:54 UTC
view on stackexchange narkive permalink

Am einfachsten ist es, das Terminal zu öffnen und dann zweimal die TAB-Taste zu drücken.Sie werden gefragt, ob Sie alle Möglichkeiten sehen möchten - antworten Sie mit "y" und Sie erhalten die vollständige Liste.

slm
2019-04-16 01:45:03 UTC
view on stackexchange narkive permalink

Siehe die Antworten dieser U&L Q&A mit dem Titel: Listet alle Befehle auf, die eine Shell kennt .

Mein persönlicher Favorit ist die Verwendung von compgen , da dies Teil der Toolfamilie ist, mit der die gesamte Tab-Vervollständigung erstellt wird, wenn Sie sich in einem Terminal befinden und auf tab> kbd klicken > + tab kbd> zweimal.

  $ compgen -c
 

Beispiel

  $ compgen -c | Schwanz
deepcopy-gen
kube-controller-manager
Informant-Gen
lister-gen
etcd
Gen-Apidocs
kube-apiserver
kubectl
kubebuilder
Conversion-Gen
 

Wenn Sie wissen möchten, wo sich eine dieser ausführbaren Dateien auf Ihrer Festplatte befindet, geben Sie -a <cmd> ein, um sie zu finden:

  $ type -a ansible
ansible ist auf "ANSIBLE_CONFIG = ~ / .ansible.cfg ansible" ausgerichtet.
ansible ist / usr / local / bin / ansible
 

Dies zeigt, dass der Befehl ansible ein Alias ​​ist und sich auch lokal auf der Festplatte befindet: / usr / local / bin / ansible .

Referenzen

fd0
2019-04-16 01:39:49 UTC
view on stackexchange narkive permalink

Sie können die Variable PATH verwenden und die Doppelpunkte tr in Leerzeichen setzen und dann die Dateien in diesen Verzeichnissen auflisten.

  ls $ (tr ':' '' <<< "$ PATH")
 

Und wie Peter Cordes betont, wird das Obige unterbrochen, wenn Verzeichnispfade Leerzeichen in ihrem Namen haben.Ändern Sie in einer Unterschale das IFS (Internal Field Separator) in eine neue Zeile und tr übersetzen Sie die Doppelpunkte in neue Zeilen.

  (IFS = $ '\ n'; ls $ (tr ':' '\ n' <<< "$ PATH"))
 
Wenn Ihr "$ PATH" Leerzeichen, aber keine Zeilenumbrüche enthält, können Sie Leerzeichen in Zeilenumbrüche innerhalb einer "(IFS = $ '\ n'; ls $ (...))" - Unterschale umwandeln, sodass die Wortteilung nur für Zeilenumbrüche erfolgt.
David Anderson
2019-04-16 16:14:56 UTC
view on stackexchange narkive permalink

Wenn ein Befehl installiert ist, sollte ein Eintrag in der Datenbank whatis abgelegt worden sein. Dies ist jedoch nicht erforderlich. Geben Sie whatis gefolgt vom Befehl ein, um eine einzeilige Beschreibung eines Befehls in der Datenbank zu erhalten. Die Ausgabe von whatis "ruby" wird beispielsweise unten angezeigt.

  erb (1) - Ruby Templating
irb (1) - Interaktive Ruby Shell
ri (1) - Ruby API-Referenz-Frontend
ruby (1) - Interpretierte objektorientierte Skriptsprache
 

Der Befehl whatis akzeptiert reguläre Ausdrücke. Geben Sie daher den folgenden Befehl ein, um eine Liste aller Befehle in der Datenbank zu erhalten.

  whatis "."
 

Die Manpage für whatis enthält Folgendes:

whatis durchsucht eine Reihe von Datenbankdateien mit kurzen Beschreibungen von Systembefehlen nach Schlüsselwörtern und zeigt das Ergebnis in der Standardausgabe an. Es werden nur vollständige Wortübereinstimmungen angezeigt.

Es gibt auch einen ähnlichen Befehl namens apropos . Die Manpage für apropos enthält Folgendes:

apropos durchsucht eine Reihe von Datenbankdateien mit kurzen Beschreibungen von Systembefehlen nach Schlüsselwörtern und zeigt das Ergebnis in der Standardausgabe an.

Grundsätzlich besteht der Unterschied darin, dass apropos keine vollständigen Wortübereinstimmungen erfordert. Zum Beispiel würde whatis "string" keine Übereinstimmung finden, wenn string angetroffen wird, aber apropos "string" .

Nimesh Neema
2019-04-16 18:45:45 UTC
view on stackexchange narkive permalink

Nach dem, was @jksoegaard bereits erwähnt hat, ist es am einfachsten, die automatische Vervollständigungsfunktion Tab kbd> in Bash zu verwenden. Durch zweimaliges Drücken der Tabulatortaste kbd> werden alle verfügbaren internen Shell-Befehle, externen Befehle und verfügbaren Alias ​​aufgelistet. Wenn Sie die Anfangszeichen eines Befehls eingeben, werden die übereinstimmenden Befehle aufgelistet, wenn Sie zweimal die Tabulatortaste kbd> drücken.

Für macOS stehen Paketmanager von Drittanbietern zur Verfügung, mit denen Sie Befehlszeilentools installieren können, die entweder in der nativen Installation von macOS nicht verfügbar sind oder deren ältere Version installiert ist. Einige beliebte Software-Manager unter Softwareentwicklern sind Homebrew und MacPorts.

Wenn Sie also an einem breiteren Spektrum an Entwicklertools interessiert sind, die auf Ihrem Mac ausgeführt werden können, können Sie auch alle Befehlszeilentools auflisten, die für eine einfache Installation und Ausführung verfügbar sind, indem Sie die Brew-Suche code ausführen > für Homebrew und Port-Suche für MacPorts. Für die Ausführung dieser Befehle müssen die entsprechenden Paketmanager auf Ihrem System installiert sein.

Kevin
2019-04-17 00:44:21 UTC
view on stackexchange narkive permalink

Der Vollständigkeit halber können Sie bei Verwendung von zsh ls "$ {(@) path} (N)" verwenden. Verwenden Sie ls "$ {(@) path}" / * (- * N) oder printf "% s \ n" "$ {(@), um eine nach Verzeichnis gruppierte Liste zu erhalten. Pfad} "/ * (- * N) (unsortiert, aber in der Reihenfolge, in der sie gefunden werden würden); printf "% s \ n" "$ {(@) path}" / * (- * N) | xargs -L 1 Basisname | sort -u gibt Ihnen eine Liste nur der Befehle ohne Pfade.

Beachten Sie, dass hier nur ausführbare Dateien angezeigt werden, keine Aliase oder Funktionen. Um diese zu erhalten, verwenden Sie den Alias ​​ oder Typ -f + | grep -v '^ _' .

Beispielausgabe von jedem:

 % ls "$ {(@) path}" (N)
/Behälter:
[cat cp
[...]
 Synchronisierungstest wait4path

/ sbin:
apfs_hfs_convert fsck fstyp
[...]
 
 % ls "$ {(@) path}" / * (- * N)
/ bin / [/ usr / bin / nc / usr / local / bin / gmktemp
/ bin / bash / usr / bin / ncal / usr / local / bin / gmv
/ bin / cat / usr / bin / ncctl / usr / local / bin / gnice
/ bin / chmod / usr / bin / ncdestroy / usr / local / bin / gnl
/ bin / cp / usr / bin / ncinit / usr / local / bin / gnohup
/ bin / csh / usr / bin / nclist / usr / local / bin / gnproc
 
 % printf "% s \ n" "$ {(@) path}" / * (- * N)
/ usr / local / bin / 2to3
/ usr / local / bin / 2to3-2
/usr/local/bin/2to3-2.7
[...]
/ usr / sbin / AppleFileServer
/ usr / sbin / BootCacheControl
/ usr / sbin / DevToolsSecurity
/ usr / sbin / DirectoryService
[...]
 
 % printf "% s \ n" "$ {(@) path}" / * (- * N) | xargs -L 1 Basisname | sort -u
2to3
2to3-
2to3-2
2to3-2.7
2to3-3.7
7z
7za
7zr
AppleFileServer
AssetCacheLocatorUtil
AssetCacheManagerUtil
[...]
neu
zprint
zsh
zsh-5.7.1
 


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...