ティルダ拡張とバックスラッシュを含む二重引用符

ティルダ拡張とバックスラッシュを含む二重引用符

次の内容がなぜ間違っていますか?

$ cd "~/my data"
bash: cd: ~/my data: No such file or directory

$ cd ~"/my data"
bash: cd: ~/my data: No such file or directory

$ cd ~/"my data" # works

ベストアンサー1

バッシュはどうですか?チルダ拡張働く:

単語が引用符のないチルダ文字( '〜')で始まる場合、引用符のない最初のスラッシュまでのすべての文字(または引用符なしのスラッシュがない場合はすべての文字)には、チルダがプレフィックスであると見なされます。


あなたのホームディレクトリがあり、/home/user現在の場所にあると仮定すると、最初例:

cd "~/my data"

cdその後、パスがあるディレクトリに入ろうとします/home/user/~/my data/。これは~ディレクトリまたはファイル名の有効な文字です。


これ第二例:

cd ~"/my data"

これは最初のものと同じことを行います。気になる方は、上記の引用に記載されているように、スラッシュが引用されているからです。


これ第三例:

cd ~/"my data"

$HOMEスラッシュは引用符ではなく環境変数の内容に置き換えられるため、チルダ拡張が行われます。これによりディレクトリが変更されます/home/user/my data/

おすすめ記事