什么字符可以安全地用于在 unix/linux 上命名文件?

4 linux unix filesystems

在昨天之前,我只使用小写字母、数字、点 ( .) 和下划线 ( _) 来命名目录和文件。

今天我想开始使用更多的特殊字符。哪些是安全的(安全是指我永远不会有任何问题)?

ps:我不敢相信这个网站上还没有人问过这个问题,但我搜索了“命名”这个词并阅读了规范问题,但没有成功(大多数都是关于计算机名称)。

编辑 #1 :(顺便说一句,我不使用大写字母作为文件名。我不记得为什么。但是几个月以来,我遇到了大写字母的生产问题:某些操作系统不支持 ascii!)

这是昨天在工作中发生的事情: 像往常一样,我必须创建一个自签名 SSL 证书。像往常一样,我使用文件的网站名称:www2.example.com.key www2.example.com.crt www2.example.com.csr。

那么问题来了:生成通配符自签名证书。我这样做了,并将文件命名为 example.com.key example.com.crt example.com.csr,这是一种误导(它是 *.example.com 的证书)。

我回到家,开始在 apache 配置文件的文件名中添加一些星星,看看它是否有效(在无用的家用计算机上,甚至没有延迟)。

文件名中的星号真的让我害怕:一些同事/供应商/...可以使用 rm find xarg 执行一些脚本,这会导致http://www.ucs.cam.ac.uk/support/unix-support/misc/恐怖,并且已经有一个答案谈到了灾难。

编辑#2

只是认为:不需要逃避。任何人都知道为什么它不在文件名中使用?

编辑#3

让我们总结一下我到目前为止的理解:

  • .并且_可以安全地用于文件名。
  • | ( *应该避免需要转义的特殊字符(例如空格)。
  • 出于各种原因应避免使用其他一些特殊字符 ( / - :)

所有其他的呢,比如%=

Ben*_*ani 8

听起来像是灾难的秘诀。

您可以使用除/- 之外的任何内容,但您可能希望用单引号 ( ')括起来以避免执行特殊字符。

例如。 $*`\|

在文件名中使用特殊字符在很大程度上是一种 Windows主义- 主要来自 GUI 机器管理与命令行(它不适合不断地转义文件名)。

最安全的方法就是坚持 a-zA-Z0-9_.