5

以下是对一些问题(尤其是 shell)的许多评论,它们基本上说明了以下一项或多项内容:

  • 这将在包含空格、换行符等的文件名上失败,
  • 如果文件是符号链接(或不是),这将失败
  • 如果$filaneme是目录而不是常规文件,这将失败,
  • 等等。

虽然我知道每个脚本都需要自己的测试环境,但这些是脚本应该免疫的一些常见问题

因此,我的意图是编写一个脚本,该脚本将创建一些具有“特制”文件名的目录层次结构以用于测试目的。

问题是:什么“特殊”文件名适合这个测试?

目前我有(脚本创建文件和目录):

  • 文件名中的空格
  • 文件名中的换行符
  • 以下列之一开头的文件名:
    • -(如命令参数)
    • #(评论字符)
    • !(命令历史)
  • 包含以下之一的文件名:
    • |字符(管道)
    • ()字符
    • *?(通配符)
  • 带有 unicode 字符的文件名
  • 以上所有目录
  • 目录的符号链接
  • 文件的符号链接

还有什么我不应该错过的想法吗?

4

1 回答 1

3

我想到了什么:

  • 文件名中的单引号和双引号
  • $开头
  • 几个重定向字符,如> < << <<<
  • 字符( ~$HOME)
  • 这 ';' (作为命令分隔符)
  • 文件名中的反斜杠\

基本上,通过 ascii 表并测试所有字符,如果你认为你需要这个:)

还有一些评论:

  • 如果您想要堆栈溢出问题的测试脚本,您应该创建一个包含 OP 内容的文件(称为“基本文件”)
  • 以上所有“特殊文件”应该是上述基本文件的符号链接。使用这种方法,您可以轻松地修改文件的内容(您只需要更改一个 - 基本的)。
  • 或者,如果符号链接不是您使用的解决方案hard-links

不直接与文件名中的特殊字符有关,但要注意:

  • 不同的大小写文件名,尤其是对于像这样的图像image.jpg image.JPG,相同的文件名只是不同的扩展名

编辑:来自评论的想法:

  • 非常长的文件名、大量的文件以及非常深的目录层次结构(三元组
于 2013-05-06T15:25:55.467 回答