使用 args 别名或拦截复杂的 bash 命令

使用 args 别名或拦截复杂的 bash 命令

如何为带有标志的命令创建 bash 别名?例如,如果我运行ls -l,我希望将其别名为ls -a

这不起作用: alias "ls -l"="ls -a"

另一个例子:如果我输入reboot now,我希望它简单地运行reboot

bash 函数在这里有用吗?


编辑:抱歉这个愚蠢的ls -l例子。这就是我真正想要的:如果你执行了reboot now,我希望它真正执行reboot这就是为什么。

答案1

另一个例子:如果我输入reboot now,我希望它简单地运行reboot

创建一个函数:

reboot() {
  command reboot
}

现在调用该命令reboot将调用该函数,reboot该函数将忽略传递给它的所有参数。

那是:

reboot

reboot now

将执行命令reboot(不带任何参数)。

答案2

你应该只是别名ls

alias ls='ls -a'

之后,如果你ls -l这样做将会导致 ls -la

答案3

这就是我真正想要的:如果你执行了reboot now,我希望它真正执行reboot

找出reboot(例如,via whereis reboot)的绝对路径。确保/usr/local/bin在此之前位于 $PATH 中(它可能已经在)。1 现在创建一个/usr/local/sbin/reboot如下所示的文件:

#!/bin/sh

reboot

它应该由 root 和 拥有chmod 755 /usr/local/bin/reboot。从现在开始,默认

reboot whatever, blah-blah 

只会调用reboot而不带参数。

1. 如果没有,请参阅本次问答

相关内容