Gibt es eine Möglichkeit, alle verfügbaren Befehle im Terminal aufzulisten?
Ich weiß, dass Linux compgen -c
einen 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 bash
einen Bash-Befehl von zsh öffnen oder ausführenbash -c "compgen -c"
In zsh
mü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 fpath
Variable
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 compinit
Zeile in Ihrem .zshrc
die 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 -c
und 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.
tab
x 1 zeigt an, ob es ein paar Optionen gibt, wenn es viele gibt, muss ich bestätigen; more tab
Strikes 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. tab
Sequenzen sind Tastenkombinationen, kein "äquivalenter Befehl ".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 .
Compgen
Schnittstellen 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. open
Sie können den Befehl beispielsweise in OSX für einige Dinge verwenden .
compgen -c
fü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 help
oder eingeben help [command or argument]
, mit weiteren Informationen zu den meisten Programmen oder integrierten Funktionen, die mitgeliefert werden, info [command]
oder man [command].
Apropos
ist 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
(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.
fd0
compgen -c
wird es funktionieren.Ihr Freund Ken
zsh: command not found: compgen
Ihr Freund Ken
bash
dann eintretecompgen -c
, funktioniert es, ich denke, meine Frage hätte lauten sollen, was das zsh-Äquivalent zum Bash-Befehl istcompgen -c
StackxPasswort vergessen
StackxPasswort vergessen