- 论坛徽章:
- 0
|
Date: Wed, 10 Jan 90 \r\nX-Virus: 6\r\nFrom: djones@megatest.uucp (Dave Jones) \r\nSubject: rm * \r\nNewsgroups: alt.folklore.computers \r\n\r\n是否有人曾想执行以下命令: \r\n% rm *.o \r\n结果却打成了: \r\n% rm *>o \r\n现在你得到了一个空文件o,以及大量的空间来存放它! \r\n\r\n\r\n事实上,你可能连o也得不到,因为shell的文档并没有说o是在*被扩展前还是被扩展后\r\n被建立的。\r\n\r\n上回书说到如何用rm获得一个空文件和很大的磁盘空间,下面是另一种用法: \r\n\r\n\r\nDate: Wed, 10 Jan 90 \r\nX-Virus: 6\r\nFrom: ram@attcan.uucp \r\nSubject: Re: rm * \r\nNewsgroups: alt.folklore.computers \r\n\r\n我也被rm搞过。有一次我想删除一些/usr/foo/下的东西,我在/usr/foo下敲了以下命令\r\n: \r\n% rm –r ./etc \r\n% rm –r ./adm \r\n当我要删除./bin目录时,我忘敲了那个点。我的系统似乎不太喜欢这个。 \r\n\r\n\r\n当受了这一致命一击后,UNIX就彻底完蛋了。聪明的系统会给用户一个恢复的机会(或\r\n至少提醒用户这一操作会导致系统崩溃)。 \r\n\r\nUNIX迷认为偶尔的文件误删除是正常的。比如,可以参考以下下面这个comp.unix.quest\r\nions上的FAQ: \r\n\r\n\r\n6) 如何反删除一个文件? \r\n\r\n也许有一天,你不小心执行了一下这个命令: \r\n% rm * .foo \r\n然后发现你把“*”删掉了。你应该把这当作人生的一课。 \r\n当然称职的系统管理员应该定时备份系统。所以你最好问问他们手中是不是有你的文件\r\n备份。 \r\n\r\n\r\n“人生的一课”?没有任何一个其他厂商用这样的态度对待一个有缺陷的产品。“大人\r\n,我知道您的油箱炸了,但这是人生的一课。”“陪审团的先生女士们,我们将证明电\r\n锯保险开关的失效不过是给用户上的人生的一课。”不错。 \r\n\r\n改变rm的行为也不是个办法 \r\n\r\n被rm咬了几次后,往往会想到用”rm -i”替换rm,或整个替换掉rm,把所有被删除的文\r\n件放到~/.deleted目录中。这些小技巧让用户有了错误的安全感。 \r\n\r\n\r\nDate: Mon,16 Apr 90 18:46:33 199 \r\nX-Virus: 6\r\nFrom: Phil Agre <agre@gargoyle.uchicago.edu> \r\nTo: UNIX-HATERS \r\nSubject: deletion \r\n\r\n在我们的系统上,”rm”并不真正删除文件,而是给文件换了名,这样”undelete”(不\r\n是unrm)这样的工具就能恢复被删的文件。 \r\n\r\n这个功能让我不再对删除文件多加小心,反正删掉了也能找回来。可是,我错了。Emacs\r\n中的删除并不支持这个功能,Dired命令也是如此。这当然是因为文件恢复并不是操作系\r\n统的一个功能。 \r\n\r\n所以,现在我脑子里有两个概念,一个是”deleting”一个文件,一个是”rm’ing”一\r\n个文件。当我的手要我的脑子删除一个文件时,我总要把这两个概念区分一遍。 \r\n\r\n\r\n一些UNIX专家由此得出了荒谬的结论,他们认为最好别把rm搞得更友好。他们争辩说,\r\n让UNIX更友好的努力往往适得其反。不幸的是,他们是对的。 \r\n\r\n\r\nDate: Thu, 11 Jan 90 17:17 CST \r\nX-Virus: 6\r\nFrom: merlyn@iwarp.intel.com (Randal L. Schwartz) \r\nSubject: Don’t Overload commands! (was Re: rm *) \r\nNewsgroups: alt.folklore.computers \r\n\r\n请千万别让人用“安全”命令去替换标准命令。 \r\n(1) 许多shell程序会对多嘴的rm感到惊讶,而且也不会想到删除了的文件仍然占有磁\r\n盘空间。 \r\n(2) 并不是所有删除操作都是安全的,有户会因此产生一切都能恢复的错觉。 \r\n(3) 那些不标准的命令对系统管理员来说尤其可恨。 \r\n如果你想有个有确认功能的”rm”,用下面的命令: \r\n% alias del rm -i \r\n千万别替换rm! \r\n\r\n\r\n最近,comp.unix.questions上有过一次对系统管理员的调查,让他们说出最恐怖的系统\r\n管理故事。72小时内,就有了300多条回应。许多和我们上面描述的文件删除有关。可笑\r\n的是,这些可是UNIX高手。然而正是他们在对“UNIX对用户不友好”这类指责进行着辩\r\n护。 \r\n\r\n对用户不友好?UNIX对系统管理员又友好过么?请看 \r\n\r\n\r\nDate: Wed, 14 Sep 88 01:39 EDT \r\nX-Virus: 6\r\nFrom: Matthew P Wiener <weemba@garnet.berkeley.edu> \r\nTo: RISKS-LIST@kl.sri.com \r\nSubject: “Single Keystroke” \r\n\r\n在UNIX上,即使是有经验的用户也会误用rm。我从来没有误删除过文件,可是有一天,\r\n我用!r重复执行一个历史命令,我惊讶地发现被运行的是”rm –r *”。 \r\n\r\n为什么不能有个没有history功能的shell? \r\n\r\n我还听到过一个用户试图删除一个名叫”*”的文件,好在他没有权限。 \r\n\r\n\r\n这个用户还想修改shell来避免对*进行展开。不幸的是,这个补救如同是在渗水的墙上\r\n再刷一层漆,治标不治本。 \r\n\r\n在线帮助 \r\n\r\n用户读打印文档的次数比他们参加选举投票的次数还要少。只有触手可及的在线文档才\r\n是有用的。下面我们看看UNIX的man是如何让最需要它的新用户失望的。 \r\n\r\n不是每个命令都是平等的,有些是外部命令,有些是内部命令。有些有man page,有些\r\n没有。UNIX要求你能区分这些命令。比如,wc, cp和ls是外部命令,它们都有man page\r\n,而fg, jobs, set和alias(这些长文件名是从哪里来的?)是内部命令,它们没有man\r\npage。 \r\n\r\nUNIX告诉新手用”man command”命令获得帮助,他们可不知道并不是所有命令都是如此\r\n。另外,如果他们的shell设置得有些不标准,他们就只能请教高手来获得帮助了。 \r\n\r\n错误信息和错误检查?没门! \r\n\r\n新手很容易犯错误,比如用错命令,或用错选项。系统应该能识别这些错误,并且反馈\r\n给用户。不幸的是,UNIX程序从来不麻烦自己。相反,UNIX往往把各种错误混在一起,\r\n直到产生致命的结果。 \r\n\r\n上面一节我们说明了rm如何容易造成误删除。但你可能不知道不用rm也能很容易地误删\r\n除文件。 \r\n\r\n想删除你的文件么?试试编译器 \r\n\r\n一些cc版本经常根本不考虑用户的可能输入错误,而删除一些源代码文件。一些本科生\r\n常常着了道。 \r\n\r\n\r\nDate: Thu, 26 Nov 1992 16:01:55 GMT \r\nX-Virus: 6\r\nFrom: tk@dcs.ed.ac.uk (Tommy Kelly) \r\nSubject: HELP! \r\nNewsgroups: cs.questions \r\nOrganization: Lab for the Foundations of Computer Science, Edinburgh UK \r\n\r\n我刚才想这么编译程序: \r\n% cc –o doit doit.c \r\n不小心敲成了: \r\n% cc –o doit.c doit \r\n不用说我的doit.c被冲掉了。有没有办法能恢复我的程序?(我干了整整一个上午) \r\n\r\n\r\n\r\n其他一些程序也有同样的行为: \r\n\r\n\r\nDate: Thu, 1 July 1993 09:10:50 - 0700 \r\nX-Virus: 6\r\nFrom: Daniel Weise <Daniel@dolores.stanford.edu> \r\nTo: UNIX-HATERS \r\nSubject: tarred and feathered \r\n\r\n经过几次努力,我总算从欧洲的一个脆弱ftp站点上下载了了一个3.2M的文件。该untar\r\n它了。我敲了一下命令: \r\n% tar –cf thesis.tar \r\n…没有回应。 \r\n\r\n老天! \r\n\r\n是不是该用x选项而不是c? \r\n是的。 \r\n\r\ntar是不是给出了错误信息说没有指定输入文件? \r\n没有。 \r\n\r\ntar是否感觉到有什么不对劲? \r\n没有。 \r\n\r\ntar是不是真的什么也没有tar? \r\n是的。 \r\n\r\ntar是否把thesis.tar用垃圾覆盖了? \r\n当然,这就是UNIX。 \r\n\r\n我是不是需要再花 30分钟从欧洲下载这个文件? \r\n当然,这就是UNIX。 \r\n\r\n我敢肯定有不少人遇到过这一不幸,有那么多的解决办法,比如:错误信息,文件版本\r\n化,确认用户是否想覆盖一个已有文件,等等等等。tar似乎在有意给用户找麻烦。 \r\n\r\n\r\n对于经常用tar备份的系统管理员来说,这个bug更是危险。不少系统管理员都曾经在备\r\n份脚本中错误地使用过“tar xf…”。在需要恢复备份的时候,才发现原来什么也没做\r\n。 \r\n\r\n欲知是否还有其他这样的恐怖命令,请听下回分解。 \r\n\r\n\r\n上回书说到cc、tar等命令是如何帮助你删除重要文件的。UNIX的强大当然不局限于此。\r\n\r\n\r\n因为没有错误检查,在众多“UNIX 强大编程工具”的支持下,用户有各种选择来删除他\r\n们的重要文件。 \r\n\r\n\r\nDate: Sun, 4 Oct 1992 0:21:49 PDT \r\nX-Virus: 6\r\nFrom: Pavel Curtis <pavel@parc.xerox.com> \r\nTo: UNIX-HATERS \r\nSubject: So many bastards to choose from… \r\n\r\n我有一个总在运行的程序foo,用来提供网络服务,并且每隔24小时检查系统内部状态。\r\n\r\n\r\n一天,我cd到foo所在的目录,因为这不是开发目录,我想看看foo的版本是多少。代码\r\n是由RCS来维护的,所以我自然而然地使用了以下命令: \r\n\r\n% ident foo \r\n\r\n先别管RCS的种种劣迹,也别管ident如何原始疯狂。我这次的麻烦是,我的手指自行其\r\n是地选择了更像一个词的indent而不是ident: \r\n\r\n% indent foo \r\n\r\nindent是UNIX的一个愚蠢的C代码风格转换工具。那个写indent的混蛋是否判断了一下输\r\n入文件真的为C程序么 (天哪,至少可以看看文件的后缀是否为.c吧)?我想你知道答案\r\n。而且,这个SB(Said Bastard)认为如果你只给了一个参数,那么你就是想要进行在线\r\n风格转换。不过别着急,这个SB 考虑到了可能带来的麻烦,他保存了一个备份foo.BAK\r\n。然而他是否只是简单地把foo换了个名字呢?没有,他选择了拷贝(毫无疑问,那个写i\r\nndent的程序员在准备备份的时候已经打开了foo,而且rename系统调用是后来才有的)。\r\n现在,你可能知道发生了些什么了… \r\n\r\n我那正在运行中的foo在准备页面扇出的时候,发现原来的可执行文件已经不在了,这可\r\n不是什么好事,于是我的foo崩溃了,我丢掉了20小时的系统状态信息。 \r\n\r\n自然那些设计(咳嗽)UNIX的混蛋们对复杂的文件版本化功能不感兴趣,而这一功能就\r\n能救我的命。当然,那些混蛋也从未想到过对准备进行页面扇出的文件加锁,是不是? \r\n\r\n有那么多混蛋可供选择,为什么不把他们都宰了? \r\n\r\nPavel \r\n\r\n想象一种散发氯气的油漆,按照说明,用在户外是不成问题的,但如果用它刷你卧室的\r\n墙壁,你的脑袋就要大了。这样的油漆能在市场上存活多久呢?当然不会超过20年。 \r\n\r\n错误信息笑话 \r\n\r\n当你看到饭馆跑堂的把一盘菜撒在顾客脑袋上时,你会笑么?UNIX迷会的。但那些无助\r\n的用户对着错误信息百思不得其解的时候,他们是最先发出笑声的。 \r\n\r\n有人整理了一些UNIX最为可笑的错误信息,把他发布在Usenet上。他们使用的是C \r\nshell. \r\n\r\n\r\n% rm meese-ethics \r\nrm: messe-ethics nonexistent \r\n\r\n% ar m God \r\nar: God does not exist \r\n\r\n% “How would you rate Dan Quayle’s incompetence? \r\nUnmatched “. \r\n\r\n% ^How did the sex change^ operation go? \r\nModifier failed. \r\n\r\n% If I had a ( for every $ the Congress spent, what would I have? \r\nToo many (‘s \r\n\r\n% make love \r\nMake: Don’t know how to make love. Stop. \r\n\r\n% sleep with me \r\nbad character \r\n\r\n% got a light? \r\nNo match \r\n\r\n% man: why did you get a divorce? \r\nman: Too many arguments. \r\n\r\n% ^What is saccharine? \r\nBad substitute. \r\n\r\n% %blow \r\n%blow: No such job. \r\n\r\n\r\n下面的这些幽默作品来自Bourne Shell: \r\n\r\n\r\n$ PATH=pretending! /usr/ucb/which sense \r\nno sense in pretending \r\n\r\n$ drink <bottle; opener \r\nbottle: cannot open \r\nopener: not found \r\n\r\n$ mkdir matter; cat >matter \r\nmatter: cannot create |
|