コンソールでタブを押すと、この出力が表示されます
2957の可能性をすべて表示しますか? (yまたはn)
これらの2957の可能性でgrep
を使用する方法はありますか?単語「svn」を含むすべてのコマンドを検索したいと思います。
解決策はbashビルトインcompgen
です。 $PATH
を介してアクセス可能なすべての使用可能なコマンドおよびコマンドエイリアスから 'svn'をgrepするには、入力します。
compgen -ac | grep svn
特定のプレフィックス(たとえば、ecrypt
で始まるすべてのコマンド)から検索したいですか? 正規表現 を使用します。
compgen -ac | grep "^ecrypt"
compgen
を使用してみてください。
例えば:
compgen -ac | grep "svn"
これは同等でなければなりません:
for x in `echo $PATH | sed 's/:/ /g'`; do ls $x | grep svn; done
for i in $(echo $PATH | tr ":" "\n"); do find $i -type f -perm +111; done | grep svn
これを除けばtotaamの答えと非常によく似ていますが、その範囲は実行可能ファイルに制限されます(Bashと同様)。しかし、JJEのcompgen
はさらに1マイル優れています。
多分{,.}*svn*
はここで役立ちます。 ls -l /usr/bin/{,.}*svn*<tab>
。
しかし、Zshをご覧ください!こちら: http://www.jukie.net/bart/blog/zsh-tab-completion は、タブ補完の結果を減らすのに役立つ素晴らしい例です。これには否定も含まれます。 Word "foobar"なしですべてのタブ補完結果が必要な場合、またはそもそも偶数、サブディレクトリタブ補完などすべての結果が必要な場合。私がzshに変更した理由は、開いているすべての端末間で履歴を共有するためです。
Compgenを知らなかったので、次のように提案していました。
ls -d ${PATH//:/\/*svn* } 2>/dev/null
バッシュ用。
${VAR//pattern/replace} replaces in VAR pattern with replace. // is used to replace every pattern, not just the first, which would be just /.