搜索的艺术:find & grep
我们在前面的博客里反复强调了搜索的重要性,搜索优于导航是提升操作效率的一个关键问题。这里就介绍几个Linux下的常用搜索命令。回忆一下本机搜索的需求大致可以分为两大类:
•按文件名搜索文件
•按文件内容中的关键字搜索文件
在开始解说如何满足这些需求以前,我其实更想强调读者将搜索这个冲动根植在心里,没有这个冲动或者观念你就不会产生想要搜索的需求,大体上你也可以使用鼠标去到处翻文件夹完成等价的工作,区别在于你是想带着目的,付出一些记忆关键字的成本,用最快的速度找到想要的东西,还是漫无目的的浏览,心急火燎的到处乱窜。这里再提一个搜索的小技巧,可以让你直观的感受搜索的强大:在终端界面里有时不可避免的需要重复输入一串很长的命令,这个可能是使用终端的用户相对于GUI最大的抱怨,“反复输入这么长的命令很烦人”,“我怎么可能记得住那么长的命令”,这个时候,你可以只记住这串命令中的某几个关键字,然后在终端界面上按Ctrl-r进入搜索模式,键入你刚才记住关键字譬如gvim:
(reverse-i-search)`gvim': gvim 2013-01-07-Ubuntu-efficient-software.markdown
这样系统会自动提示你之前输入过的和gvim相关的命令,如果不是你想要的,继续按Ctrl-r提示下一条命令,直至找到你想要的命令,按回车即运行,如果最终都没有找到按Ctrl-c退出搜索模式即可。这个技巧虽然很小但是非常实用,解决了我自己刚入门时一个很大的困惑:)。
find: 文件名搜索
find 命令可以按许多搜索条件来进行搜索文件,最常用的就是按文件名搜索:
$ find -name readme
./Dropbox/backup/eclipse/readme
./Dropbox/backup/windows/EnsoLauncher/readme
./TestProject/web-workspace/TestStruts/readme
上述命令指在当前目录下查找文件名是readme的文件,如果文件名过长你无法完全记住,可以选加通配符减小记忆负担例如:
$ find -name read*
./Dropbox/backup/eclipse/readme
./Dropbox/backup/windows/EnsoLauncher/readme
./TestProject/web-workspace/TestStruts/readme
更多用法参考 man:
$ man find
grep: 文件内容搜索
grep 是很多有经验的开发者最常用的一个命令,如果你不知道文件在哪里,但是你知道文件中的几个关键字,你就可以把它找出来:
$ grep 搜索的艺术 * -r
source/_posts/2013-01-07-ubuntu-efficient-software.markdown:## 搜索的艺术:find & grep
这个是我在本机搜索这篇博客当前小标题的结果, * 是指搜索当前目录的所有文件, -r 是指递归当前目录进行搜索。更多用法参考 man:
$ man grep
砍掉使用鼠标最后的借口:keynav
使用一个Linux系统虽然在80%的状况下你可以没有障碍地使用键盘完成所有操控,但是仍然可能会有一些只能使用鼠标的状况出现,例如:某个GUI软件没有提供相应的快捷键,或者即使提供了,你还不清楚。这个时候可以调出 keynav 这个软件,砍掉使用鼠标的最后一个借口。keynav 被用来替代鼠标点击屏幕上的任意一个像素。它的设计思想是这样的:运用键盘快捷键,它可以显式的将整个屏幕分割成四个区域,然后输入hjkl代表左下上右(很耳熟?)像两分法那样,把整个屏幕分割成左一半或者下一半或者上一半或者右一半,在当前的半个屏幕内重复输入hjkl持续进行屏幕的两分操作,这样显式高亮的区域会越来越小(多一次分割面积缩小一半),一直小这个区域的中心点和你想点击的目标区域重合,这个过程就是模拟鼠标从当前位置移动到目标位置的过程,此时再次键入快捷键完成模拟鼠标点击的动作即可,这样理论上,在没有更好选择的情况下,你就可以使用键盘模拟鼠标完成任意点击工作,进而避免双手在主键盘区和鼠标之间的来回切换,节省宝贵的操作时间。那么这样做效率如何?根据计算,在一块分辨率为 1920x1200 的屏幕上(适用屏幕尺寸在24英寸以上),点击屏幕上任意一个像素的最坏情况是击键21次做两分法分割屏幕的动作,这个结果有点糟糕,但是实际上,不是每个人都有那么大的屏幕(适合文本工作的显示器大小是22英寸,可以得到最佳字点距,此时分辨率大小为 1680x1050),再者,就算是鼠标,也没有认定需要精确到一个像素的大小才可以点击,我们点击的对象往往是一个像素区域,例如:一个工具栏,一个按钮,一个文本框,这样以点击按钮为例:按钮占据60x25个像素区域,在1920x1200的屏幕上最差需要击键11次完成定位。这个只是最差情况,以笔者22英寸显示器的使用经验来说,4到5次击键即可完成定位,效率不会比鼠标更高,但是完成定位点击的耗时绝对不会比省下切换鼠标的时间更多。至此,我们完成了使用 keynav 替代鼠标的理论验证和实践证明,读者不妨可以大胆拔掉鼠标。