Bash 如何使用args创建shell别名?

Bash 如何使用args创建shell别名?,bash,shell,sh,zsh,Bash,Shell,Sh,Zsh,我经常使用这个命令: ack searchexpre -l --print0 | xargs -0 -n 1 sed -i -e sedexpression 我想创建一个别名,如: searchandreplace searchexpre sedexpression 我如何做到这一点?别名的经验法则是,如果必须询问,应该使用函数: searchandreplace() { ack "$1" -l --print0 | xargs -0 -n 1 sed -i -e "$2" }

我经常使用这个命令:

ack searchexpre -l --print0 | xargs -0 -n 1 sed -i -e sedexpression
我想创建一个别名,如:

searchandreplace searchexpre  sedexpression

我如何做到这一点?

别名的经验法则是,如果必须询问,应该使用函数:

searchandreplace() {
    ack "$1" -l --print0 | xargs -0 -n 1 sed -i -e "$2"
}

您现在可以调用searchandreplace searchexpre sedexpression

使用别名的经验法则是,如果必须询问,您应该使用函数:

searchandreplace() {
    ack "$1" -l --print0 | xargs -0 -n 1 sed -i -e "$2"
}

您现在可以调用searchandreplace searchexpre sedexpression

顺便说一句-请标记bash、zsh或sh,但不能同时标记其中的两个或三个。它们是不同的shell,彼此不兼容,除了bash几乎是POSIX sh的超集,但由于其不兼容的echo实现,在这种特殊情况下,只有一个答案适用于所有shell,1这并不总是正确的,2,多余的标记意味着有人需要在多个shell中测试每个答案来评估答案的正确性。顺便说一句-请标记bash、zsh或sh,但不要同时标记其中的两个或三个。它们是不同的shell,彼此不兼容,除了bash几乎是POSIX sh的超集,但由于其不兼容的echo实现,在这种特殊情况下,只有一个答案适用于所有shell,1这并不总是正确的,2,多余的标记意味着有人需要在多个shell中测试每个答案来评估答案的正确性。有没有办法给参数命名?与doint searchandreplacearg1、arg2{…}一样,sh和bash不支持命名参数。您可以将$1和$2分配给具有您想要的任何名称的变量,但有没有给参数命名的方法?与doint searchandreplacearg1、arg2{…}一样,sh和bash不支持命名参数。您可以将$1和$2分配给具有任意名称的变量