特定のコマンドは、タブのオートコンプリート条件をどのように変更しますか?

特定のコマンドは、タブのオートコンプリート条件をどのように変更しますか?

私が次のようなディレクトリにあるとしましょう。

:私のディレクトリ $ls

foo.txt

それが唯一の文書です。これを入力してcatTabキーを押すと、オートコンプリートされます(文字が実際にはキャレット位置であり、この目的に使用される文字ではないと仮定します)...

:私のディレクトリ$猫‸

(もう一度言うが、‸は文字ではなくカラットです)に変更します...

:mydirectory$ 猫 foo.txt ‸

ただし、次のコマンドの場合は異なります。

:私のディレクトリ$tar‸

タブをクリックすると、オートコンプリートオプションが表示されます。

A c d r t u x

次のように書くとき:

:私のディレクトリ$ tar -zxvf ‸

これにより、何も自動的には実行されません。

私の質問例:Bashでオートコンプリートルールを変更する方法については、多くのコマンドがありますか?

ベストアンサー1

このコマンドはオートコンプリートルールを変更しません。オートコンプリートのルールは、スクリプトと関数を使用してシェルに対して定義され、シェルの起動時にロードされます。bash他のシェルよりも慣れているので、これを例として使用します。

inのオートコンプリートルールはbashinスクリプトで定義されており/etc/bash_completion、ディレクトリ内の他のスクリプトで補完されます/etc/bash_completion.d/。これらのルールはbashログイン時に取得されます。

bashcomplete完成ルールを簡単に定義できるコマンドがあります。定義されているすべてのルールを表示するには、を実行できますcomplete -p

現在、ほとんどのディストリビューションではすでにこれらのルールが定義されています。したがって、と入力すると、tar <TAB>ディストリビューションでパターンおよび*.tar*コマンドtarオプションに一致するファイルをオートコンプリート提案として表示するルールを定義しました。そのため、 を入力するとtarオプションが提供されますが、そのA c d r t u x場合tar -zvxfは他にオプションがないため、オプションは提供されません。このディレクトリにファイルを出力すると、そのオプションの後のファイルがtarファイルである.tar.gzため、オートコンプリートオプションとして提案されます。f

デフォルトでは、/etc/bash_completion提案とファイル形式はフィルタリングされないため、オプションは提供されません。この場合、foo.txtファイルは提案としても表示されますtar

ここで独自のルールを作成する方法をお読みください。https://debian-administration.org/article/316/An_introduction_to_bash_completion_part_1そしてhttps://debian-administration.org/article/317/An_introduction_to_bash_completion_part_2

おすすめ記事