bash脚本中的别名与函数


11

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

显然,由于函数可以接受参数,因此它们的功能要强大得多-因为我主要是在上网本上工作,并且希望节省能源和处理能力,所以我特别想了解更多有关性能差异的信息这两种扩展bash功能的方法是。


1
无需自贬。如果您的问题不想要,它将被否决。如果有人要您澄清您的问题,他会在评论中这样说。禁止人们编辑您的帖子有点没意思。该网站旨在为所有人提供可编辑的所有内容。
k0pernikus 2012年

我并不是要禁止,而是请给我机会澄清他们是否认为有必要。我曾经对一些我不了解的主题提出非常简单的问题,然后有人认为我在问一个更复杂的问题是完全显而易见的,并纠正了我不知道如何问我想要的东西的问题。当然,该平台的一大优势是它可以被同行编辑,但我并不是想破坏它。感谢您的反馈,让我想到了:)
MaxAxeHax 2012年

Answers:


10

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

例如,您经常想直接在命令行中进入桌面,因此您可以执行此操作

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时,它都会将其发送到回收站,而不是将其从磁盘中删除。这满足了我在终端中的笨拙之处,我可能会(有时)不小心删除一个重要文件。

您需要记住的功能是逻辑。通常,您不会使用独立的功能。这将是较大脚本的一部分。想象一下一个脚本,该脚本将获取所有文件并将其重命名为其猪拉丁版本。忽略执行此操作的不同方法。

但是,您可以做的是遍历目录中的每个文件,并将文件路径传递给RenameAsPigLatin函数。RenameAsPigLatin函数可能在其中包含涉及数字的附加逻辑,在该函数中,您应确定不应重命名以数字结尾的文件。

马上您就会看到将其作为功能的好处。该函数可以根据您的奇怪规则来重命名,而脚本的其余部分可以根据需要遍历各种目录。


2
我认为,独立使用函数有很多原因。实际上,我已经定义了许多函数以及别名。例如,我用同名功能替换了cd,因此我可以让它在每个cd之后自动执行ls而不牺牲任何功能。这不能使用别名来完成,因为它需要一点逻辑。
Scott Severance

3

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

一个经典的例子是:

alias ll='ls -l'

别名仅在交互式控制台中起作用,而不能在脚本中使用。

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

与仅由其值替换的别名相反,函数将由bash shell解释。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.