The*_*Cat 4 text-processing history unix-philosophy columns
Doug McIlroy,Unix 管道的发明者和 Unix 传统的创始人之一,当时有这样的话 [McIlroy78]:
(ii) 期望每个程序的输出成为另一个未知程序的输入。不要用无关信息混淆输出。避免严格的列式或二进制输入格式。不要坚持交互式输入。
严格的柱状数据对我来说听起来不错,所以我可能不明白他的意思。
这是什么意思,为什么不好?
我假设他的意思是对齐的列,而不是一般的列数据。无论如何,这就是我如何严格理解的。例如:
坏的:
1 200 3
100 3 400
Run Code Online (Sandbox Code Playgroud)
好的:
1 200 3
100 3 400
Run Code Online (Sandbox Code Playgroud)
换句话说,制作易于计算机阅读的文件,而不是人类阅读的文件。添加空格来对齐事物会使它们变得漂亮且易于您和我理解,但可能会混淆需要解析它们的程序。
例如,如果我要使用cut
获取上述每个示例的第二个字段,它会在第一个失败:
$ cut -d' ' -f 2 bad
$ cut -d' ' -f 2 good
200
3
Run Code Online (Sandbox Code Playgroud)
由于多余的空格,bad
文件的第二个字段是一个空格。但是,它在good
文件中按预期工作。