Shell 内置命令
在 Linux 中,有命令,也有 shell 内置命令。Linux 纯粹主义者不会称它们为命令或 shell 内置命令。
那么,这些 shell 内置命令有什么特别之处?它们与其他 Linux 命令有何不同?您将在本教程中了解它们。
什么是 shell 内置?
当您运行 Linux 命令时,它会通过分叉现有进程从子 shell 中的二进制文件运行。但是,shell 内置命令包含在 shell 本身中。它在同一 shell 中运行,而无需创建新进程。因此,shell 内置命令速度更快。cd、pwd、exit、export、alias 是一些常用的 shell 内置命令。
想知道还有哪些其他的 shell 内置命令、它们为什么存在以及如何使用它们吗?在本教程中,我将回答所有这些问题。
shell 内置命令列表
要列出所有内置 bash 命令,您只需help
在终端中执行以下命令:
help
一长串的命令。不是吗?
现在,让我们首先看看为什么使用它们:
命令 | 描述 |
---|---|
别名 | 用于创建命令的快捷方式或替代名称。 |
背景 | 在后台移动暂停或停止的作业。 |
绑定 | 它用于显示或修改键绑定。 |
休息 | 在循环内使用,终止循环并继续循环外的执行。 |
内置 | 如果您有同名的内置命令和外部命令,则使用builtin ,您可以优先执行内部命令。 |
呼叫者 | 在脚本中用于获取有关特定代码块的更多信息。 |
案件 | 它允许您根据特定的块创建多个条件及其结果。 |
光盘 | 更改目录。 |
命令 | 用于绕过任何具有相同名称的别名或函数来执行外部命令。` |
康普根 | 它将根据当前上下文生成命令选项、文件、目录和其他项目的补全。 |
完全的 | 允许您修改特定命令的命令完成。 |
康普特 | 它允许您修改特定命令的参数完成。 |
继续 | 在循环中使用,跳过剩余迭代的执行并转到给定代码的下一次迭代, |
共生 | 创建一个协同进程来建立脚本和后台进程之间的通信。 |
宣布 | 用于定义变量及其属性。 |
目录 | 它显示您最近执行过的命令列表。 |
否认 | 通过使用它,您可以将当前正在运行的作业与 shell 分离,这样即使在关闭 shell 后也可以继续执行它们。 |
回声 | 用于打印输出。 |
使能够 | 用于启用或禁用内置shell命令和功能。 |
评估 | 它将给定的参数视为命令并以脚本形式执行或直接在终端中执行。 |
执行 | 它用于用新流程替换当前流程。 |
出口 | 用于终止当前 shell 会话或脚本。 |
出口 | 它允许您创建或修改环境变量。 |
错误的 | 用于返回非零退出状态,表示错误条件或失败。 |
足球俱乐部 | 通过使用它,您可以列出、修改和重新执行以前使用的命令。 |
韋克 | 用于将暂停的或后台的进程带到前台。 |
对于 [条件];执行 [执行]; | shell 脚本中使用 for 循环来执行重复任务。 |
函数名称 { 命令 ; } | 用于创建可以在 shell 会话或 shell 脚本中多次使用的函数。 |
获取选项 | 允许您解析脚本内的命令行选项和参数。 |
哈希 | 它帮助 shell 记住可执行文件的位置。 |
帮助 | 提供有关 shell 中内置命令的信息。 |
历史 | 提供先前执行的命令的列表。 |
如果命令;则命令; | 如果条件为真则执行命令的条件语句。 |
工作 | 显示在后台运行的后台作业的状态。 |
杀 | 发送信号给 kill 来终止该进程。 |
让 arg [arg ...] | 使用 let 命令,可以执行算术运算。 |
当地的 | 它允许用户在特定函数内定义局部变量。 |
登出 | 顾名思义,它会将您从当前用户会话中注销。 |
映射文件 | 从输入流或文件读取文本并将其存储在数组中。 |
弹出 | 它用于用当前目录替换目录堆栈中的顶级目录。 |
printf | 用于格式化并打印变量值或文本。 |
推 | 允许您更改目录并将前一个目录存储到目录堆栈,通过该目录您可以以最少的努力轻松地在多个目录之间导航。 |
密码 | 执行时,它显示当前工作目录。 |
读 | 从文件或用户读取输入并将其分配给变量。 |
读取数组 | 用于从输入文件中读取行并将其转换为数组变量。 |
只读 | 用于声明和定义只读变量。 |
返回 | 它用于退出一个函数,并且您也可以选择指定返回值。 |
选择 | 通过使用它,您可以为用户创建一个简单的菜单或交互式选择提示。 |
放 | 允许您修改 shell 设置和参数。 |
转移 | 通过使用它,您可以删除第一个参数,并将其余参数在位置参数列表中降低一级。 |
购物 | 提供各种选项来修改 shell 的行为。 |
来源 | 它用于重新加载配置文件并在当前shell中执行脚本。 |
暂停 | 用于挂起当前shell并将控制权返回给父shell。 |
测试 | 在 shell 脚本中使用,允许您检查条件并执行各种测试。 |
时间 | 用于测量命令或脚本的执行时间。 |
次 | 它用于测量 shell 会话或 shell 脚本的 CPU 使用率。 |
陷阱 | 它允许您在收到定义的信号时执行特定的操作。 |
真的 | 返回成功退出状态。 |
类型 | 告知您命令的类型。 |
排版 | 允许您定义和控制变量的行为。 |
限制 | 通过使用它,您可以管理 shell 会话的资源。 |
umask | 允许您控制授予新创建的文件和目录的权限。 |
匿名 | 用于取消使用别名命令配置的别名。 |
取消设置 | 它用于取消设置先前定义的变量和函数。 |
直到命令;执行命令;完成 | 这是一个循环,将会不断迭代直到满足给定的条件。 |
变量 | 提供一些 shell 变量的名称和描述。 |
等待 | 用于暂停执行,直到所有后台任务完成。 |
当命令时;执行命令;完成 | 这是一个循环,将会不断迭代直到指定的条件为真。 |
没有 shell 内置命令的手册页和二进制文件
常规或应该说外部 Linux 命令附带手册页条目,提供有关如何使用它们的信息。
但是,shell 内置命令没有手册页。如果你尝试使用 man 命令,它会显示如下错误:
Sagar@LHB:~$ man cd
No manual entry for cd
您必须使用上面看到的帮助命令:
help shell_built_in_command_name
它会给你一些关于使用内置命令的提示。
类似地,您不会看到带有 whereis 和which 命令的shell 内置程序的二进制文件。
识别 shell 内置命令
要识别哪个命令是内置的,您可以使用 type 命令,如下所示:
type -t Command
例如,如果我想检查是否cd
是内置命令,我将使用以下命令:
type -t cd
type -a
是否有任何内置命令的重新实现。但是如果该命令不是内置的呢?那么你可以从 type 命令中期待什么输出呢?
嗯,除了上述输出之外,它还可以为您提供其他四种类型的输出:
alias
:如果命令是别名。file
:如果该命令是可执行文件,并且还配置了PATH变量。function
:如果该命令是函数。No output
:如果命令不是上述命令,则它将不会显示任何内容。
更多 Bash 特价商品
Bash 还有一些特殊变量,您可能接下来想了解一下。
希望你喜欢这篇关于 shell 内置函数的文章。如果你有任何问题或建议,请告诉我。