Bashで利用可能なコマンドを取得する方法

Bashで利用可能なコマンドを取得する方法

だから入力systemcして押してTab得ることができますsystemctl

しかし、で終わるすべてのコマンドをリストするにはどうすればよいですかctl

どうすればいいですか?

答え1

エイリアス、関数、bash組み込み、bashキーワードなど、利用可能なすべてのコマンドを一覧表示するには、次のように任意のパターンを使用して結果リストを生成compgen -cできます。grep

compgen -c | grep 'ctl$'

答え2

を使用すると、apropos ctl | lessマニュアルページを含むctl文字列を含むすべてのコマンドが表示されます。また、その文字列を含む他のいくつかの結果も表示されますが、驚くべきことに、これらの予期しない結果はほとんどないため、便利です。

答え3

$PATH一致するファイルを検索するのを防ぐことはできません

( IFS=:; for p in $PATH; do ls -d "$p"/*ctl; done ) 2>/dev/null

( ... )シェル変数を変更しているため、サブシェルを使用していますIFS。もう一つの方法は最初に保存し(OIFS="$IFS" IFS=:)後で復元することです(IFS="$OIFS")が、私にとってはこれが少ししっかりと感じられます。

答え4

これを行うには、次の方法を使用しますfind

( IFS=:; for dir in $PATH; do find $dir/ -type f -executable -iregex ".*ctl"; done )

cmdのみ表示:

( IFS=:; for dir in $PATH; do find $dir/ -type f -executable -iregex ".*ctl" -printf '%f\n'; done ) 2>/dev/null

関連情報