4

在 Linux 和其他操作系统中,文件的名称中可以包含诸如(,),[,],<space>,etc. 之类的字符。每当我尝试在我的 bash 命令中使用任何这些文件(如 cat、ls 等)时,我都需要像下面这样对它们进行转义:

filename abc(10-oct).txt
cat abc(10-oct).txt wont work.

如果我在前面"("加上带有类似")"字符的"\"字符

cat abc\(10-oct\).txt

这有效

我正在尝试通过 Java 程序自动化一些 Linux shell 命令。而且我不确定我必须处理和转义它们的所有字符。

如果有人可以指出我可以获得完整字符列表的资源,那将是一个很大的帮助。

非常感谢

4

2 回答 2

7

引用Shell 命令语言

如果要代表自己,则必须引用以下字符:

| & ; < > ( ) $ ` \ " ' <space> <tab> <newline>

在某些情况下可能需要引用以下内容。也就是说,根据本规范其他地方描述的条件,这些字符可能是特殊的:

* ? [ # ~ = %

各种引用机制是转义字符、单引号和双引号。

它还说:

将字符括在单引号 (' ') 中会保留单引号内每个字符的字面值。单引号内不能出现单引号。

和:

将字符括在双引号 (" ") 中会保留双引号内所有字符的字面值,但美元符号、反引号和反斜杠字符除外...

于 2013-10-04T09:01:45.070 回答
5

您可以使用单引号'filename'将转义所有需要在 shell 模式下转义的内容

于 2013-10-04T08:56:40.747 回答