为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星点点滴滴 2019-06-06 15:39:16
制作一个接受参数的Bash别名?我曾经使用过CShell(CSH),它允许您创建一个接受参数的别名。表示法就像alias junk="mv \\!* ~/.Trash"在巴斯,这似乎行不通。考虑到Bash有许多有用的特性,我假设这个特性已经实现了,但我想知道是如何实现的。
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-06-06
?
动漫人物

TA贡献1815条经验 获得超10个赞

改进上面的答案,您可以得到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; }


查看完整回答
反对 回复 2019-06-06
?
守着一只汪

TA贡献1872条经验 获得超3个赞

这个问题被简单地问错了。您不会创建接受参数的别名,因为alias只是为已经存在的东西添加了第二个名称。OP想要的功能是function命令创建一个新函数。您不需要对函数进行别名,因为该函数已经有了名称。

我想你想要这样的东西:

function trash() { mv "$@" ~/.Trash; }

就这样!您可以使用参数$1、$2、$3等,也可以用$@填充它们。


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 630 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信