2012-03-31 72 views
7

在典型的Linux shell(bash)中,可以選中選項卡兩次,以獲取所有可用shell命令的列表。如何獲取所有可用shell命令的列表

是否有一個命令具有相同的行爲?我想管它到grep並搜索它。

+1

下面的答案告訴你如何。我想如果你告訴我們爲什麼你會受益更多。 – 2012-04-01 11:38:41

+2

[Linux命令列出所有可用的命令和別名的可能的重複](http://stackoverflow.com/questions/948008/linux-command-to-list-all-available-commands-and-aliases) – camh 2013-08-17 06:48:50

回答

0

「tab」兩次&「y」打印$ PATH路徑中的所有文件。所以只要在PATH中打印所有文件就足夠了。

在外殼只需鍵入:

# printf "%s\n" ${PATH//:/\/* } > my_commands 

這重定向所有命令到一個文件「my_commands」。

0

您的路徑上可能存在一些實際上不可執行的內容。

#!/bin/sh 
for d in ${PATH//:/ }; do 
    for f in "$d"/*; do 
    test -x "$f" && echo -n "$f " 
    done 
done 
echo "" 

當然,這也會打印路徑。如果你只想要不合格的文件名,應該很容易適應這一點。

有趣的是,StackOverflow不知道如何處理語法突出顯示。 :-)

2

如果您先調整字段分隔符,則可以直接從$PATH列出目錄。在括號限制在一個命令的效果,所以用:(...) | grep ...

(IFS=': '; ls -1 $PATH) 
0

標籤標籤Ÿ

+0

對於我的設置,我只需要點擊一次標籤 – 2015-09-16 16:55:13

0

類似@ghoti,但使用find:

#!/bin/sh 
for d in ${PATH//:/ }; do 
    find $d -maxdepth 1 -type f -executable 
done 
0

Bash使用名爲'complete'的內置命令來實現選項卡功能。

我沒有細節的手,但應該告訴你所有你需要知道:

help complete 
0
(IFS=':'; find $PATH -maxdepth 1 -type f -executable -exec basename {} \; | sort | uniq) 

它不包括shell內建雖然。

0

的答案刪除了,我最喜歡它,所以我想重貼一次:

compgen是當然更好

echo $PATH | tr ':' '\n' | xargs -n 1 ls -1 

我發現這是最典型的外殼的東西,我認爲它也適用於其他外殼(我懷疑與IFS=':'東西懷疑)

顯然,有可能是問題,如果該文件不是一個前不可改變,但我認爲對於我的問題,這就足夠了 - 我只想輸入grep - 這意味着要搜索一些命令。

1

列出您的PATH variable(ls中的所有目錄)中的所有文件。默認的用戶和系統命令將分別位於/ bin和/ sbin中,但在安裝某些軟件時,我們會將它們添加到某個目錄並使用PATH變量進行鏈接。

相關問題