alias和shell function

使用Unix/Linux的朋友大多知道alias(别名)的用法,alias 可以简化我们的命令输入,比如:

alias ll = 'ls -l'
alias la = 'ls -A'

当我们执行了以上的命令后,以后只要在shell中输入ll,shell会自动按照设置执行ls -l命令。

alias(别名)的确简单,好用,效果立现。不过如果我们的要求稍微复杂一点,比如:我们希望创建命令别名可以带可变的命令参数,alias这时候就爱莫能助了,幸好我们有同样简单好用的shell function.

语法:

[ function ] name () { command-list; }

shell function的作用是当在shell中执行name时,command-list所代表的一系列命令将会执行。在上述定义中关键词function可以不用写。

举例:
我有一个叫fancy_writer的很好用编辑工具,但是这个程序名字太长,我希望输入fa就能运行它,当然这样的要求,我们完全可以用alias做到,但是我现在希望fa能接受后面的文件名作为其编辑对象(这对alias也没问题),同时希望程序能在后台执行(这时alias就困难了),而用shell function 就轻松搞定了:

function fa() {
         fancy_writer $1 &;
}

将这段小代码写入.bashrc或.profile,这样我们登录shell时就可以使用fa这个shell function了。

另外,与unalias相似,要暂时取消shell function可以使用

unset name

3 Responses to “alias和shell function”

  1. nybornhawk 说道:

    博主,你好。
    曾在你blog上看过vim发布日志一文,小弟现在用的正是这种方法。但还剩一个小问题久未解决。特来咨询啊。您本文的shell代码部分应该是嵌在类似 .. code-block:: c ,我的问题是我每当我用到code-block时,这块代码里如果有&这个符号,它最终会显示成& 而看您本文的代码,并未出现此问题。我试过手动rst2html.py生成的html是不存在这个问题的。所以问题只可能出在rest.php这个插件或wordpress自身上。不知可否能将您的rest.php及本文的.rst发到我的邮箱nybornhawk@126.com,不胜感激!

  2. nybornhawk 说道:

    晕阿,上文显示有些错误,我的意思是code-block里的&会最终显示成”&”

  3. nybornhawk 说道:

    咦,我的回复中的&后面跟着的井038;怎么没显示出来,是做了什么特殊处理吗,请教给小弟一下

Leave a Response