我做了一个关于 bash 和终端的短期课程,课程中列出的最佳实践之一是为每个要创建的函数创建一个别名。例如,如果我有一个函数:
function e() { echo "$*"; }
Run Code Online (Sandbox Code Playgroud)
我还应该创建一个别名:
alias e='e'
Run Code Online (Sandbox Code Playgroud)
你认为它有道理吗?如果是,理由是什么?我想我可以获取函数并使用它们而无需别名,所以这看起来有点像不必要的工作。
sed
还是awk
明白的。别名可以通过附加\
. 这对系统管理员很有用。如果您不希望您的用户运行某些命令,则函数将优先于 . 例子:
$ ls
serg says this command is a no-no
$ \ls
serg says this command is a no-no
Run Code Online (Sandbox Code Playgroud)
请注意,用户仍然可以/bin/ls
在那里正常运行,因此这不是一个很好的安全措施。我会说更好的用途是作为某些命令的包装器,您可以在其中添加标题或删除一些信息。
There is no mechanism for using arguments in the replacement text.If arguments are needed, a shell function should be used
. 因此,虽然你可以做一些简单的技巧——比如alias e="echo"; e Hello
——当你想要广泛处理命令行参数时,你会需要一个函数。根据我的个人经验,我发现自己使用的函数远远多于别名。它们就像脚本,只是不需要创建外部文件——它们都可以存在于我的~/.bashrc
. 引用和引用变量不再是一个问题。
Run Code Online (Sandbox Code Playgroud)function e() { echo "$*"; }
我还应该创建一个别名:
Run Code Online (Sandbox Code Playgroud)alias e='e'
照原样,这很愚蠢。定义一个函数的别名并赋予它相同的名称是没有意义的。
我认为他们的意思是: