bash能否处理带有“美元符号”字符(“$”)的文件夹?

时间:2013-12-18 21:50:46

标签: bash character

在一家大公司内部开展项目。项目的文件夹包含“$”(美元符号)字符。当我尝试将目录更改为此文件夹时,这似乎令人困惑bash:

cd TEST_$_xyz

产生错误:

No such file or directory

我几乎可以肯定这是因为bash处理了“$”字符,但我对bash非常新,所以在强制更改名称之前我正在寻找确认。

由于

3 个答案:

答案 0 :(得分:4)

你需要像这样逃避美元($)的标志。否则,它将$_xyz视为环境变量。

cd TEST_\$_xyz

示例:

# In this case, $a evaluates to nothing because it is not defined
me@mypc:~/tmp/asdf$ mkdir a$a
me@mypc:~/tmp/asdf$ ls
a

# Here, I have escaped $ with \ so that it's treated like a normal $ character
me@mypc:~/tmp/asdf$ mkdir a\$a
me@mypc:~/tmp/asdf$ ls
a  a$a

# changing directory to directory with escaped $ sign
me@mypc:~/tmp/asdf$ cd a\$a
me@mypc:~/tmp/asdf/a$a$ 

答案 1 :(得分:3)

您可以将文件名用单引号括起来 - 这样就没有变量扩展名:

cd 'TEST_$_xyz'

请参阅"Single Quotes" section of the bash documentation

答案 2 :(得分:1)

你可以使用......

    cd TEST*xyz

(asterix可以处理许多不同的字符,如'$',空格等。)