制作一个接受参数的Bash别名?

制作一个接受参数的Bash别名?

我曾经使用过CShell(CSH),它允许您创建一个接受参数的别名。表示法就像

alias junk="mv \\!* ~/.Trash"

在巴斯,这似乎行不通。考虑到Bash有许多有用的特性,我假设这个特性已经实现了,但我想知道是如何实现的。


繁星点点滴滴
浏览 634回答 3
3回答

陪伴而非守候

Bash别名不直接接受参数。您必须创建一个函数。alias不接受参数,但可以像别名一样调用函数。例如:myfunction() {     #do things with parameters like $1 such as     mv "$1" "$1.bak"     cp "$2" "$1"}myfunction old.conf new.conf #calls `myfunction`顺便说一句,在.bashrc其他文件可以作为shell中的命令使用。例如,您可以像下面这样调用前面的函数$ myfunction original.conf my.conf

动漫人物

改进上面的答案,您可以得到1行语法,就像别名一样,这对于shell或.bashrc文件中的即席定义来说更方便:bash$ myfunction() { mv "$1" "$1.bak" && cp -i "$2" "$1"; }bash$ myfunction original.conf my.conf别忘了右括号关闭前的分号。同样,对于实际问题:csh% alias junk="mv \\!* ~/.Trash"bash$ junk() { mv "$@" ~/.Trash/; }或:bash$ junk() { for item in "$@" ; do echo "Trashing: $item" ; mv "$item" ~/.Trash/; done; }

守着一只汪

这个问题被简单地问错了。您不会创建接受参数的别名,因为alias只是为已经存在的东西添加了第二个名称。OP想要的功能是function命令创建一个新函数。您不需要对函数进行别名,因为该函数已经有了名称。我想你想要这样的东西:function trash() { mv "$@" ~/.Trash; }就这样!您可以使用参数$1、$2、$3等,也可以用$@填充它们。
打开App,查看更多内容
随时随地看视频慕课网APP