Bashでは、次の変数を設定しましたo='OneDrive - MyCompany'
。次に、次のように入力して使用しますcd "$o"/Docu
。次に、Tabキーを押してフォルダ名に単語の完成を実行します。明らかになるcd $o/Documents
。 Enterキーを押しましたが、二重引用符を盗んで失敗しました。はい! ? !"$o"
ディレクトリ名のクイックショートカットとして使用したいです。入力したくないので、"$o/Docu
TABを押してからを押すと"
機能します。入力を開始するときに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"
。これが私にとって必要なことです。