私は本を読んでいますLearning Unix for OS X by Dave Taylor
。それは言う:
システム上のすべてのバイナリ実行可能ファイル(Unixプログラム)をすばやく表示するには、
ターミナルを開き、
Shift
キーを押しながらを押すEsc-?
か、を押してControl-X
からShift-1
(Shift-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
(ここにリストされているすべてのコマンドは、コマンドパスに「珍しい」文字がないと仮定します。)
答え2
ダブルタップするとトーマスがTAB
言及した効果を得ることができます。
しかし、それでも問題が解決しない場合は、単純ですが汚れてからハッキングを試してみてください。
for i in `echo $PATH | sed 's:\:: :g'`
do
echo $i
done
後で必要/便利に応じてビューを変更できます。
答え3
@Gillesの答えのおかげで、質問で説明されているコマンドがbash
シェルで機能することがわかりました。
バッシュユーザーの場合
したがって、将来の訪問者にシェルを使用する場合は、bash
上記の質問の説明に記載されているコマンドを参照して、システムで利用可能なすべてのUnixコマンドを表示します。
zshユーザーの場合
シェルを使用している場合、zsh
すべてのコマンドを表示する正しい方法は次のとおりです。
!
(感嘆符文字)Tabを入力してキーを2回押します。
つまり、Shift+キーを押し1てからTabキーを2回押します。
これがうまくいかない場合は、GillesとSHWが他の回答で説明したトリックを参照してください。