UNIX 生产力技巧

引言
Unix?命令行的语言以功能全面而著称,通过使用各种小型工具、实用程序,并在 Shell 中将它们组合在一起执行,您可以指定许多精确的和复杂的任务 。
但是,当在办公环境中使用它们时,同样的这些工具可能成为提高您工作效率的功能强大的助手 。许多 UNIX 独特的技巧可以用于提高工作效率 。
对于使用命令行来改善办公工作效率,本文给出了一些建议和技巧,包括如何查看当前系统习惯、如何计算工作花费的时间、操作日期的秘诀、使用快速而简单的方法对自己发送提醒、对重复性交互任务实现自动化的方法 。
查看日常的习惯
使用 UNIX 命令行提高办公工作效率的第一步是,仔细地研究您当前的日常习惯 。通过通常所使用的工具和应用程序以及访问和修改的文件,可以告诉您究竟是什么样日常工作占用了大量的时间,以及应该避免哪些操作 。
查看所使用的工具
您需要查看经常使用哪些工具和应用程序 。可以轻松地在 Shell 的内置 history 中查明您的日常工作习惯,它将输出在当前的和过去的会话中发送给 Shell 的输入行内容的枚举清单 。有关典型的示例,请参见清单 1 。
清单 1. Shell 的内置 history 的示例输出
$ history
1 who
2 ls
3 cd /usr/local/proj
4 ls
5 cd websphere
6 ls
7 ls -l
$
真实的历史记录通常保存在一个文件中,以便能够提供给将来的会话,例如,Korn Shell 将其命令历史记录保存在用户 home 目录的隐藏文件 .sh_history 中,而 Bash Shell 则使用 .bash_history 。通常在达到一定的长度后,会对这些文件进行覆盖,但是许多 Shell 具有设置最大历史记录长度的变量,Korn 和 Bash Shell 具有 HISTSIZE 和 HISTFILESIZE 变量,您可以在自己的 Shell 启动文件中对它们进行设置 。
通过 sort 来运行 history 非常有用,可以获得最常用的命令的列表 。然后,使用 awk 删除命令名称减号选项和参数,然后将经过排序的列表传递给 uniq 以得到一个枚举列表 。最后,再次调用 sort 以便对列表的第一列按照相反次序进行排序(最大的在前面),这是对其自身进行枚举 。清单 2 显示了实际操作的示例 。
清单 2. 根据使用频率列举 Shell 历史记录中的命令
$ history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -r
 4 ls
 2 cd
 1 who
$
如果历史记录文件比较大,您可以首先通过管道传输到 tail 来运行周期性的检查,例如,要检查最后的 1,000 条命令,可以尝试使用:
$ history|tail -1000|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -r
查看访问或修改的文件
可以使用相同的原则来查看访问和修改过的文件 。要完成这项工作,可以使用 find 实用程序来定位和查看在某一段时间内(今天、昨天或者过去的任何日期或时间段)访问或更改过的所有文件 。
通常,您无法找出到底是谁 对文件进行了最后的访问或修改,因为在 UNIX 中不大容易获得这种信息,但通过将搜索限制为您的 home 目录树中包含的文件,您可以仅查看个人的文件 。您还可以对搜索进行限制,以便仅搜索您正在监视或使用的特定项目目录中的文件 。
find 实用程序有几个标志,可以用来根据时间定位文件,如表 1 中所列举的 。目录不是常规文件,但是在列出目录内容或将其作为当前工作目录时,对其进行了访问,所以需要在搜索中使用否定和 -type 标志排除它们 。
表 1. find 实用程序的一些标志
标志描述-daystart 这个标志表示从某天凌晨开始 。-atime 最后访问该文件的时间,用天数表示 。-ctime 最后更改该文件状态的时间,用天数表示 。-mtime 最后修改该文件的时间,用天数表示 。-amin 最后访问该文件的时间,用分钟数表示 。(并不是在所有的实现中都可用 。)-cmin 最后更改该文件状态的时间,用分钟数表示 。(并不是在所有的实现中都可用 。)-mmin 最后修改该文件的时间,用分钟数表示 。(并不是在所有的实现中都可用 。)-type 这个标志描述了文件的类型,如 d 表示目录 。-user X 文件属于用户 X 。-group X 文件属于组 X 。-newer X 文件比文件 X 更新 。下面介绍了如何列出您的 home 目录树中、在整整一个小时之前经过修改的所有的文件:

推荐阅读