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解释。
函数比别名更强大,它们可用于构建非常复杂的程序。