Osx
如何顯示系統上所有可用的 unix 命令?
我在看書,
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-?
什麼也沒有發生。與 PressingControl-X
後跟相同Shift-1
。我究竟做錯了什麼?在使用此功能之前,我需要啟用任何設置嗎?我在 Mac El Capitan 上使用 iTerm2。它也不適用於股票終端。任何幫助將非常感激。謝謝你。
書中的說明是針對 bash 的。Zsh 是具有不同鍵綁定的不同程序。
在 zsh 中,您可以看到所有命令(外部、內置、函式、別名甚至關鍵字…)的列表:
type -m '*'
只是他們的名字:
whence -wm '*' | sed 's/:[^:]*$//'
或者僅用於外部命令的名稱:
print -rlo -- $commands:t | less
$commands
是一個包含所有外部命令的數組。歷史修飾符:t
截斷命令路徑的目錄部分(僅保留尾部)。以字母順序print -rlo
列印它們**,每行**一個。更長,但不那麼神秘:
for p in "$path[@]"; do (cd ${p:-.} && ls); done | sort -u | less
這可以調整為在任何 sh 樣式的 shell 中工作:
(IFS=:; for p in $PATH; do (cd ${p:-.} && ls); done) | sort -u | less
(我在這裡列出的所有命令都假定命令路徑中沒有“異常”字元。)