タブ補完の可能性をどのように把握できますか?


18

コンソールでタブを押すと、この出力が表示されます

2957の可能性をすべて表示しますか?(yまたはn)

grepこれらの2957の可能性に使用する方法はありますか?「svn」という単語を含むすべてのコマンドを検索したいと思います。

回答:


21

解決策はbash builtin compgenです。利用可能なすべてのコマンドおよびコマンドエイリアスからアクセスできる「svn」をgrepするには$PATH、と入力します。

compgen -ac | grep svn

特定のプレフィックスから検索したい(例えば、で始まるすべてのコマンドecrypt正規表現を使用します。

compgen -ac | grep "^ecrypt"

優れた答えですが、タブ補完の可能性自体をgrepしたい場合はどうでしょうか?つまり、それは常にコマンド名によってトリガーされるのではなく、コマンドパラメーターなどによってもトリガーされます。
UncleZeiv12年


1

これは同等でなければなりません:

for x in `echo $PATH | sed 's/:/ /g'`; do ls $x | grep svn; done

1
for i in $(echo $PATH | tr ":" "\n"); do find $i -type f -perm +111; done | grep svn

これを除けばtotaamの答えと非常によく似ていますが、その範囲は実行可能ファイルに制限されます(Bashと同様)。しかし、JJE compgenはさらに1マイル優れています。


1

多分{,.}*svn*ここで役立ちますls -l /usr/bin/{,.}*svn*<tab>

しかし、Zshをご覧ください!ここ:http : //www.jukie.net/bart/blog/zsh-tab-completionは、タブ補完の結果を減らすのに役立つ素晴らしい例です。これには否定も含まれます。たとえば、「foobar」という単語のないすべてのタブ補完結果、または最初の桁が偶数のすべての結果、サブディレクトリのタブ補完などが必要な場合です。私がzshに変更した理由は、開いているすべての端末間で履歴を共有するためです。


0

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 /.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.