bash脚本中的别名与function

我想知道bash shell中别名和函数之间的区别 – 以及何时使用哪一个。

很明显,由于function可以参数,它们更强大 – 因为我主要使用上网本并希望节省能源和处理能力,我特别想知道更多关于性能差异的内容这两种扩展bashfunction的方法是。

别名视为昵称。 你可能有一个命令,你执行很多,但想缩短。

例如,您经常希望在命令行中直接访问桌面,因此您可以执行此操作

alias desktop="cd ~/Desktop" 

从那时起你只需输入

 desktop 

在终端,它将为您执行cd ~/Desktop

函数包含逻辑。 在函数中,您可以调用多个不同的程序。 这是一个简单的回声函数

 function e { echo $1 echo $1 $1 echo $1 $1 $1 } 

虽然它在调用它时可能看起来类似于别名

 e Hello 

你的e()可能会发生很多不同的事情。 以上是一个简单的例子。

别名应保留用于简单用例。 个人示例 – 我已经替换了我的rm命令

 alias rm='trash-put' 

每当我做一个rm,它会将它发送到垃圾箱而不是从磁盘上删除它。 这适合我在终端的笨拙,我可能(有时)意外删除重要文件。

你需要记住的function是逻辑。 通常,您不会使用独立function。 它将成为更大脚本的一部分。 想象一个脚本,它会获取所有文件并将它们重命名为pig latin版本。 忽略有不同的方法。

但是你可以做的是循环遍历目录中的每个文件并将文件路径传递给RenameAsPigLatin函数。 RenameAsPigLatin函数可能在涉及数字的过程中有额外的逻辑,您可以决定不重命名以数字结尾的文件。

您可以立即看到将其作为一项function的好处。 该函数可以专注于您的奇怪规则重命名,而脚本的其余部分可以根据需要遍历各种目录。

别名是控制台中使用的简单快捷方式,可避免键入长命令或始终重复相同的选项。

一个经典的例子是:

 alias ll='ls -l' 

别名仅在交互式控制台中起作用,它们不适用于脚本。

函数可以在脚本或控制台中使用,但更常用于脚本中。

与别名相反,只是由它们的值替换,一个函数将由bash shell解释。

函数比别名更强大,它们可用于构建非常复杂的程序。