
だから入力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