作为一个天真的菜鸟,我创建了几个用于接受参数的bash别名,它们完全按预期工作。然而,我试图制作更多这样的别名,但这些不会按预期工作。
这个问题导致我在这里,我了解到bash别名不接受参数。相反,您必须创建一个函数。例如,请参阅here或here。
所以,假设" bash别名不接受参数"共识是正确的,为什么所有这些都有效?
alias pacss='pacman -Ss '
alias pacs='sudo pacman -S '
alias yausnc='yaourt -S --noconfirm '
当我说这些"工作"我的意思是,例如,打字' pacs package'导致提示我输入密码,提示确认,然后检索并安装包。
那么,为什么这些别名有效呢?他们接受的术语是否在技术上不被认为是参数'?这是Arch(或Manjaro,我正在使用)的特质吗?时空连续体中的一个洞?
任何澄清都应该受到赞赏。
编辑:感谢您解答这些问题的答案并不是要求争论。我不太明白我的第一个示例与以下尝试的别名有何不同,后者不起作用:
alias lping='ping 192.168.1.'
此操作失败,因为ping执行时没有附加数字I类型。我的意图是能够输入例如lping 123并让bash执行" ping 192.168.1.123"但相反它表示"未知主机192.168.1。"
答案 0 :(得分:5)
不,他们接受的条款"没有被称为"论证"。
Bash别名只是文本替换
也就是说,当你写
pacs
bash用
替换它sudo pacman -S
当你写
pacs package
bash用
替换它sudo pacman -S package
换句话说,参数不会传递给别名 - 别名之后的字符只会附加到别名扩展到的地方。