curlでファイルアップロードのセマンティクスを共有するツール用のbash補完スクリプトをビルドします。カールとタブ完了時にbash補完が文字を置き換えないようにする方法
は、あなたが行うことができます:
カール-Fするvar = @ファイル
ファイルをアップロードします。
私のアプリケーションは同様のセマンティクスを持っており、 '@'を押した後に可能なファイルを表示できるようにしたいと考えています。残念ながら、これは難しい証明されています
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
if [[ "$cur" == @* && "$prev" == '=' ]]; then
COMPREPLY=($(compgen -f ${cur:1}))
return 0
fi
ので、コマンドは(今のところ)で終わる場合:カレントディレクトリに
[email protected]
ファイルが表示されます。
[email protected]/usr/
/usr/bin /usr/games
実際にタブを押して完了すると、「@」が消えてしまいます。
var=/usr/bin
したがって、現在の単語全体をタブ付きのCOMPREPLYに置き換えているようです。
COMPREPLY=($(compgen -f ${cur:1}))
for ((i=0; i<${#COMPREPLY[@]}; i++));
do
COMPREPLY[$i]='@'${COMPREPLY[$i]}
done
しかし、今のタブ補完は、少なくとも言って奇妙に見える:
これを回避する唯一の方法は、これを実行することであった通常のファイルを表示するためにとにかくあり
@/usr/bin @/usr/games
タブの補完( '@'接頭辞なし)では、タブを押すと '@'が保持されますか?
恐ろしい質問を、これを試してみてください!私はこれに多くのことを学んだ。 – sanmiguel