bashと入力unzip
してキーを押すと商標、オートコンプリート機能は、拡張子が.zipのファイルでのみ機能します。あなたはそうしなかった方法?画像ファイルのみを許可するプログラムを作成したい場合は、オートコンプリートを特定の拡張子(例:.jpgや.pngのみ)に制限するにはどうすればよいですか?
これは一種のシステム設定ですか、それとも言語(bash、C ++、Python)に依存するプログラミング設定ですか?
答え1
プログラム自体は、渡されたすべてのファイル名を実行します。完成サフィックスの制限は、プログラム.zip
の機能とは何の関係もありません。完了はシェルによって行われます。を押すと、Tabシェルはコマンドラインをある程度解析してコンテキストの完了ルールを見つけます。シェルによっては、コンテキスト分析および完了ルールが多少複雑になることがあります。たとえば、完成した機能を持つほとんどのシェルは、コマンドラインに次のものが含まれていて、を押すとecho $P
開始Tabされる変数名を探しますP
。デフォルトでは、シェルは一般的なケースなので、ファイル名を完成させます。
Bash、tcsh、zshには、完了プロセスをプログラム可能にする方法があります。カーソルの下のコマンドを解析し、テーブル内の特定のコマンドのルールを見つけます。プログラムで完了したら、プログラムテーブルのエントリは、最初の引数が既存のファイルでなければならunzip
ず、.zip
後続の引数がzipアーカイブメンバーの名前でなければならないことを示します。
完了ルールはプログラム自体には含まれていませんが、同じパッケージにプログラムと共に提供される場合があります。たとえば、コマンドを含むパッケージには、bashがどのようにコマンド引数を完成するかを説明するファイルと、zshの同様のファイルを含めることが/usr/bin/foo
できます。/etc/bash_completion/foo
foo
/usr/share/zsh/functions/Completion/_foo
答え2
Bashコマンドラインの完成は、Bashスクリプトでカスタマイズできます。 Gentoo Linuxでは、コマンドを使用してアクティブにしたい完成度を簡単に管理できますeselect bashcomp
。有効にすると、システム全体のスクリプトへのシンボリックリンクがディレクトリに作成されます~/.bash_completion.d/
。このスクリプトは、bashを使用してオートコンプリートを完了する方法を学ぶための最初のリソースとして使用できます。