我以前使用 CShell( csh ),它允许你创建一个带参数的别名。符号是这样的
alias junk="mv \\!* ~/.Trash"
在 Bash 中,这似乎不起作用。鉴于 Bash 有许多有用的功能,我会假设这个功能已经实现,但我想知道如何。
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
和其他文件中定义的 Bash 函数可作为 shell 中的命令使用。因此,例如,您可以像这样调用早期的函数
$ myfunction original.conf my.conf
改进上面的答案,您可以像使用别名一样获得单行语法,这对于 shell 或. bashrc 文件中的 ad-hoc 定义更方便:
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
命令。您不需要为函数设置别名,因为函数已有名称。
我想你想要这样的东西:
function trash() { mv "$@" ~/.Trash; }
而已!您可以使用参数 $ 1,$ 2,$ 3 等,或者只需将它们全部填入 $ @