这个例子并不仅仅是列一个目录那么简单,事实上他提供了一个更加强大的工作方式 —— 曾经只能用来阅读的命令输出现在也可以被用来构造新的命令了。让我们再来看一个新的例子,在这个例子中我们将把这种能力与 Bash 的历史命令引用的能力结合起来
2 : 2044 : 15:16:17 : /usr/share/emacs/23.1 dove@bash-4.1$ ls -1 etc leim lisp cd ../site-lisp && !! 2 : 2045 : 15:16:49 : /usr/share/emacs/23.1 dove@bash-4.1$ cd ../site-lisp && !! cd ../site-lisp && ls -1 auctex auctex.el autoconf autoconf-mode.el autotest-mode.el bashdb.el bashdb.elc bbdb |
如果这时候我需要列出 auctex.el 文件的内容,我只需要在在各文件名前面输入 head,然后回车就行了
2 : 2045 : 15:16:49 : /usr/share/emacs/23.1 dove@bash-4.1$ cd ../site-lisp && !! cd ../site-lisp && ls -1 auctex head auctex.el autoconf autoconf-mode.el autotest-mode.el bashdb.el bashdb.elc bbdb 2 : 2046 : 15:17:16 : /usr/share/emacs/site-lisp dove@bash-4.1$ head auctex.el ;;; auctex.el ;; ;; This can be used for starting up AUCTeX. The following somewhat ;; strange trick causes tex-site.el to be loaded in a way that can be ;; safely undone using (unload-feature 'tex-site). ;; (autoload 'TeX-load-hack (expand-file-name "tex-site.el" (file-name-directory load-file-name))) (TeX-load-hack) 2 : 2047 : 15:23:53 : /usr/share/emacs/site-lisp dove@bash-4.1$ |
这看起来已经不太像是在运行 Shell 了,倒象是在与某人合作编写一篇巨大的文章了,而 Shell 就是你的合作者。如果你真这么想的话,那就非常好了。至少你已经从枯燥乏味的日常工作当中找到些许的乐趣了。
小技巧
如果你登录在一台远程机器上工作,cat 一个文件后,需要把这个文件的内容保存到本地来,那么完全不需要启动一个 FTP session 去下载这个文件。你只需要选中缓冲区里面的文件内容,按下 Meta-x 组合键,输入 write-region 命令就可以把选中的内容保存在本地文件当中。