2012-03-31 20 views
7

典型的なLinuxシェル(bash)では、タブを2回押して使用可能なすべてのシェルコマンドのリストを取得することができます。利用可能なすべてのシェルコマンドのリストを取得するには

同じ動作をするコマンドはありますか?私はそれをgrepにパイプして検索したいと思います。

+1

答えはどのように伝えます。理由を教えていただければもっと恩恵を受けると思います。 –

+2

[Linuxコマンドで使用可能なすべてのコマンドとエイリアスを一覧表示する]の複製が可能です(http://stackoverflow.com/questions/948008/linux-command-to-list-all-available-commands-and-aliases) – camh

答えて

0

"tab"を2回& "y"は$ PATHのパスにあるすべてのファイルを出力します。したがって、PATHにすべてのファイルを印刷するだけで十分です。

ただ、シェルで次のように入力します。これは、ファイル「my_commands」へのすべてのコマンドを

# printf "%s\n" ${PATH//:/\/* } > 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

タブタブY

+0

私の設定、私はちょうど一度タブを押す必要があります –

0

@ghotiと同様ですが、使用して検索:

#!/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) 

それはしかし、シェルの組み込みコマンドが含まれていません。

0

答えは削除された、私はほとんどそれが好きなので、私はそれを再投稿しようとしている:

compgenは、私はこれが最もあることが判明し、もちろん

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

優れています典型的なシェルの事、私はそれが他のシェル(これは私が IFS=':'のようなものと疑う)でも動作すると思います。

明らかに、ファイルがex私はちょうどgrep私の出力 - いくつかのコマンドを検索することを意味します。

1

PATH variable(PATH内のすべてのディレクトリ)にすべてのファイルをリストします。デフォルトのユーザコマンドとシステムコマンドは、それぞれ/ binと/ sbinにありますが、いくつかのソフトウェアをインストールする際に、それらをあるディレクトリに追加し、PATH変数を使用してリンクします。

関連する問題