需要在linux shell命令中转义的字符列表

时间:2013-10-04 08:53:18

标签: java regex bash

在Linux和其他操作系统中,文件名称中可能包含(,),[,],<space>,等字符。 每当我尝试在我的bash命令中使用任何这些文件时,如cat,ls等,我需要像下面这样逃避它们:

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

如果我在"("")"字符之前加上"\"字符

cat abc\(10-oct\).txt

这有效

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

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

非常感谢

2 个答案:

答案 0 :(得分:6)

引自Shell Command Language

  

如果要表示,则必须引用以下字符   本身:

     

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

     

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

     

* ? [ # ~ = %

     

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

它还说:

  

用单引号('')括起字符可以保留文字   单引号中每个字符的值。单引号   不能出现在单引号内。

  

用双引号(“”)括起字符可保留文字   双引号内所有字符的值,但有例外   字符美元符号,反引号和反斜杠......

答案 1 :(得分:5)

您可以使用单引号'filename'来逃避在shell模式下转义的所有内容