电脑技术学习

对话 UNIX:第 2 部分: 做得多不如做得巧

dn001

  要在 Z Shell 中启用命令历史,可以输入:

$ HISTSIZE=500
$ SAVEHIST=500

  这里的命令指定了 Shell 和持久化历史文件应该保留最后的 500 条命令。(在缺省情况下,Z Shell 仅保存最后的 30 条命令。)有关如何捕获和保存命令历史的信息,请查看您的 Shell 文档。

  在 Shell 中进行了一段时间的工作之后,您只需输入 history 就可以查看命令历史:

$ history
...
781 /bin/ls -d */
782 /bin/ls -F *(/)
783 /bin/ls -d -F *(/)
784 /bin/ls -d -F */
785 /bin/ls -d */

  您所运行的每个命令都会分配到一个顺序的数值标识符。您可以使用这个标识符,如 782,来引用完整的命令和命令中的某些部分。要再次运行一个命令,可以输入 !(感叹号)加上命令对应的数值:

$ !785
ChangeLog-branches/ doc/ po/ src/ util/ Windows/

  如果您希望从一个历史命令中获得特定的参数,可以使用 !(感叹号)来引用这个命令,并提供 :N,其中 0 表示命令名,1 表示第 1 个参数,依此类推。例如,要提取历史日志中命令 782 的第二个参数,可以输入清单 4 中所示的代码。

  清单 4. 提取命令 782 的第二个参数

$ echo !782:2 
echo *(/)
ChangeLog-branches doc po src util windows
$ ls AUTHORS COPYING INSTALL MacHINES
AUTHORS  COPYING  INSTALL  MACHINES
$ echo !!:3
echo INSTALL
$ history -2
788 ls AUTHORS COPYING INSTALL MACHINES
789 echo INSTALL
$ echo !788^
echo AUTHORS
AUTHORS
$ echo !788$
echo MACHINES
MACHINES

标签: