Contents

创建接受参数的Bash别名

1.概述

在使用 Bash 脚本或 Linux 命令时,我们经常会一次又一次地编写相同的命令。很多时候,这些命令很长,需要重复执行——例如,每天登录远程机器,将本地文件复制到远程机器,或者在目录中查找隐藏文件或链接。

我们可以使用alias 命令将冗长单调的 shell 命令替换为另一个更短的名称。在本教程中,我们将解释创建别名的步骤,并学习如何在 Bash shell 中将参数传递给它。

2. 创建 Bash别名

** alias命令有助于创建一个替代名称,我们可以用它来替代复杂的 Linux 命令和脚本**。创建别名的语法很简单:

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

例如,我们可以创建一个别名 ’ l ’ 列出当前文件夹中的所有文件和目录:

alias l="ls -alrt"

3. 创建带参数的别名

有时我们需要创建一个接受参数的别名。由于在 Bash 中创建的alias命令不直接接受参数,因此我们必须创建一个 Bash函数 。Bash函数的语法是:

<function_name> {
<commands>
}

或者

function <function_name> {
<commands>
}

在定义函数时,我们使用*$1、$2等作为变量来标识传递给函数的参数。$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 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

请注意,在上面的示例中,“ l”替代了“ ls -alrt ”。由于我们在别名之后立即传递文件路径,因此在这种情况下我们不需要使用函数

4. 删除别名

我们可以使用unalias 命令从 Bash 会话中删除定义的别名unalias命令的语法非常简单:

unalias <alias_name>

例如,让我们从当前 Bash 会话中删除“ l ”别名:

unalias l

同样,我们将使用unset 命令从当前 Bash 会话中删除定义的 Bash函数。unset命令的语法也很普通:

unset <function_name>

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

unset mkcd

5. 创建永久别名

从命令行创建时,别名仅在当前 Bash 会话中有效。为了使别名在我们所有的 Bash 会话中永久可用,我们需要在~/.bash_profileor~/.bashrc 文件中声明它。

我们将在*~/.bashrc文件中添加别名*:

# Aliases
# alias alias_name="<command to run>"
# Long format list
alias l="ls -alrt"

注意:别名应简短易记。建议我们向它们添加评论以供将来参考。