创建接受参数的 bash 别名


概述

在使用 Bash 脚本或 Unix/Linux 命令行工具时,我们经常一遍又一遍地编写相同的命令行。通常,这些命令行很长,并且必须重复多次。例如,每天登录远程服务器、将本地文件夹复制到远程服务器或在目录中搜索隐藏文件或目录。

您可以使用 alias 命令创建别名。在本指南中,我将向您展示如何在 Linux 上创建接受参数的别名。如果您想重复运行单个命令而不必每次都键入它,这将非常有用。

创建 Bash 别名

别名帮助我们为复杂的 Linux 命令和 shell 脚本创建替代名称。要创建别名,只需使用以下语法:

alias <alias_name>="<command to run>"

例如,如果我们想列出当前目录中的所有文件和文件夹,我们可以使用名为 l 的别名。

alias l="ls -alrt"

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

创建带参数的别名

有时我们希望创建接受参数的别名。由于 alias 命令不直接接受参数,因此我们必须创建一个 bash 函数。Bash 函数的语法如下:

<function_name> {
   <commands>
}
OR
function <function_name> {
   <commands>
}

我们通过使用 $1、$2...$n 作为变量来定义函数,以识别传递给函数的参数。$0 是一个特殊变量,它标识函数本身的名称。以下是一个名为 mkcd 的函数示例:

~soft $ mkcd() { mkdir -p -- "$1" && cd -P -- "$1"; }
~soft $ pwd
/var/home/user/soft
~soft $ mkcd newdir
~newdir $ pwd
/var/home/user/soft/newdir

注意 - Bash 别名是在 Bash shell 中将一个文本替换为另一个文本的方法。例如,考虑前面描述的别名 l。我们将使用 'l' 来列出文件系统中某个目录中可用的文件。

[~user ]$ l Pictures/
total 308
drwx------. 1 user user 504 May 25 20:33 ..
drwxrwxr-x. 1 user user 42 Jun 4 13:02 old
drwxr-xr-x. 1 user user 312 Jun 4 13:02 new
-rw-r--r--. 1 user user 154716 Jun 4 13:03 a.png
drwxr-xr-x. 1 user user 168 Jun 8 09:43 .
-rw-r--r--. 1 user user 156060 Jun 8 09:43 b.png

如果您想查看当前打开的文件,请使用 ls -alrt 而不是 l。由于我们是在别名之后直接传递文件路径,因此这里不需要任何函数。

删除别名

您可以使用 unset 命令删除 shell 变量的现有定义。alias 命令的语法非常简单:

unalias <alias_name>
For example, if we want to remove the 'l' alias from our current bash session, we could use the following command:
unalias l

我们将使用 unset 命令从当前 Bash 会话(如果有)中删除已定义的 Bash 函数。UNSET 命令的语法也很简单:

unset <function_name>

例如,我们可以通过键入以下内容从当前 Bash 会话中删除 'mkcd' 函数:

unset mkcd

创建永久别名

如果您使用命令行创建别名,它将仅在当前 bash 会话中有效。我们希望使别名在所有 bash 会话中都可用,因此我们将将其添加到 ~/.bash_profile 或 ~/.bashrc 中。

我们将在 ~/.bashrc 配置文件中添加该命令的别名:

# Aliases
# alias alias_name="<command to run>"

# Long format list
alias l="ls -alrt"

保持别名简短易记!我们建议为每个别名添加注释,以便以后更容易参考。

结论

我们了解了 alias(或简称“别名”)命令,包括为什么以及何时使用它们。我们已经看到了在 Bash Shell 中定义别名的语法,并确定了一些我们可能希望使用 bash 函数来定义它们的情况。我们讨论了如何永久创建新的别名以及如何从当前 bash 会话中删除它。

更新于: 2022-12-23

720 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告