在Linux中如何创建包含特殊字符的文件?

9

我正在使用touch命令尝试创建一个名为"\?$*'KwaMe'*$?\"(引号作为文件名的一部分)的文件。但是,当我在终端中键入touch "\?$*'KwaMe'*$?\"时,它没有给出我期望的结果。如何创建这个文件?


这可能适用于此处:https://unix.stackexchange.com/ - Christian Gibbons
我不认为它们被禁止了,这是我正在尝试做的一个练习问题,所以肯定有答案,对吧?我怀疑他们会问一个没有实际答案的问题。 - Cameron Shirley
很不可能允许完全指定的文件名包含字符“?”或“*”。 - Weather Vane
5
在文件名中,唯一不允许使用的字符是\0(NUL)和/?*可以使用,空格、换行符、引号、反斜杠或其他任何字符也都是可以的。 - John Kugelman
1个回答

14

你需要使用反斜杠符号(\)进行转义特殊字符


这个命令将会创建一个名为"\?$*'KwaMe'*$?\"的文件:

touch \"\\\?\$\*\'KwaMe\'\*\$\?\\\"

说明

  1. 双倍使用反斜杠,像这样:\\,这样你的shell就不会将文件名中的反斜杠解释为转义字符。
  2. 转义"',像这样:\"\',这样你的shell就会将双引号视为文件名的一部分。
  3. 转义$,像这样:\$,否则你的shell会认为你正在使用一个变量
  4. 转义?*,像这样:\?\*,以防止文件名扩展

如何从脚本中创建类似于url的文件名?我的意思是,我有一个URL列表https://www.target.com并迭代它touch ./reports/$line.html - storenth
2
@kirill.z 这与原始问题有些不同。您应该提出一个新问题,这样将来遇到相同问题的人就更容易找到它。但如果您想让我看一下,请随时在评论中分享您的问题链接 :) - Ronan Boiteau
你能否在如何使用lsrm命令删除和列出这些文件方面提供额外的解释?我发现大多数感染的文件都会自动创建带有特殊字符文件名的文件。 - Mr Hery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接