web-dev-qa-db-ja.com

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

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

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

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

18
UAdapter

解決策はbashビルトインcompgenです。 $PATHを介してアクセス可能なすべての使用可能なコマンドおよびコマンドエイリアスから 'svn'をgrepするには、入力します。

compgen -ac | grep svn

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

compgen -ac | grep "^ecrypt"
21
Jjed

compgenを使用してみてください。

例えば:

compgen -ac | grep "svn"
2
Rajesh Pantula

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

for x in `echo $PATH | sed 's/:/ /g'`; do ls $x | grep svn; done
1
totaam
for i in $(echo $PATH | tr ":" "\n"); do find $i -type f -perm +111; done | grep svn

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

1
Oli

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

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

1
math

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 /.
0
user unknown