完全用命令行工作-3: 常用的命令行工具

Sep 16, 2008

Comments

(这篇文章是给想学习 Linux/UNIX 但是不知道前方有什么东西要学以及用了Linux 一段时间后想要快速提高生产率的人看的)

Linux 本身只是一个内核, 所谓的内核, 就是你看不见摸不着的东西. 平时打交道的, 都是应用软件和一些常用的命令. 很多人说学习Linux, 实际上学习的是这些常用命令和软件的用法. 这些知识, 其实不光是Linux 上通用, 在苹果, Solaris, BSD 等系统上都是通用的.

同时, 只有学会了这些应用软件, 才能随心所欲的驾驭计算机. 否则, Linux 系统的魔力就体现不出来. 有一种观点说: 反正是完成工作, Windows 高效就用 Windows. 而实际上, 如果对 Linux 上常用应用软件稍做一些探索, 就可以发现, 大部分日常工作都是用 Linux 系统上的软件高效, 因为他们从一开始就比 Windows 设计优良. (当然, 我依旧承认在多媒体方面 Windows 上的软件如 Photoshop 等专业软件的确比 Linux 上的对应软件要强大. 但是这个强大是 Adobe 的软件, 不是微软的操作系统 ).

下文就是介绍 Linux 上高效工作的一些常用软件.

GNU coreutils: 很多人学 Linux, 其实就是学这里面的命令. 比如 cat, ls, head, kill,  这些都是一个基本系统必备的工具集合. 学会了这个里面的命令, 基本上任何 *nix 系统能搞掂. 比如你以后用苹果Mac 也好, unix 服务器也罢, SUN 的Solaris 也行, 都是一样的用法. 而且这里面的工具的确很强大, 比如以前我说的求集合的交集和差集, 就是这里面的小工具拼一下就出来了.

GNU findutils: 这个工具包能够帮助你在 Linux 系统上找文件, 或者对满足一定条件的文件做一定的操作. 其中的 find 和 xargs, 可以变化出无数组合, 让对文件的批量处理变得异常简单. 比如说, 把当前目录及其子目录下面所有的早于2002年的照片文件都删除这样一个操作, 在 Linux 下面就是一行命令, 而在 Windows 底下就要求助于专门的照片管理软件了.

cron: 假如你想每天定时让你的计算机做一件事情(比如, 控制电饭锅做饭), 或者每个周日的晚上帮你把文件清理清理, 或者每天早晨给你抓取各大网站的新闻存成摘要投递到你的桌面上, 你肯定需要 cron 这样一个强大的东西. 他的使用出乎想象的简单, 就在一个指定的文件里面写上什么时间做什么就行了, 比设置 Made In China 的闹钟还简单. 这个定时做事情带来的效率提醒是意想不到的.

screen: 如果你登录到一个机器工作, 退出的时候还想保持命令行继续存在, 下次登录还能继续工作, 或者你想和另一个人同时在一个命令行界面里操作, 或者你想只登录一次, 却拥有多个可用的终端窗口用来工作, 那么恭喜你, screen 是你想要的. screen 可以帮助你模拟出多个输入, 并且方面的切换, 还能把终端挂起来, 下次连上去继续工作, 这个对于在远程服务器上工作的人是杀手工具.

expect: 如果你非常讨厌每次登录telnet 的时候都要输入一次用户名密码, 如果你每次用某些软件的时候都要千篇一律的输入很多东西; 如果你想挂机刷机赚经验, 如果你想测试你的程序是不是正常工作, 那么, expect 是一定要使用的. expect 本来是用来做程序测试的, 看程序是不是有预想的输出. 有创意的玩家把他用去自动上论坛挂机或者自动登录FTP了. 如果想要自动化一些在命令行下交互性质的事情, expect 是很好的选择. 而且, 学习一下, 估计也就10分钟.

wget/curl: 支持多线程通配符递归, 断点续传等一切迅雷有的功能的下载器, 而且没有烦人的小广告. 如果要常常下载东西, 这个比迅雷好玩多了.

make: 以上说的都是单个工具. 而这个make 就是把工具组合起来的. 比如说, 写一个报告可能涉及画插图, 写文字, 生成报表, 做排版. 这些任务之间有依赖关系, 比如报表依赖于数据, 插图依赖于一个脚本, 排版依赖于一个格式规定. 数据更新了, 报表就要更新. 所有的这些任务和任务的依赖关系, 都可以写一个简单的makefile, 这样 make 就可以托管了. 假如数据更新了, 生成报表的时候只要重做报表, 插图就不需要重做. make 能自动分析这些依赖关系, 使得只执行必要的任务, 极大的减少了人工管理的负担. 事实上, 我的论文和家庭作业报告基本都是用 make 管理的.

convert/display: 这是使用 Linux 做日常工作的人必然要碰到的两个程序. 简单的说, 这是两个无所不能的程序. 其中 convert 能把一切能显示的图像格式转化成另一个格式. 比如png 和 pdf 之间的转化, 就是一句话. 而display 则是显示一切能现实的. 这两个, 还有其他的一些程序,  都属于ImageMagik 这个包. 用多了, 就会感叹, 其实把图片加加对比改改大小或者旋转旋转这些事情, 就是一行命令, 完全不需要开一个窗口点鼠标. ImageMagik 的设计也充分体现了 Facet 的设计模式, 接口非常简单, 自然, 常常和图片打交道的人熟悉使用以后, 效率能成倍提高.

另外, 学会正则表达式和一种脚本语言是必须的步骤. 其实这些都不是想象的那么难, 只不过是换一种眼光看问题罢了.

总的来说, 就一点: 在使用计算机做一件事情前, 先想想, 我是不是聪明到是世界上第一个遇到这个问题的人. 如果不是, 就动脑筋想想这个事情是不是可以分成几件小的步骤, 这些小的步骤是不是有现成的工具了. 一般情况下 99% 的都有前人的软件. 如果实在没有, 自己就开始写一个. 通常来说, Linux 比 Windows 效率高的所在, 在于工具的高效配合, 而不是直接找到一个包打四方的巨无霸的工具.

(本文覆盖肯定不全, 欢迎留言补充)


染发

Sep 15, 2008

上次我去理发, 理发师说: 小伙子, 你有白头发, 看来你很有智慧. 我听了特高兴, 心想这人和人说话就不一样啊, 在国内的理发师就来一句: 要不要染发啊? 搞的我和中央常委一样, 为了搞的精神焕发伟光正去染发, 这事我才不干呢. 不过心里倒是有了个计较: 下次把头发染个其他颜色看看.

上周六我去陪女友购物, 结果买洗发水的时候就走到染发剂的架子前面. 我仔细一看, 乖乖, 真是DIY到家的配置, 一个小盒子里面梳子手套染发剂护法剂啥都有, 而且只要8块钱, 一洗就能染. 我想, 得, 我还从来没染过头发呢, 干脆我买个好玩的颜色回家尝试一下. 想不到女朋友是行家, 立即喝止我不专业的选择. 在她的指点下, 我才知道原来我们东方人的黑头发是没法直接染滴, 要用漂白的药剂先处理头发. 这些专业的东西我就一点也不懂鸟. 一问之下才知道, 原来她远在高中就自己染头发了, 多么发达的资本主义啊.

于是, 买了一套染成棕色的, 一共花了我8块大洋. 昨天花了20分钟涂了一下, 洗了一下, 果然淡淡的有棕色的样子了. 就是头上一块涂多了点, 颜色略浅, 其他地方颜色基本上黑杂着一些棕, 看上去比较像新疆人. (女朋友说我像日本人, 因为日本人个个染发). 我觉得挺好玩的, 于是早晨见人打招呼就用 哦哈腰.

邪恶的我, 今天早晨, 顶着棕色的头发, 在资本主义国家装日本人, 哈哈!

Open in new window

(发色示意图)


不买中国制造才是爱国

Sep 14, 2008

中国制造在海外名声很不好. 就和70年代日本制造一样, Made in China 早就成为质量低劣价格便宜的代名词. 这种情况因为毒宠物粮和毒饺子毒奶粉的事情更加变得尖锐起来:原来的中国制造的恶名已经扩散到食品领域,就不得不反思中国制造的问题了.

中国制造的问题,与其说是经济不发达,不如说是人祸。总的来说有以下几个

  1. 监管不严

这次事件,质检总局和卫生部以及三鹿自己都收到了投诉。消费者永远是最聪明的,可是没有一个政府部门在发现问题后整改。到了火烧眉毛才互相推诿。三鹿说上报了,政府说尽力救人了。大家都没责任了,怪牛自己吃了有化学药品的草好了。

  1. 钱权交易,利益交换

中国中央电视台,新华社都曾经为三鹿背书。地方政府为了税收,也盖着三鹿。当一个产家通过许多关系使自己变成一地乃至国家的龙头企业后,就摇头一变成了民族企业,仿佛一揭开盖子,就是反华,就是卖国。利益链条不打开,这样的事情还会层出不穷。

  1. 为和谐控制言论

据说为了奥运,言论被控制了一个月。现在又有明确言论指导,只许宣传国家正面,不许追根问底。没有外国人的压力时候,处理问题藏着盖着。如鸵鸟一样。其实毒饺子毒宠物粮之后,西方媒体把中国政府骂得狗屎一般,国内没有一家媒体敢报道? 不揭开伤疤, 如何能根治?

要想根治这个问题,只有从体制入手. 大家都知道答案,我就不废话了. 当前我们可做的,就是不要买中国制造,这样,中国制造就必须重建高的质量,就像当年海尔砸冰箱一样; 这样, 短期内让厂家自省, 长期内能让政府严格监管。如果持续购买中国制造, 中国制造就会继续毒害中国国民.

海外华人, 如果你爱国内的朋友亲属, 就从今天开始不要买中国制造, 这样, 中国制造才会有一个新的未来.

附:  中共中央电视台宣传中国制造和三鹿婴儿配方奶粉的视频. 这样的电视台, 比CNN无耻一百万倍.

http://v.youku.com/v_show/id_XNDI3ODE3NzI=.html

 


已经没啥好说的了

Sep 12, 2008

三鹿这个事情, 作为一个有良心的人没法不说话. 我也是吃婴儿食品长大的, 我小时候也有很多病, 父母带着我各大医院跑. 一个婴儿有病, 整个家庭就消耗空了, 以前的事情立即历历在目. 我看着那些可怜的婴儿, 这么小就躺在医院里接受现实的痛苦, 真正的是感同身受. 

有两个独立的证据: 

A. 国家质检总局隐藏了6月份就出现的指明三鹿奶粉的质量问题的投诉

http://www.bullog.cn/blogs/xingshi/archives/176815.aspx

有照片截图为证.

B. 为了奥运这条消息被封杀了, 用的是顺水推舟和谐言论的国家机器. 依然有照片截图为证. 

 http://www.cnbeta.com/articles/64585.htm

其他没照片没截图的证据还有很多, 我依然持保留的相信的态度. 但这两个证据, 伪造的可能性也太小了. 

下文是当年, 阜阳奶粉事件之后, 我父亲看到小百合上某些所谓的精英学生责怪农村人没文化贪便宜才造成问题而写的诗. 而历史, 总是这么相似且操蛋. 

—–

爸爸告诉你一件事

  ——阜阳问题奶粉,震惊全国,人们议论纷纷。
  有几位上学多年的学生认为是农民贪小便宜,是活该。
  我心里难过不能不说几句。  
她可以一个月不用酱油,更不会买肉。
只要你回家,看着你吃肉,还要帮你挑肥拈瘦。
她起早搭晚去做,那工资只有白条,年前拖到年后。
她下定决心,追着工头,不给今天不走!
她听老师说,你精神不足常常头晕。
她只知道你用功过度,伙食不行。
她也知道,你不能输在起跑线上。
她常常自责,对不起孩子啊,帮不上忙。
她不能给你送饭,因为路远,进了城就分不清方向。
她不能给你租房,因为家里有田有羊,还有老人需要赡养。
买包奶粉吧,你吃最方便了!
她没有尝过奶的味道,也没有研究过奶粉的质量。
十几块钱一包啊,哪能有假?
她不知道假货也有精美的包装,因为她太善良!
四月的一天,她听了广播,看了电视,班也没上。 
她用最最恶毒的语言,骂够了小店老板的婆娘。
她骂累了,才泪水盈眶。
你头晕,是那奶粉让你遭殃?
妈妈图方便啊,只算小帐!
我有愧啊,你哪天才能原谅你妈妈?

各位读者, 不需要愤怒, 因为早就愤怒过几百次了;  不需要哀叹, 因为哀叹不能拯救婴儿的生命, 也不能拯救地震的冤魂和每年矿下的几千怨鬼. 当纳税人养成的国家机器这样谋杀婴儿的时候, 已经没啥好说的了.


完全用命令行工作-2: 常用软件

Sep 10, 2008

Comments

上次拔掉你的鼠标发表之后, 好多人来邮件, 询问我用了哪些命令行软件, 我列举一下.

即时通信:

Freetalk: 我用这个上Gtalk. 开源的, 所以可以自己开发插件. 我控制空调的东西, 就是一个插件.

Fama-im: 我偶然用来上MSN. 但是其实我会用窗口下的Pidgin, 只有在我的土电脑上的时候, 我才会偶尔用用这个. 这两个操作都很简单. 然后, 我不用QQ.

邮件:

有人喜欢用 Pine 处理邮件, 我一般用 Mutt. 因为所有的邮件客户端都suck, Mutt sucks less. 发邮件其实底层是sendmail, 不过没人关心这个. mutt 非常好学, 半天上手后, 就会觉得其他的邮件客户端以及 Gmail 真是和蜗牛一样慢. 邮件的搜索也支持的很好. (中文搜索我没尝试过, 因为中文没所谓的正则表达式的概念).

上网:

eLinks: 支持标签, 支持底色和排版. 用来上Google 和 Wikipedia 再好不过了. 看到的纯文字一点干扰都没有. 最好的就是看到网址也不会随便点. 同样也是支持LISP编程的. 所以如果想看到单词查个字典什么的, 自己写个小插件就行了. 如果网页有图, 设置一下 elinks 的设置, 就可以在点击图的时候自动用X的图片查看器打开了. 其他的以贴图为目的的网站如lolcat 我一般都有脚本定时去下下来, 有空批量看. RSS 因为喜欢 share 这个功能, 所以使用了 Google Reader, 好在他完全可以键盘操作, 也算半个 CLI 吧.

日程等:

我使用 remember the milk 的机器人. 然后在Freetalk 里面写一个钩子, 让这个机器人发来的消息触发一个脚本(那个脚本是一堆 beep 语句, 就是让小喇叭发声. 所以可以称得上我的彩铃. 其实你也可以让他调用某个放mp3的放一个mp3, 这个就看你爱好了).

TODO等:

我的TODO 是一个纯文本文件. 写了几个简单的叫做POP 和PUSH 的 Python 脚本用来加入和删除内容, 同时提交到 remember the milk (基于 pyxmpp 协议就两行语句). 我还使用svn把这个文件同步到远程的计算机上. 这样, 不同机器之间版本始终一致, 不存在版本冲突的问题. 我不喜欢用 Google Calendar, 因为他对自然语言的处理还不够好, 而且我还不是日程忙到要专门的日程管理的人, 就在纸质的日历上贴彩条就行了.

自动化任务:

跑程序, 编译论文, 备份文件, 同步文件等批量任务, 我一般都弄一个 makefile, 搞些好玩的 target. 我的查看TODO的脚本就很变态的叫做 make love. 还有一个随机抓一个笑话的脚本, 叫做 make me a sandwich. 总之, 自动化的任务交给make 管理, 手到病除. 当然, make 不能接受参数, 所以有时候得写点辅助脚本.

小事情:

单位转换和计算器我分别用 units 和 bc. 日历用 cal, 字典用 dict. 转换图像格式和大小这些都是用著名的convert. 看图用display 抓屏用import 都是标准的方法. 刻光盘用cdrecord. 唯一玩的游戏是 nethack (http://www.nethack.org/ ) 这样一个最耗脑力的龙与地下城游戏. 这个游戏黑客做了20多年了, 一直都是命令行操作最好玩.  有人关心怎么控制我家的空调和电灯, 其实他们都是使用 X10 协议控制的. 只要有一个和计算机通信的X10 控制设备, 加上 HEYU 这样的开源软件, 就可以完全控制家里面所有的电器了.

对了. 我的编辑器是vim. 很羡慕用Emacs的. 其实编程就是打字和GCC来回倒, 没啥特别的.

以前清华大学的王垠有句名言: 不能用Linux做的事情, 是不需要做的事情. 现在看来, 不能用命令行做的事情, 重要性也不见得多高. 比如校内等SNS, 就不支持 elinks, 所以我也很少上.