ファイル名の拡張に Tab キーを押すと、変数の拡張に必要な引用符が削除されます。

ファイル名の拡張に Tab キーを押すと、変数の拡張に必要な引用符が削除されます。

Bashでは、次の変数を設定しましたo='OneDrive - MyCompany'。次に、次のように入力して使用しますcd "$o"/Docu。次に、Tabキーを押してフォルダ名に単語の完成を実行します。明らかになるcd $o/Documents。 Enterキーを押しましたが、二重引用符を盗んで失敗しました。はい! ? !"$o"ディレクトリ名のクイックショートカットとして使用したいです。入力したくないので、"$o/DocuTABを押してからを押すと"機能します。入力を開始するときにTabキーを押して、後でパスの内容を拡張できるかどうかを考えたくありません。私は二重引用符で囲まれた変数の規則に従いたいのですが、ここではうまくいきません。

変数を定義するときにスペースの前にバックスラッシュを入れて変数を拡張した後は、バックスラッシュを尊重できたらと思います。私ができる方法はありますか?これはこの問題を非常によく解決することができます。

この問題を処理する最良の方法は何ですか?私はシステムと戦いたくなかったが、迅速かつ自然に感じることを望んでいた。

予想される動作に近づくために変更する必要があるシェル設定はありますか?私は25年間tcshを使用してきましたが、ちょうどbashに切り替えました。学び、適応することが多いです。現在のシェルオプションは次のとおりです。

$ shopt
autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       on
checkwinsize    off
cmdhist         on
compat31        off
compat32        off
compat40        off
compat41        off
compat42        off
compat43        off
completion_strip_exe    off
complete_fullquote      on
direxpand       off
dirspell        off
dotglob         on
execfail        off
expand_aliases  on
extdebug        off
extglob         off
extquote        on
failglob        off
force_fignore   on
globasciiranges off
globstar        on
gnu_errfmt      off
histappend      on
histreedit      on
histverify      on
hostcomplete    on
huponexit       off
inherit_errexit off
interactive_comments    on
lastpipe        off
lithist         off
login_shell     on
mailwarn        off
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
progcomp        on
promptvars      on
restricted_shell        off
shift_verbose   off
sourcepath      on
xpg_echo        off

注:この質問は次の質問とは異なります。シェル変数のタブ拡張/自動補完を使用するためにcdを使用できないのはなぜですか?しかし、それは同じ答えを持っていることがわかりました。

ベストアンサー1

私は答えを見つけました。シェル変数のタブ拡張/自動補完を使用するためにcdを使用できないのはなぜですか? を設定する必要がありますshopt -s direxpand。これにより変数が拡張され、スペースをエスケープするために必要なバックスラッシュが追加されます。使っていなくても"$o"。これが私にとって必要なことです。

おすすめ記事