2014-02-12 71 views
2

我正在使用bash shell,并且想要创建一个别名,它将对给定目录执行一些操作。假设我希望别名是“执行”,我希望它是ls和cd。我想“执行”采取一个单一的参数,这是一个目录,然后将ls,然后cd到。多个命令的Unix别名参数

execute temp 

应该是等价的:

ls temp ; cd temp 

所以,我怎么可以创建一个别名执行读取下一个输入执行后,再使用它作为其他两个参数?像这样?

alias execute="directory=VALUE ; ls $directory ; cd $directory" 
+1

你不能给参数(不管你如何试图隐藏它)到一个别名。某些shell的别名允许你在最后附加一些东西,把别名定义为'alias tstR ='doSomething''(注意尾部空格),它将用你在'tstR'之后输入的内容设置cmd行。阅读关于shell函数,它们被设计为处理参数。祝你好运。 – shellter

回答

5

功能更适合这样的任务:

execute() { 
    ls "$1"; cd "$1"; 
} 

execute temp调用它。

+0

+1,我通常把上面的函数放在'.profile'或'.bashrc'中,所以当登录时,我立即使用它。当别人问我为什么没有这个命令时,这就是魔法和秘密。 – BMW

+0

非常感谢:) –