
拡張子があるか、引数として play
ファイルを受け入れるコマンドがあります。mp4
mkv
play_completion.sh
ファイルを作成しました。/etc/bash_completion.d/
ディレクトリと拡張子play
のファイル名をオートコンプリートするコマンドが必要です。私はこの問題の助けを求めましたが、成功しませんでした。bashのオートコンプリートに関するドキュメントはかなり圧倒的です。 mp4
mkv
これまで私はこれを持っています...
complete -f -X '!*.@(mp4|mkv)' play
ただし、それを使用して取得した後は、source /etc/bash_completion.d/play_completion.sh
ディレクトリではなく希望の拡張子を持つファイル名のみがオートコンプリートされます。
答え1
ただ追加してください-o plusdirs
また、オートコンプリート機能は、以前の結果にディレクトリ名を追加するようにコマンドをオートコンプリートします(パターン一致を無視)。
complete -f -o plusdirs -X '!*.@(mp4|mkv)' play
!
否定的な完了。これは、自動競争が私たちが指定した一致パターン以外の完了結果を無視することを意味します*.@(mp4|mkv)
。@
指定されたパターンの少なくとも1つにのみ一致するようにオートコンプリートを指示します。これを@(pattern-list)
Bashの拡張グローバル変数と呼びます。*.+(pattern-list)
ここではglobを使用することもできます。
コマンドのファイル名とディレクトリ名を強制的に完了し、指定さplay
れたパターンに対してのみ拡張するには、次のようにします。
complete -d -X '!*@(mp4|mkv)' -f -X '!*.@(mp4|mkv)' play
以下も機能するはずです。
complete -d -f -X '!*.@(mp4|mkv)' play