特定のコマンドのbashの完成を拡張するスクリプトがあります。 command1と入力してタブを実行すると、ファイルディレクトリ(およびファイル)が自動的に完成します。 1つの不便な問題を除いて、それはうまく機能します。オートコンプリートされるたびにスペースが追加されます。たとえば、ルートからサブディレクトリにアクセスしようとすると、アクセスする各サブディレクトリに追加のスペースが追加され、bash完成拡張の目的が失われます。私は初めてバッシュに触れました。これは私がスクリプトを書いた結果ですか、それともスクリプトが展開されたときにタブを完成させるのですか?
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="command1 command2"
serviceOpts="opt1 opt2"
case "${prev}" in
command1)
COMPREPLY=( $(compgen -f ${cur}) )
return 0
;;
command2)
COMPREPLY=( $(compgen -W "${serviceOpts}" ${cur}) )
return 0
;;
*)
;;
esac
答え1
完全なコマンドには、-o nospace
Readlineに追加のスペースを追加しないように指示するオプションがあります。
文書