📜  Bash 脚本 - 别名的工作

📅  最后修改于: 2022-05-13 01:57:27.723000             🧑  作者: Mango

Bash 脚本 - 别名的工作

BASH Alias是使用某些映射运行命令的快捷方式。这是一种为重复性和多项任务创建一些快捷命令的方法。我们在 BASH 环境中的指定文件中创建别名。我们还可以合并 BASH 函数、变量等,以使 Alias 更具编程性和灵活性。

什么是 BASH 别名?

BASH 别名是具有命令或函数集的命令映射,可用作 BASH 环境命令行中的快捷方式。 Bash Alias 允许将多个功能聚合到一个命令中,并且它还避免了重复或大型命令到一个简单的快捷命令中。 BASH Alias 是快捷命令的映射,其命令集存储在具有特定语法的名为.bash_profile.bashrc的文件中。别名也可以与 BASH 语法和语义相结合,使快捷方式更加可定制和灵活。

别名的工作

alias 关键字将命令替换为可能是命令集或函数集的字符串。别名在~/.bashrc~/.bash_profile中定义。这些文件在 shell 环境中加载,因此别名中列出的命令也已加载并准备好执行。因此,别名适用于 BASH 配置。

加载别名或命令映射后,用户可以交互并输入命令。如果执行别名中的命令,则 BASH 解释器将命令别名替换为命令字符串,从而实现别名或命令的所需功能。

我们将在下一节中了解如何创建 BASH 别名。

如何创建别名?

要创建别名,我们需要创建一个名为bash_profilebashrc 的文件。该文件需要位于根目录中,并且应该隐藏以避免对其内容的错误处理。在这个文件中,我们创建了一个别名,它基本上是一个命令映射和作为快捷方式执行的命令/函数集。

创建 .bashrc 或 .bash_profile

首先,您可以找到根目录,打开终端或命令提示符并输入以下命令:

对于 Linux/macOS:

cd ~

对于 Windows:

如果使用 git bash 终端或 Powershell

cd ~

您现在应该进入环境的所谓根目录。

移动到根目录后,您需要在根目录本身中创建一个名为.bashrc.bash_profile的文件。您可以创建文件,但是您可以根据自己的喜好创建文件,但要为大多数操作系统保持标准方式,以下命令将起作用:

echo >> .bash_profile

或者

echo >> .bashrc

如果文件不存在,这将创建一个文件,但如果该文件已创建并具有内容,则不会执行任何操作。

如果您不喜欢移动到根目录然后创建并写入文件,您可以使用“ ~/ ”访问根目录。您可以在操作系统中的任何其他目录或路径中创建文件。以下命令在不更改当前目录的情况下创建文件。

echo >> ~/.bash_profile

创建函数

我们可以在我们的 bashrc 或其他 bash 脚本中创建一个独立的函数,并通过调用它们进一步将它们与快捷命令链接起来。要在 BASH 中创建函数,我们可以使用如下简单语法:

function x()
{
   # statements
}

或者

x()
{
    # statements
}

然后,我们可以在此函数块中编写命令的逻辑。对于这个例子,我们可以创建一个函数来创建一个目录并 cd 或移动到该目录。因此,我们可以像这样在函数块内编写代码:

function x()
{
   mkdir $1
   cd $1
}

$1 是一个位置参数,用于从命令行获取参数并将其解析为函数或脚本中的变量。您可以在本文中了解它们。简而言之,它们使脚本或别名更加动态,并允许用户直接从命令行更轻松地输入。

创建 BASH 别名

现在,我们已经创建了 bashrc 或 bash_profile,我们可以从创建别名开始。要创建别名,我们将需要三样东西,alias 关键字表示下面的句子将创建别名,用于运行最后一段的命令或速记词,即要执行的命令。别名中的命令需要在 Shell/BASH 环境中可执行。

别名的语法如下:

alias command="sets of commands/functions"

如前所述,我们需要三个信息,即别名关键字、速记命令以及要执行的命令或函数集。

如何设置 Bash 别名?

我们可以使用 $? 来访问最后一个命令的值作为返回类型。函数调用后的函数外。但是要执行命令,我们可以简单地调用函数

让我们举个例子来创建一个别名,假设我们要创建一个目录并进入它,我们将不得不运行两个命令,即mkdircd 。这可以是创建别名的场景。我们可以将命令链接到函数或别名命令中,以避免键入所有命令。

别名如下所示:

alias md='x(){ mkdir "$1"; cd "$1"; }; x'

alias 关键字指示 BASH 解释器将 map 变量作为命令加载。该命令名为“ md ”,映射到函数“x” 。函数x使用传递给 md 命令的名称创建目录并将目录更改为该目录。最后定义和调用该函数,以使其简单明了。

另一种实现相同技巧的方法是在其他地方独立创建一个函数并从别名调用。以下别名死了同样的事情,但以不同的方式编写:

alias md='x'
x(){
    mkdir $1
    cd $1
}

这看起来很可读和干净。这也可用于添加 BASH 语法和语义,如循环、条件和其他编程方法,以使别名更加可定制和灵活。

单引号和双引号的区别

别名语句中使用的单引号和双引号具有一定的重要性,需要根据需要使用。我们使用双引号来扩展 BASH 中变量的值,即实际解析变量名称的值。如果我们只使用单引号,则不会显示变量的值,而只会按原样解析变量名。

例如在声明中:

#!/bin/usr/env bash
p=125

echo "The value of variable p is $p"

echo 'The value of variable p is $p'

在这个例子中,变量p的值只有在我们将它包含在双引号内时才会在命令中被扩展或解析。这也适用于在 bashrc 或 bash_profile 文件中使用别名时,我们需要使用双引号来扩展变量的值。

别名的结构

创建别名后,我们可以更深入地了解别名的结构。如前所述,我们在创建别名时分为三个部分:

别名关键字

BASH 中的 alias 关键字将一个字符串替换为另一个字符串。速记命令是要使用的字符串,而不是命令右侧的字符串。因此,别名关键字充当字符串的缩写,该字符串是一组命令或函数。

命令

该命令是将在终端中使用的简写。我们可以使用任何命令或字符串来避免像 cd、mkdir、rmdir、touch、echo 等可能与它们发生冲突并导致不良行为的实际命令。

命令/功能

这些是输入别名中的命令时将执行的命令集。这可以是 BASH 函数、shell 命令或与 Shell 环境兼容的任何其他命令集。