转义单引号

转义单引号

我必须擦除驱动器并重新安装 Windows,这还需要重新安装 cygwin。

在我的新安装中,

ls -l "*\'*"

回报

ls: cannot access '*\'\''*': No such file or directory

多年来,直到这一点,ls -l *\'*都会向我提供一个目录和文件列表,其中用户在文件或目录名称中包含单引号。

关于这种情况我可能会错过什么,有什么建议吗?

例如,显然 coreutils 进行了一些更改,导致名称中带有空格的文件被列为“此文件包含空格”,并且必须使用开关/变量将其关闭。

我想知道关于单引号是否对标准使用进行了一些类似的更改。

答案1

*如果您希望它充当通配符,则不能引用。单引号和双引号都会逃脱它。

双引号也会转义单引号,因此整个字符串*\'*将按字面意思理解:

$ echo "*\'*"
*\'*

您想要编写不带双引号的字符串,正如您稍后在问题中所写的那样:

ls -l *\'*

另一种可能更适合您的方法是使用命令find。 (它不遵循与上面相同的引用规则,因此很抱歉造成混淆)。使用 find,您可以使用以下命令以递归方式搜索目录结构,以查找包含单引号的任何文件:

find . -name "*'*"

在此示例中.代表您当前所在的目录,但您可以将其替换为您想要搜索的任何目录的路径。

相关内容