带有 tilda 扩展和反斜杠的双引号

带有 tilda 扩展和反斜杠的双引号

为什么下面的内容是错误的?

$ 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

那如何bash波形符扩展作品:

如果单词以不带引号的波浪号字符 ('~') 开头,则直到第一个不带引号的斜杠之前的所有字符(或所有字符,如果没有不带引号的斜杠)都将被视为波浪号前缀。


假设您的主目录是/home/user并且您当前位于其中,第一的例子:

cd "~/my data"

这会尝试cd进入路径为 的目录/home/user/~/my data/。请注意,这~是目录或文件名中的有效字符。


第二例子:

cd ~"/my data"

这与第一个的作用相同。如果您想知道,那是因为斜杠被引用了,如上面的引文中所述。


第三例子:

cd ~/"my data"

这会进行波形符扩展,因为斜杠没有被引用,因此被$HOME环境变量的内容替换。这会更改目录/home/user/my data/

相关内容