山穷水复

自从重启blog大计,家里的电脑就不够用了。

主力电脑是一台11款13寸Macbook Air,主要是老婆在用,自己回家玩玩手机够了。另外一台10年陈的DELL台式机,里面装了两块硬盘,WinXP和Ubuntu双启动。不知为何,中文输入法在Ubuntu里有问题,选字窗口总是在屏幕外面,偶尔出现在屏幕里面,翻页还老是有问题。于是想着年底买个chromebook,反正就是blog嘛,足够了。

今天突然想到,可以试试无线键盘+iPad 2,还真行,成功配对,但是默认中文输入法太不方便了,使用左右方向键选字。尝试装搜狗和百度输入法,皆失败,一个要求iOS 8,另一个要求iOS 7。

没法子,要不就用Nexus 4凑合着?估计输入速度也快不到哪去。

对了,前两周不是刚刚升级了Ubuntu到14.04嘛,再去试试输入法。选字窗口的问题解决了,这样就方便多了。翻页仍然有问题,第一次翻页选字窗口不会刷新,再次翻页倒是刷新了,但是显示的是第二页的字,选出来却是第三页的。必须翻回来一页,才能看到第二页,选到也是第二页。麻烦了一点,但是省钱了,值!

话说回来了,公司发的笔记本电脑也可以用的嘛!看来买chromebook是彻底没有借口了……

IO重定向高级用法

如何比较两个程序的输出,但不使用临时文件?

diff <(/usr/bin/gcc --help) <(/usr/local/bin/gcc --help)

避免使用临时文件有两个好处

  • 无需给文件命名。程序员最喜欢的变量名是什么?是i!文件名呢?我喜欢aaaaa
  • 无需清理

下面是个更复杂的例子(这是我第一次用paste)

三个文件,A.txtB.txtC.txt分别保存了三本书的信息,我们希望提取数据到电子表格做分析。三个文件的内容如下:

$ cat A.txt
Chapters: 13
Pages: 400

$ cat B.txt
Chapters: 9
Pages: 700

$ cat C.txt
Chapters: 27
Pages: 1400

使用如下命令,即可得到一个csv输出,导入到电子表格。

$ paste -d, <(ls *.txt | sed -e 's/.txt//') \
  <(grep -h Chapters *.txt | sed -r 's/^.*: ([0-9]+)$/\1/') \
  <(grep -h Pages *.txt | sed -r 's/^.*: ([0-9]+)$/\1/')
A,13,400
B,9,700
C,27,1400