bash-completionとgrepで__pycache__ディレクトリを無視できますか?

bash-completionとgrepで__pycache__ディレクトリを無視できますか?

私は__pycache__私のgitリポジトリとWildmenuでviこれを無視しました。これらのディレクトリが私のワークフローを汚染する最後の場所は、プロジェクトファイルを再帰的に収集し、コマンドラインtabでオートコンプリートを使用することです。

ディレクトリを普遍的に無視するなどのgrepコマンドラインツールを設定する方法はありますか?bash-completion

答え1

bash以下を設定して、ファイルのワイルドカード削除を有効にできます__pycache__

$ export GLOBIGNORE=__pycache__

今、次のことを発行すると:

$ ls __*
ls: cannot access __*: No such file or directory

bash環境変数を使用してFIGNOREファイルサフィックスをスキップすることもできます。ディレクトリを少しフィルタリングするために使用できます。

$ mkdir __pycache__
$ export FIGNORE=__pycache__

その後、発行された場合:

$ ls __tab

まで完了

$ ls __pycache__

ただし、プレフィックスが付いた場合(たとえば、パスを使用):

$ ls ./__tab

それは終わらないでしょう。

grepエイリアスを使用してディレクトリを除外できます__pycache__

alias grep='grep --exclude-dir="__pycache__"'

grepMadhavan Kumarの回答を使用してフィルタリングしたいコマンドの完成やその他のコマンドを変更することもできますが、オーバーライドをbash_completion適用するにはrcファイルで定義し、ソースの後にインポートする必要があることを忘れないでください。

FIGNORE
    A colon-separated list of suffixes to ignore when performing filename 
completion (see READLINE below). A filename whose suffix matches one of 
the entries in FIGNORE is excluded from the list of matched filenames. A 
sample value is ".o:~". 

GLOBIGNORE
    A colon-separated list of patterns defining the set of filenames to
    be ignored by pathname expansion. If a filename matched by a pathname 
    expansion pattern also matches one of the patterns in GLOBIGNORE, it is 
    removed from the list of matches. 

答え2

これらのコマンドを無視するように圧縮時間(秒)を変更できます。

たとえば、既存の compsec をインポートするには、次のようにします。

complete -p grep

返品、

 complete -F _longopt grep

次に、次のようにコマンドに除外オプションを追加します。

complete -F _longopt -X '@(__pycache__|more__patterns)' grep

Tabキーを押すと、これらのファイル名は表示されません。

関連情報