【问题标题】:How do I create files with special characters in Linux?如何在 Linux 中创建带有特殊字符的文件?
【发布时间】:2018-04-23 19:09:41
【问题描述】:

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

【问题讨论】:

  • 这可能属于这里:unix.stackexchange.com
  • 我怀疑其中一些字符在文件名中是不允许的:stackoverflow.com/questions/4814040/…
  • 我不认为他们是不允许的,这是一个关于我正在尝试做的练习的问题,所以必须有一个答案,对吧?我怀疑他们会问一个没有实际答案的问题。
  • 不太可能允许完全指定的文件名包含字符?*
  • 唯一的characters that are disallowed in filenames\0 (NUL) 和/?* 都可以,空格、换行符、引号、反斜杠和其他任何东西都可以。

标签: linux bash shell special-characters filenames


【解决方案1】:

escape special characters 需要使用反斜杠符号 (\)。


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

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

说明

  1. 将您的 \ 加倍,如下所示:\\,这样您的 shell 就不会将文件名中的反斜杠解释为转义字符。
  2. 转义 "',如下所示:\"\',以便您的 shell 将双引号解释为文件名的一部分。
  3. 转义$,像这样:\$,否则你的shell会认为你正在使用a variable
  4. 转义?*,像这样:\?\*,以防止filename expansion

【讨论】:

  • 如何使用ulr 像脚本中的文件名一样创建文件?我的意思是我有网址列表https://www.target.com 并迭代它touch ./reports/$line.html
  • @kirill.z 这与原始问题有点不同。你应该问一个新问题,这样以后会有同样问题的人更容易找到。但是,如果您想让我看看,请随时在 cmets 中分享您的问题的链接:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-10
相关资源
最近更新 更多