Unix Legendry(以及其他 *nix)

Unix Legendry(以及其他 *nix)

这是这个问题的孪生兄弟

最晦涩/最受赞同的答案将获得答案投票!

大多数 Unix 和类 Unix 系统都有“传统历史”,这些历史会随着每一代人而流传,因此新来者可以看到和理解系统中一些比较深奥的部分。就新管理员应该接触的深奥知识而言,哪些长期使用 *nix 的管理员为“UNIX”的“传奇”做出了贡献?

答案1

我个人最喜欢的是“500 英里电子邮件案例”

http://www.ibiblio.org/harris/500milemail.html

剧透

$ units
2411 units, 71 prefixes, 33 nonlinear units

You have: 3 millilightseconds
You want: miles
    * 558.84719
    / 0.0017893979

答案2

对我来说,UNIX 传统中最令人惊奇的是 UNIX 基本上是由一个人编写的 - Ken Thompson 在贝尔实验室工作时。这里有一个有趣的描述:http://www.bell-labs.com/history/unix/

其中一些引言非常有价值:

“我给操作系统、shell、编辑器和汇编程序分别分配了一周时间来自我复制...”,汤普森解释道。

管道:

UNIX 的另一项创新是管道的开发,它使程序员能够将多个进程串联起来以获得特定的输出。

这并不容易。“说‘cat into grep into...’或‘who into cat into grep’很容易,”McIlroy 解释道。“但这些命令有所有这些附加参数;它们只是没有输入和输出参数,但它们有所有这些选项。”

尽管受阻,麦克罗伊并没有放弃这个想法。“在 1970 年至 1972 年期间,我时不时会说,‘做个类似的东西怎么样?’,然后我提出一个又一个的提案。有一天,我想出了一个与管道配合使用的 shell 语法,肯说,‘我要这么做!’”

“他厌倦了听这些东西,”麦克罗伊解释道。“他并没有完全按照我为管道系统调用所提议的那样去做。他发明了一个稍微好一点的,最后又改成了我们今天所用的样子。他确实用了我笨拙的语法。”

“汤普森发现文件参数与这种方案不相符,于是他当晚就修改了所有程序。我不知道他是怎么做到的……第二天早上,我们就看到了一堆乱七八糟的单行代码。”

他把管道放入 UNIX,把这种符号放入 shell,这一切都是在一夜之间完成的”麦克埃罗伊惊奇地说道。

从技术上来说,这一成就非常出色,但当汤普森创建管道时,他还为 UNIX 注入了其他东西——一种哲学。

正如麦克罗伊所描述的那样,“每个人开始提出的理念是‘编写只做一件事的程序,并做好它。编写程序以协同工作。编写处理文本流的程序,因为那是一个通用接口。’”

答案3

tar 永远不会因错误而退出。永远不会。小心。

来源:UNIX-HATERS 手册,第 31 页(http://simson.net/ref/ugh.pdf)抱歉,没有HTML版本。

这本书恰好充满了其他传奇故事,而且大部分内容仍然适用。在我使用 Linux 的这些年里,我遇到过很多这样的问题……但谢天谢地,没有一个问题需要我重新安装整个驱动器。令我惊讶的是,这本书的大部分内容仍然准确,尽管它是 15 年前写的。

现在说说我自己的 tar 恐怖故事,几乎和 UNIX-HATERS 的故事一模一样。同样的 bug,14 年过去了!

我想让我的无线设备在 eeepc 上工作,为此我必须下载驱动程序、编译并安装它。我下载了所有需要的东西,然后出发去图书馆工作。中途,我意识到是的,我确实需要互联网来做某事,所以我去安装。

tar -cvf somewirelessdriver.tar ./importantcompilerfiles

哦,糟糕。我刚才输入的是不是 -cvf 而不是 -xvf?

是的。

tar 是否只是默默地创建了一个随机垃圾的 tar 文件,并覆盖了我可用的文件?

是的。太好了。我想我还是不用上网吧。幸好文件不是几 GB 的……哦,等等,那是一周前的事了。

说实话,这些神秘的命令行参数和 Linux 程序到底是怎么回事?当对具有适当扩展名的文件进行调用时,它们难道不能自动执行基本操作吗?为什么我需要告诉 tar 如何处理 ARCHIVE?它是否认为我可能想再次将其存档?

我觉得我终于明白了“焦油坑”是什么意思了。这是文件消亡的地方。

答案4

原来的管道符号是 ^

原来的删除键是#

原来的“kill”键(删除线上的所有内容)是@

如果你曾经登录过较旧的系统并且似乎无法输入评论或电子邮件地址,stty 成为您的朋友。

是一个第 7 版登录会话示例,其中记录日志的人非常慷慨地运行了 stty。此外,正如所提到的这里它说“如何识别传统的 Bourne shell?1 简单检查一个通常未记录但具有特征的特征:您可以使用脱字符 ^(插入符号)代替 |(管道)。”

相关内容