Gibt es eine Möglichkeit, alle verfügbaren Befehle im Terminal aufzulisten?

Gibt es eine Möglichkeit, alle verfügbaren Befehle im Terminal aufzulisten?

Ich weiß, dass Linux compgen -ceinen entsprechenden Befehl für OS X hat?

Update: Das eigentliche Problem war, dass ich zsh anstelle von bash verwendet habe. Von zsh aus konnte ich also entweder einfach basheinen Bash-Befehl von zsh öffnen oder ausführenbash -c "compgen -c"

Angenommen, Ihre Shell ist bash, dann compgen -cwird es funktionieren.
vielleicht liegt es daran, dass ich zsh verwende, das ich bekommezsh: command not found: compgen
Yep, wenn ich bashdann eintrete compgen -c, funktioniert es, ich denke, meine Frage hätte lauten sollen, was das zsh-Äquivalent zum Bash-Befehl istcompgen -c
Ich denke also, wenn Sie zsh verwenden und Ihre Standard-Shell auf einem Mac optimiert haben, müssen Sie bereits ein ziemlich fortgeschrittener Benutzer sein :)
Ich markiere Ihre Frage, denn obwohl es "gibt es eine Möglichkeit, aufzulisten ...", ist es immer interessant, zurückzukommen und zu sehen, wofür andere Leute die Befehlszeile unter OSX verwenden

Antworten (5)

In zshmüssen Sie das Vervollständigungssystem aktivieren. Bitte durchlesen man zshcompsys. Um das Vervollständigungssystem zu installieren, geben Sie den Befehl ein

compinstall

und folgen Sie den Anweisungen. Überprüfen Sie die fpathVariable

echo $fpath

In meiner Situation musste ich die Variable in meiner .zshrc deklarieren

fpath=(/usr/local/share/zsh/5.0.7/functions)

Dies ist der Standort meiner zsh functions. Fügen Sie nach der compinitZeile in Ihrem .zshrcdie folgenden Zeilen hinzu

autoload -Uz bashcompinit
bashcompinit

Dies sind die Vervollständigungseinträge in my.zshrc

#\\\_ COMPLETIONS _///#
zstyle :compinstall filename '/Users/fd0/.zshrc'
zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}"
autoload -Uz compinit
compinit
autoload -Uz bashcompinit
bashcompinit

Ich kann jetzt den Befehl eingeben compgen -cund er verhält sich ähnlich wie bash.

Tippen Sie einfach zweimal auf die TabulatortasteTabTab ( ). Sie werden gefragt, ob Sie alle möglichen Befehle sehen möchten. Tippen Sie auf y und Sie erhalten eine Liste.

Sie können dasselbe für einzelne Befehle tun, um alle Optionen für diesen bestimmten Befehl anzuzeigen.

Guter Hinweis, aber das funktioniert bei mir nur, wenn ich bereits eine Teilzeichenfolge eingerichtet habe, und selbst dann ist es ein bisschen anders: tabx 1 zeigt an, ob es ein paar Optionen gibt, wenn es viele gibt, muss ich bestätigen; more tabStrikes durchläuft die Optionen (vielleicht sind meine zsh-Version 5.8 oder meine Konfiguration anders?). In jedem Fall ist compgen ein Befehl , der Vervollständigungen als Ausgabe generiert. tabSequenzen sind Tastenkombinationen, kein "äquivalenter Befehl ".
Dies funktioniert nicht in der Z-Shell (native Konfiguration) und ich konnte es nicht so konfigurieren. Früher iirc in bash tho ... Das heißt, in der Z-Shell können Sie die Befehle which or whence oder where gefolgt von a verwenden und <space>dann die <tab>Taste drücken, um aufgefordert zu werden, alle möglichen Auflistungen anzuzeigen (via &PATH)

Wie fd0 oben kommentierte, ist die beste Quelle, um fast alles, was Sie im Terminal tun können, schnell aufzulisten, die Verwendung des in Bash integrierten compgen .

CompgenSchnittstellen mit der "Completion"-Funktion in Bash, daher ist es beabsichtigt, eine Liste von fast allem zu führen, was Sie in der Shell tun können. Es ist also interessant, dass compgen technisch gesehen Befehle, Aliase und Funktionen sowie einige andere Dinge wie eingebaute Funktionen, Variablen, Gruppen, Jobs und Dienstnamen auflistet. Meine Erfahrung ist, dass es nicht alles auflisten wird, wie Anwendungen, die normalerweise in der GUI ausgeführt werden, was ich unten erwähnen werde. openSie können den Befehl beispielsweise in OSX für einige Dinge verwenden .

compgen -cführt den Befehl in einer Subshell-Umgebung aus, und seine Ausgabe wird als mögliche Vervollständigung verwendet, was wahrscheinlich das ist, was Sie wollen. Wenn Bash Ihre Shell ist, werden ähnliche Informationen für alle Befehle oder einen einzelnen Befehl ausgegeben, wenn Sie drücken Tab Tab.

In OSX ist es auch üblich , dass viele Programme von der Shell aus ausgeführt werden können, so dass viele Programmnamen, die Sie in /Applications finden , auch über eine CLI von der Shell aus aufgerufen werden können. In ähnlicher Weise befinden sich viele Programme (mindestens) unter /Applications/Utilities , einige interessante Dinge unter /System/Library/CoreServices/Applications (sowie andere Dinge unter dem Hauptverzeichnis /System ...) und manchmal auch benutzerdefiniert Programme werden unter den klassischen Unix-Speicherorten wie /usr/bin, usr/local/bin, /opt und /sys/bin abgelegt.

Oft können Sie andere interessante Dinge zum Eingeben finden, die wahrscheinlich auch oben behandelt wurden, indem Sie helpoder eingeben help [command or argument], mit weiteren Informationen zu den meisten Programmen oder integrierten Funktionen, die mitgeliefert werden, info [command]oder man [command]. Aproposist auch ziemlich interessant, die Sie vielleicht bereits kennen. Diese Dinge werden fast alles bekommen, ich stelle mir vor, es gibt andere Dinge, die man einfach braucht oder sollte, herumhacken und entdecken ...

Geben Sie im Terminal Tab Tab. Dann siehst du:

Display all 1653 possibilities? (y or n).

Drücken Sie Yund es werden alle möglichen Befehle aufgelistet

In meinem Fall fügt das Drücken der Registerkarte die Registerkarte ein. Dies hängt also wahrscheinlich vom verwendeten Terminal ab.
Wie unterscheidet sich diese Antwort von der Antwort, die ich 2 Jahre vor Ihrer Antwort hinterlassen habe?

(Tab, Tab) macht den Trick, aber es funktioniert nur auf Bash, wenn es nicht funktioniert, geben Sie zuerst 'bash' ein, dann (Tab, Tab), dann haben Sie die Wahl zwischen Ja (j) oder Nein (n). dir geht es gut.

Willkommen bei Ask Different. Anstatt dieselben Informationen aus zwei vorherigen Antworten zu wiederholen, wäre es am besten gewesen, eine davon mit „Einfach bash eingeben“ zu bearbeiten.