Bashはファイルディレクトリを追加するときに追加のスペースを完成させます。

Bashはファイルディレクトリを追加するときに追加のスペースを完成させます。

特定のコマンドの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 nospaceReadlineに追加のスペースを追加しないように指示するオプションがあります。 文書

関連情報