暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Unix 使用闲话

安迪的写作间 2020-12-13
1148

写这篇的缘起,跟最近看的一本 CS 领域非常棒的书有关。

Unix 炉边夜话

没错如标题里提的,一本跟 Unix (之后 Unix 和 Linux 我会混着用)相关的书,Harley Hahn's Guide to Unix and Linux.

这本书的中文版译名叫做**《Unix & Linux大学教程》,真是本让我看名字就不想买(看)的书,就比三傻大闹宝莱坞好那么一点点。如果让我来翻译这本书的话,我会翻译成《Harley Hahn 老爷子的 Unix 炉边夜话》**,为什么是这么一个名字?

因为我在阅读整本书过程中,它给我的感觉就是这样。

一个白胡子老爷爷 Harley Hahn,一边摸胡子一边喝口茶,回忆自己经历丰富的一生,他见证了整个 Unix 的发展过程。应你的要求,给你讲 Unix 的故事,两人就在火炉旁一个说一个听,昏暗的火光温暖的室内,老爷子充满磁性的声音,不乏一些俏皮,Unix 从他嘴里出来已不再是一个个冷冰冰的命令,黑漆漆让外人看了就怕的终端框。

而像是一个长长的关于 Unix 的历史和故事。里面有一个个的小故事,某部分是如何发展的,哪位大佬在这里面参与过,我当时在干啥,然后这个奇怪的名字怎么来的,这个梗又是怎么出现的,老爷子还会时不时幽默一下插科打诨,很有意思。唯一的缺点就是,老人不免太唠叨,唠唠叨叨说上一大堆,但即使这样还是会让你感觉很舒服,更像是一种家里老人对你的啰嗦。虽然是本技术书籍,却完全可以当做睡前读物,助眠读物十星推荐!

比如我印象比较深的几个轶事是,vim 奇怪键位设置和最早写 vi 的作者用的终端机器 ADM-3a 的键位设置有关系,还有正则表达式的起源居然还和神经网络挂上钩,less 为什么叫 less.

整本书其实不薄,近一千页(最近大部头读得多),剔除前言附录也得有八百页左右,总之不是一个小任务。因为 Unix 有些基础,所以都在看老爷子讲故事聊八卦,再查漏补缺一下。一点点看,大概也花了一个多月才看完。

真的是一本非常棒的书,推荐给每一个想要入门 Unix 和 Linux 系统的人看,中文版上面也有提《Unix & Linux大学教程》,不知是否还有买,出版时间挺早了。据说翻译也很棒,想啃原版其实也可以,我感觉难度不是很高,也有电子版。

我的 Unix 成长之路

本来这篇就想着写个书籍推荐。

但突然想起自己学 Unix 的经历,不禁有些感慨,真如老爷子在书里说的 “Easy to use,hard to learn.” 也就是好用难学。

我个人感觉,学 Unix 命令行有点像是学一门乐器,里面很多东西是需要你不断使用不断重复来内化的,因为里面有很多不同的想法,是很多人一起弄出来的东西,很多工具的用法也都很不一样,还有很多历史残留物,很多时候你只能靠多用记住。而且还涉及到很多思想方面的东西,Unix 用久了会不由自主习惯用 Unix 的方式去思考,比如分解,找工具,查文档,问人这样的工作流程。

于是会发现,自己以为理所应当的东西,好像不习惯 Unix 的人并不是那样思考。比如前段时间帮人解决毕业设计中一个难题,用命令行弄,对方可能没怎么用过命令行,就发现了这一点,当时就觉得怎么这都不知道呢,但对方让我解释,我也不知道怎么解释为什么这样用,只说你就这样做就可以,就跟乐器一样,你这样这样弹就好了,为什么,我也不知道,摊手。

我最早接触 Unix 是在大概四年前了,本科学的不是计算机,当时编程经验也不多,一直就用 Windows(Mac 买不起)。

后来虽然知道 Linux 这个东西,而且看论坛上大佬写了很长的文章列出用 Linux 好处都有啥。

说比 Windows 这样的图形界面强上一百倍,当时非常神往。

但实际一直没机会用,也用不上,Linux 能打游戏吗,比较鸡肋,所以等于也没啥用。

直到之后留学,硕士一年,瞎选了门 IoT 开发课,要用树莓派做东西,然后就得用 Linux,所以当时熟悉了一点点,但其实当时也没真正学到吧,主要因为我主要负责用 kibana 可视化。所以大多用的还是 ubuntu 的图形界面。

但至少对 Linux 熟悉很多了。

一个大的提升是,在硕士一年暑期,找实习,当时去了东芝的 IoT 研发中心,选的主题好像是“嵌入式 Linux 的开发”。最初报的目的就是想给 Linux 好好学学,希望有助于科研。因为机器人开发一个有名的开源框架 ROS 是在 Linux 系统上,虽然后来做深度学习去了,但也非常有用。

回到正题,那年夏天,我就跑去了川崎(东京附近神奈川县的一个城市),非常热,可能因为离东京近吧(手动狗头)。住在员工宿舍,每天两点一线,公司宿舍跑,专心学习。因为总在宿舍。所以对川崎印象最深的就是那边夏蝉震耳欲聋的鸣声,每天睡不了懒觉,因为窗外蝉一大早就开始轰炸你,每一声就像是一个炮弹落在你耳边,嘣!嘣!嘣!炸得你无比清醒,感觉比妈妈用冷毛巾抹你脸起床还清醒。除了夏蝉,印象中就是对面小学体育馆里传出来的社团晨练声了,感叹小孩精力真好。

又回到正题,总之当时组长交给我的课题就是调查 Linux 内核和 RAS(可靠性,可用性,可服务性)相关的功能,给接口都整理出来。之后,组长就给我丢一边不管我了,除了刚开始欢迎会带我去吃饭喝酒,一脸淫笑告诉我 KTV 有奇怪的服务,还问我中国有没有,我一脸义正言辞地说我们正直的中国人怎么会有这种东西,没有没有,组长你再问我就急了。

反正每天基本上我爱干什么干什么,放羊状态,每天上班还有各种补贴,不就是带薪学习吗,当时想想可开心了。

为了完成目的,认真学习 Linux 相关东西,在看内核代码同时还找了本非常好的入门书,这也是一本我非常非常推荐的 Linux 和 Unix 命令行的入门书,祭出宝典,锵锵

也就是大名鼎鼎的 TLCL,中文《快乐的 Linux 命令行》(一直都想吐槽的名字),中文版这个链接:http://billie66.github.io/TLCL/index.html

如果入门 Linux,只让我推荐一本的话我会推荐这本,两本的话就加上上面推荐那本。

基本上跟着 TLCL 上做一遍就小有所成了。当时信心满满的我,又找来其他书看,《Linux/UNIX系统编程手册》还有《UNIX环境高级编程》,结果被分分钟按在地上摩擦,根本看不下去,用不上。

于是暑假下来,我比较大的成就就是大概玩熟了 Linux,还给 MatLab 搞懂了,交了几个东芝新入社员朋友,还小赚了一笔零花钱。

之后回到学校,有一小段时间是没用 Linux 的,机器人实验室主要还是 Matlab 做仿真。反而是上吴教授的《机器学习》因为要用 Octave,结果写作业的时候用的 Linux,到这时候基本操作都已经没问题了,不足的方面可能是不怎么会用 vim,而且也不会用一些高级功能 pipeline、缩写、bash 脚本自动化。

直到后来去做深度学习和 NLP,做机器翻译,每次实验跑的时间比较长,还得抢 GPU 资源。而当时周末又总想着出去玩。偷懒就有一次导致了生产力的提高,开始照着一些库里的自动处理脚本,来写自己的自动实验,自动数据分析,自动结果记录脚本,一次可以跑很多组参数,而自己就可以在外面随便玩了。回来直接收结果就行。于是这段时间给 bash 脚本和 pipeline 这一套给搞熟了些。

但还是不太喜欢用 vim 编辑,觉得效率太低,Sublime 和 VSCode 不香吗。

这块短板就拖啊拖,中间逼不得用 vim,也就只会上下左右移动,和 i 插入,:wq退出保存。

一直拖啊拖到后来毕业,实习,入职,因为有段时间主要用的开发机不太好同步代码,不得不用 vim,结果用了一两个月后,真香!果然习惯了就还好。

虽然会觉得 VSCode好用,但让我用 vim 也会很乐意,而且效率也不慢。

当然中间除了这两大块,还有个明显的进步是,在文本处理上面用一些命令,比如说 awk,sed,paste等等。这些的提升,而这些真的都是一点点积累的。有的是别人指点这样写,有的是在谷歌的时候看有人这样用,还有自己刻意练习不断用。

这就差不多是我学 Unix 的路程了,也是个长长的过程,总之急不得,花时间时间有意识多练才是王道。


长按关注公众号


文章转载自安迪的写作间,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论