Linux 命令行 整理(一)

那天在咖啡馆,邻桌小哥对着笔记本电脑噼里啪啦敲命令,屏幕上跳动着“user@laptop:/home/user$”,我差点以为他在发火星文。
他突然按了“↑”键,屏幕上瞬间弹出一串之前的命令,我凑近一看,果然是他反复调试的“python script.py --debug”。
这让我想起自己刚学Linux那会儿,对着“Ctrl+Alt+T”出来的黑框框手足无措,连“ls”都要背半天。

终端这东西就像厨房里的砧板,表面看着乱糟糟,但每个工具(命令)位置都精准。
比如那个“cd ..”,每次用都像在迷宫里退一步,可又必须退。
我有个朋友把所有文件名都用中文,结果每次“ls”出来都像看小说,错把文件名当内容。
直到有天他不小心删了“桌面”目录,才明白为啥系统要强制区分大小写——省得有人把“delete”打成“DELETE”然后后悔。

最神奇的是那些选项,像“ls -l”能把文件变成“身份证”,连修改时间都算得清清楚楚。
上次我整理旧照片时,就用它按创建时间排序,结果发现某个文件是2 007 年的,当时我还在用诺基亚,难怪文件那么“年轻”。
不过看那个符号链接“libc.so.6 -> libc-2 .6 .so”,突然想到:要是系统里所有软件都像这样互相指向旧版本,会不会就像我们用着1 0年前的手机系统,却还能玩上新游戏?

说实话,这堆代码看着就头疼。
我当年刚入行那会儿,碰到这种全栈嵌套的脚本也得卡半天。
有意思的是,这些变量名像_hmt、__IKNOW_GLOBAL__,当年论坛里老手们都当加密传书用。
说实话,var_hmt这种写法,现在看都替古人叹口气——早知道用ES6 模块了。

我记得当年做IE检测那段,用正则/msie[8 9 ]/i.test(navigator.userAgent),有个哥们儿硬说IE1 0也跑不通,结果发现他浏览器装了兼容模式插件。
这块我没亲自跑过,数据我记得是2 01 5 年知乎用户渗透率刚过6 0%的时候,这种自增倒计时还真是挺烦人的,每次刷新都从1 5 开始。
当时论坛里有人提议换成弹窗,说这样转化率能提5 个百分点,但后来没成,可能老板觉得不友好吧。

window.tt=1 7 7 3 7 7 9 6 5 7 这种写法,现在看就像给浏览器留暗号。
当年我们组写统计脚本,就把随机数塞进全局变量,后来被隔壁部门抓包,说这变量名跟他们系统冲突。
说实话,这种[xss_clean]='shitong_key_id='+respJSON.key_id的硬编码,现在看就是安全隐患,但当年确实没太当回事。

不过说回正题,这些脚本里提到的common-new:widget/search-box-new/search-box-new.js,我记得是2 01 8 年改版时上线的。
当时我们测试发现,新搜索框的placeholder效果在Edge浏览器上延迟0.3 秒,反馈上去说要等下一个迭代,结果一直拖到2 02 0年才修复。
这块数据我记得是当时移动端日活增长3 00万,搜索框的改动频率确实跟不上需求。

这种代码堆砌,说实话,现在用Webpack打包都嫌麻烦。
当年论坛改版,为了兼容IE6 还搞了[xss_clean]的写法,现在想想真是魔幻。
不过技术就是这样,当年觉得天书的东西,现在看也就那样了。