作成したユーティリティスクリプトのbash補完を設定しようとしているので、次のスクリプトを/etc/bash_completion.dに追加しました。
_mcd()
{
local cur words
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
words=`mcd-completion-words`
COMPREPLY=( $(compgen -W "${words}" -- "$cur") )
return 0
}
complete -F _mcd mcd
スクリプトはmcd-completion-words
、コマンドで使用可能な演算子をプログラムで検索します。bashを再起動する(またはスクリプトをソースする)と、タブを正常に完了できますが、そうすると、完了した文字を超えてバックスペースキーを押すことができなくなります。
また、すべてのオプションを一覧表示しようとすると(たとえば、単語がない状態でタブを完成させようとすると)、bashはコマンドにタブを追加しますが、これもバックスペースできません。
bashに通常のファイル完了動作を模倣させるにはどうすればよいですか?どんな助けでも大歓迎です。ありがとう!
これは、同じ動作を示すmcd-completion-wordsの縮小テストケースです。不思議なことに、デニスのケースは私にも有効です(たとえば、words = "one two three"に置き換える場合)。
#!/usr/bin/env php
<?php
print "one two three four five six seven eight nine";