システムで利用可能なすべてのUnixコマンドを表示するには?

システムで利用可能なすべてのUnixコマンドを表示するには?

私は本を​​読んでいますLearning Unix for OS X by Dave Taylor。それは言う:

システム上のすべてのバイナリ実行可能ファイル(Unixプログラム)をすばやく表示するには、

ターミナルを開き、Shiftキーを押しながらを押すEsc-?か、を押してControl-XからShift-1Shift-1感嘆符を取得するには)を押します。

ただし、コマンドが端末に表示される前に、最初に選択するように求められます。

$ 
Display all 1453 possibilities? (y or n)

キーボードのキーを押すとnコマンドプロンプトに戻り、何も起こりません。ただし、このキーを押すと、yターミナルウィンドウにUnixコマンドフローの複数の列のリストが表示されます。

ところで、問題は、Shiftキーを押しながら押してもEsc-?何も起こらないということです。かかとを押す場合もControl-X同様ですShift-1。私は何が間違っていましたか?この機能を使用する前に有効にする必要がある設定はありますか? Mac El CapitanでiTerm2を使用しています。また、基本端末では動作しません。どんな助けでも大変感謝します。ありがとうございます。

ベストアンサー1

本の指示はbashに適用されます。 Zshはキーバインディングが異なる別のプログラムです。

zshでは、以下を使用してすべてのコマンド(外部、組み込み、関数、エイリアス、キーワード...)のリストを表示できます。

type -m '*'

彼らの名前を例にしてください。

whence -wm '*' | sed 's/:[^:]*$//'

または外部コマンド名の場合:

print -rlo -- $commands:t | less

$commandsすべての外部コマンドを含む配列です。これ履歴修飾子 :tコマンドパスのディレクトリ部分を切り捨てます。ティーアル)。print -rlo印刷してみてくださいアル字型ああアルファベット順ああ1個あたり1個注文ね。

より長いが、あまり神秘的ではない。

for p in "$path[@]"; do (cd ${p:-.} && ls); done | sort -u | less

すべてのshスタイルシェルで動作するように調整できます。

(IFS=:; for p in $PATH; do (cd ${p:-.} && ls); done) | sort -u | less

(ここにリストされているすべてのコマンドは、コマンドパスに「珍しい」文字がないと仮定します。)

おすすめ記事