Linux 如果bash别名不能接受参数,为什么这些别名可以工作?

Linux 如果bash别名不能接受参数,为什么这些别名可以工作?,linux,bash,shell,alias,Linux,Bash,Shell,Alias,作为一个天真的noob,我创建了几个bash别名,用于接受参数,它们完全按照预期工作。然而,我试图再制作一些这样的别名,但这些别名并没有达到预期的效果 这个问题把我带到这里,在这里我了解到bash别名不接受参数。相反,您必须创建一个函数。例如,请参见或 那么,假设“bash别名不接受参数”的共识是正确的,那么为什么所有这些都有效呢 alias pacss='pacman -Ss ' alias pacs='sudo pacman -S ' alias yausnc='yaourt -S --no

作为一个天真的noob,我创建了几个bash别名,用于接受参数,它们完全按照预期工作。然而,我试图再制作一些这样的别名,但这些别名并没有达到预期的效果

这个问题把我带到这里,在这里我了解到bash别名不接受参数。相反,您必须创建一个函数。例如,请参见或

那么,假设“bash别名不接受参数”的共识是正确的,那么为什么所有这些都有效呢

alias pacss='pacman -Ss '
alias pacs='sudo pacman -S '
alias yausnc='yaourt -S --noconfirm '
当我说这些“工作”时,我的意思是,例如,键入“pacs软件包”会提示我输入密码,提示确认,然后检索和安装软件包

那么,这些别名为什么有效呢?他们接受的条款是否在技术上不被视为“论点”?这是Arch(或我正在使用的Manjaro)的一种特质吗?时空连续体中的空洞

如有任何澄清,将不胜感激

编辑:谢谢你的回答,解释这些不需要争论。我不太明白我的第一个示例与以下尝试使用的别名有什么不同,后者不起作用:

alias lping='ping 192.168.1.'
这会失败,因为ping执行时没有附加I类型的数字。我的目的是能够输入例如lping 123并让bash执行“ping 192.168.1.123”,但它会显示“未知主机192.168.1”。

不,它们“接受”的术语不称为“参数”。
Bash别名只是文本替换。
也就是说,当你写作的时候

pacs
pacs package
bash将其替换为

sudo pacman -S 
sudo pacman -S package
当你写作的时候

pacs
pacs package
bash将其替换为

sudo pacman -S 
sudo pacman -S package
换句话说,参数不会传递给别名–别名后的字符只是附加到别名扩展到的任何内容。

否,它们“接受”的术语不称为“参数”。
Bash别名只是文本替换。
也就是说,当你写作的时候

pacs
pacs package
bash将其替换为

sudo pacman -S 
sudo pacman -S package
当你写作的时候

pacs
pacs package
bash将其替换为

sudo pacman -S 
sudo pacman -S package

换句话说,参数不会传递给别名–别名后的字符只是附加到别名扩展到的任何位置。

您的别名执行
pacman
yaourt
。双方都接受自己的论点。任何给定的输入都将被
pacman
yaourt
读取,就像它们在命令行上执行一样。别名不需要参数,但程序(以任何名称或别名调用)可以接受参数。很高兴看到您正在使用Arch!这些是
操作
选项
。。。目标是
参数
。您的别名执行
pacman
yaourt
。双方都接受自己的论点。任何给定的输入都将被
pacman
yaourt
读取,就像它们在命令行上执行一样。别名不需要参数,但程序(以任何名称或别名调用)可以接受参数。很高兴看到您正在使用Arch!这些是
操作
选项
。。。目标是
参数
。谢谢您的回答。在别名后添加字符是我希望用这些字符(有效)完成的,也可以用以下字符(无效):别名lping='ping 192.168.1'。这总是失败,因为它尝试ping 192.168.1。不在别名后追加我在cli上键入的数字。这与“吃豆人”的别名有什么不同?@IDONTCWUTIDIDITHERE外壳将别名标记替换为其定义,仅此而已。。。特别是,shell不会将扩展与命令行上的后续令牌连接起来,因此当您写入
lping 123
时,执行的命令是
ping 192.168.1。123
(请注意
1.
123
之间的空格)。@idontcwutid在
lping
和数字之间保留空格。(顺便说一句,pacman别名中的尾随空格是不必要的。)谢谢你的回答。在别名后添加字符是我希望用这些字符(有效)完成的,也可以用以下字符(无效):别名lping='ping 192.168.1'。这总是失败,因为它尝试ping 192.168.1。不在别名后追加我在cli上键入的数字。这与“吃豆人”的别名有什么不同?@IDONTCWUTIDIDITHERE外壳将别名标记替换为其定义,仅此而已。。。特别是,shell不会将扩展与命令行上的后续令牌连接起来,因此当您写入
lping 123
时,执行的命令是
ping 192.168.1。123
(请注意
1.
123
之间的空格)。@idontcwutid在
lping
和数字之间保留空格。(顺便说一下,pacman别名中的尾随空格是不必要的。)