如何创建带有参数的Bash别名

338 阅读5分钟

Bash别名据说是Linux系统内使用的一种技术,作为bash命令的简单替代,用新鲜的命令覆盖困难的命令。换句话说,别名是在bash用户中使用的,以获得更容易上手的终端命令来交换困难的命令。我们中的许多bash用户发现有些bash命令很难记住,他们觉得需要更简单的命令。别名基本上就是为这些用户准备的。

今天的文章将讨论创建简单的bash别名的不同方法,包括带参数和不带参数。所以,让我们开始使用 "Ctrl+Alt+T "在Ubuntu 20.04 Linux操作系统中登录后打开shell终端。

制作简单的Bash别名

在日常工作中,我们在Linux系统的外壳中使用了许多bash命令。其中一个是list命令,用来列出主目录下的所有文件和文件夹,如下图。

另一个命令显示了同样的列表,但多了一些关于文件和文件夹的信息,例如权限、创建日期、用户和所属组。

例如,你不记得ls -l这个命令,所以你想用一个别名来做一个简单的命令。因此,我们将使用下面的简单别名命令来创建一个 "ls "别名,以换取 "ls -l"。

当我们使用 "ls "命令时,它将显示 "ls -l "的输出。这意味着终端忘记了 "ls "在做别名之前所显示的内容。

要撤销别名,请尝试下面的查询。

现在,当运行同样的 "ls "查询时,它显示的是做别名之前的原始输出。

带有参数的Bash别名

Bash用户需要了解别名不能接受参数.但是我们可以在使用别名命令时使用函数来获取参数.首先, 我们需要看看我们在bash代码中使用的文件有哪些内容来做一个别名.所以,我们将在别名代码中使用两个文件,例如test.sh和file.sh。我们将在终端中打开 "test.sh "文件,通过 "cat "查询查看其内容,如下所示。你可以看到它包含简单的文本,提供关于用户 "aqsayasin "的信息。使用 "Ctrl+X "退出该文件。


现在让我们用同样的 "cat "指令在shell中打开另一个文件 "file.sh "来查看它的内容,如下所示。你可以从输出结果中看到,该文件已经是空的了,所以我们需要用一些数据来填充它。

让我们创建一个函数的例子,看看bash中的别名是如何用参数来创建的。我们知道,别名从不接受参数,因此,我们将使用函数来完成。我们将在函数中写出接受参数的命令并表现得像一个别名。因此,在终端外壳中,我们创建了一个函数 "func()",并添加了 "移动 "和 "复制 "一个参数的内容到另一个参数的命令。

参数 "1 "代表第一个没有内容的文件,"2 "代表在编写代码时有内容的文件。mv "命令的行为就像一个别名,将 "1美元 "参数文件 "1.txt "参数移动。这意味着将创建具有相同数据的另一个文件。cp "命令的行为就像一个别名,接收第一个参数,例如 "test.sh",并将其内容复制到其他参数,这将是一个空文件 "file.sh"。最后,该函数被关闭。

让我们在shell中测试这个功能参数别名,简单地调用该函数,并传递两个参数作为文件名。所以,我们用 "file.sh "作为参数 "1 "的参数值,用 "test.sh "作为参数 "2 "的参数值。试试下面的查询,使别名在函数 "func "中发挥作用。

$ func file.sh test.sh


由于 "file.sh "已经作为参数值传递给了参数1,根据bash代码,它现在必须包含文件 "test.sh "的数据,根据 "cp "命令,它代表参数2。因此,当我们通过cat查询检查或显示文件 "file.sh "的内容时,它显示该文件已经被填充了最初是文件 "test.sh "的内容的数据。现在,这两个bash文件中都有相同的数据,正如输出所显示的那样。

根据在函数 "func "中使用的 "mv "语句表现得像一个接受参数的别名,现在必须把"1"的值移到"1 "的值移到"1.txt "的参数中。在这个别名命令中,"1美元 "代表 "file.sh","1.txt "代表一个将要创建的新文件,该文件将具有相同的数据和名称,但扩展名与file.sh不同。

因此,当我们检查新创建的文件 "file.sh.txt "时,我们发现它也包含与文件 "file.sh "相同的数据,通过别名查询 "mv"。它只是将file.sh完全移动到file.sh.txt中。为此,我们尝试了下面的 "cat "查询。

在一个函数中创建别名

下面是一个在某个函数中创建别名的简单例子。它的工作原理与上面的简单别名创建相同。所以,我们创建了一个函数 "test()",并创建了6个别名,以换取bash的6个困难命令。在shell中试试这段代码,看看它是如何工作的。

首先,我们列出了主目录中要进一步使用的文件和文件夹。

根据上面在终端执行的函数中创建的别名,这些查询现在必须工作。首先,我们要看看以前的困难查询是如何工作的。我们已经尝试了 "删除 "查询,从上面的列表中删除文件 "one.sh"。它将确认你的行动,询问你是否删除这个文件。点 "y "来删除它。

再次检查列表时,我们发现该文件已被删除。

现在让我们检查别名命令来删除另一个文件。所以,我们已经尝试用别名 "rm "来删除 "file.sh"。经过检查,我们发现这个别名和之前的查询一样。

使用别名 "mv "将文件 "new.sh "移动到 "Documents "文件夹中,查询如下。

当我们导航到 "Documents "文件夹并列出其内容时,我们发现文件 "new.sh "已经通过使用 "mv "别名成功移动到这里。

总结

在本指南中,我们讨论了如何在shell中制作一个简单的别名,以及如何在使用函数时制作一个带有参数的bash别名。我们还讨论了如何在一个函数中使用别名而不使用参数,以及如何揭开这些别名。我们相信这篇文章完全能够在你研究带参数的bash别名时对你有很大的帮助。