向非程序员朋友介绍个最近程序员界好玩的东西(以后我的日志都会尽量照顾非程序员朋友)。
是这样子的——先来一点背景介绍,GitHub.com 这个网站,是目前最火的源代码托管网站及程序员社区,用它来托管和发布共享开源软件是免费的。来自世界各地的程序员(或公司)们喜欢在这个网站上发布自己的项目源代码,也可以在这方便地获取、查看和评论别人的源代码。
在每次代码有更新的时候,用户还可以对这次更新的某个文件中所改动的某一行进行评论,也就是说类似某个同学问“这一行改动到底是什么意思啊”另一个热心的同学会向他解释清楚这样子。
但是说实话,我还一直没用、没注意到有谁会用,或者完全没去试过寻找这样对某行代码的评论,直到……这一个文件的出现,才有了可能是 GitHub 史上最强的一个代码评论贴。
关键在于这一行: rm -rf /usr /lib/nvidia-current/xorg/xorg
解释一下,rm 表示 remove,在 Linux 下是删除文件或目录的命令,不能直接用在目录上,加 r 参数可以删除整个目录,而 f 参数代表 force,就是少废话能删的给我全删完。rm 接受的参数是*空格*分隔的目录或文件名。
而大家请注意,看仔细。这一行代码,在 /usr 和 /lib 中间,有一个空格!!这意味着,运行了这行代码,就会删除你的 /usr 目录!!
而 /usr 目录是神马东西呢?可以吃吗?这就得先说说 Linux 下目录的表示和组织方式啦。Linux 下没有 C、D 盘这样的盘符,只有一个根目录,用反斜杠“/”表示。目录与硬盘分区的对应方式是挂载,某个硬盘分区可以挂到某一目录——不过首先得有一个分区挂在根目录上,然后根目录下有文件夹,这些文件夹如果不挂载某分区,文件夹内的文件就保存到挂到根目录的这个分区的相应目录下;如果某文件夹挂载了某分区,原来此文件夹下的文件就看不到了,这个文件夹就显示挂载上的分区里的文件了。
举例来说,访问 /a/b/c/d.txt 这个文件,Linux 操作系统会首先看 /a/b/c/ 有没有挂载某分区,如果是,就在此分区查找 /d.txt 文件;如果没有,那就看 /a/b/ 有么有挂载某分区,如果是,就在此分区查找 /c/d.txt;以此类推,直到查找挂载到根目录的分区的 /a/b/c/d.txt 文件,还找不到就是出现“文件未找到”错误。
这是 Linux 文件系统的表现方式,了解了这个,再来说文件的组织方式。Linux 会把程序分散来放到不同目录,比如说二进制可执行文件放到 /usr/bin,可执行文件需要调用的库文件会放到 /usr/lib 目录,一些其他资源(比如图片之类的)会放到 /usr/share 下,而配置文件放到 /etc 或者 /home/username 即用户文件夹。/home 目录类似 Windows 7 下的 C:\Users 目录,储存用户的个性化配置和用户的文档什么的。
说了那么多,总之就是,/usr 这个目录通常是用来存放系统中所有安装的应用程序的,包括一部分系统工具和几乎所有用户自己安装的程序。所以它的地位相当于 Windows 下的 C:\Windows + C:\Program Files,老实说,删了这两个文件夹,不就差不多相当于删除了 Windows 操作系统吗,相当于格式化掉 C: 盘。rm -rf /usr 这个命令对于 Linux 系统也是一样。懂了吧。这不是坑爹是什么。
接下来再说说什么时候会运行到这行代码吧。这行代码是写到 install.sh 文件里面的。故名思议,这是个安装脚本。所谓脚本的意思,就是说运行此文件,文件里的命令都会按顺序跑一遍,就像于演员把剧本念一遍一样。
于是,可以想象,有那么一个倒霉蛋,原本只是想安装这个软件,运行一遍 install.sh 安装脚本,就把自己系统文件夹给删了……而这一切的罪魁祸首,都是 /usr 和 /lib 中间的那一个空格,如果没这个空格,这个安装脚本就会按其原本的意图删除 rm -rf /usr/lib/nvidia-current/xorg/xorg 这个文件,加了空格就变成删除 /usr 和 /lib/nvidia-current/xorg/xorg 了。而且,这明明是用户自己进行的操作啊(自己要运行这个安装脚本嘛)。而且这样的安装脚本通常是配合 sudo 来运行的,因为一般来说安装程序需要系统管理员的权限(删除 /usr 也同样需要这个权限),sudo 就是一个让系统管理员灵魂附体的东西,在命令前加 sudo 就相当于是以系统管理员身份运行此命令。
好啦,现在各路防火墙、反病毒、系统保护软件纷纷露出哀怨的眼神:系统管理员要删,我也拦不住啊。
╮(╯▽╰)╭
![]() |
为神马?为神马?为神马?你为神马要这样做啊?
|
我们需要你的 /usr 目录的增熵来拯救宇宙。
|
好多人用了 great, success, epic, fail 之类的词来表示作者的错误太伟大了,惊天地泣鬼神级别的,简直了。还有用户表示,我本来也不喜欢那个文件夹,也有人说,感谢作者让我清出好多原本吃紧的硬盘空间来……
还有后面一些图也挺有意思。反正背景已经介绍了,大家自己看呗。
PS 精选几条自己最喜欢的: 对更正前的评论:
I didn't like that folder anyway.
nice! I didn't like the operating system anyways!
This just removed a ton of sh*t from my computer. Thanks! :D
对更正后的评论:
Come on guys, THIS line is the most important!
2PS 上文中说是 Linux 操作系统,其实对于 Unix 系统来说本文知识也同样适用。
3PS 那个评论页涌现了大量瓷器国潜水员兼程序员……