Bash教程

Bash 哈希命令

Bash 哈希命令

在类 UNIX 操作系统上,哈希 是 bash 的内置命令shell,用于列出最近执行的命令的哈希表。它用于在 bash 路径哈希中查看、重置或手动更改。它保留最近执行的程序的位置,并在我们想要查看的时候显示它们。它提供了每个命令名称的完整路径名。
换句话说,当任何命令在没有命名其路径的情况下执行时,shell 开始在路径变量中列出的目录中搜索该命令。当 Bash 收到该命令时,它会将位置保存在哈希表中,以便它可以记住该命令的位置。之后,Bash 开始检查表以查找命令的位置,而不是再次查找命令。它使命令运行得更快。但是,如果命令在将其位置记录在表中后移动,shell 将无法找到该命令。在这种情况下,对路径中的目录执行完整搜索以获取命令数据。
内置的'hash'命令负责维护哈希表。在没有任何开关的情况下,hash 列出了之前使用的命令、它们的位置以及它们在会话期间执行的次数。

语法

hash [-l] [-r] [-p pathname] [-d] [-t] [command_name . . .]
以上语法用于确定和记住每个 command_name 的完整路径名。如果没有参数,则显示有关以前使用的命令及其位置的信息。

选项

-d 忘记 command_name 的记忆位置。
-l 显示可以再次用作另一个程序输入的信息。
-p 使用 pathname 作为 command_name 的完整路径。
-r 忘记所有记住的位置。
-t 打印每个 command_name 的记忆位置。如果在那里给出了多个 command_names,则在每个位置前面加上相应的 command_name
command_name 在路径环境变量中搜索指定的每个 command_name,如果找到,则将其添加到记住的命令列表中。

退出状态

哈希命令返回'0'表示成功。非零值表示未找到 command_name 或给出无效选项。

列出 Bash 哈希表

我们可以通过以下方式显示当前会话的哈希表不带任何参数调用哈希。
hash

Hash Command
这里,hash 命令显示命中数(调用该命令)以及会话期间带有路径的命令。所有命中的总和被视为通过路径保存的搜索次数。
注意: 注意-如果在没有执行命令的情况下打开一个新会话,则该会话将没有哈希表。输出将如下所示:
Hash Command
如果我们使用-l选项,那么它会以可以作为输入的格式显示一个哈希表,即
hash-l

Hash Command
我们还可以打印会话期间使用的命令的记忆位置使用 -t 选项。
Hash Command
我们也可以打印多个空格分隔的命令的位置,即,
Hash Command

向 Bash 哈希表添加命令路径和名称

我们可以向哈希表中添加可以在 shell 中再次使用的项目。应该记住,哈希表只存在于 shell 的当前活动会话中。如果我们打开一个新的 shell,bash 将根据该 shell 执行的命令创建一个新的哈希表。
一旦我们开始运行第一个命令,bash 就会开始创建一个哈希表。要将命令添加到哈希表,我们可以使用-p 选项,后跟路径,然后是名称。这样,我们就可以像使用别名一样使用哈希表。以下是我们将 /home/bash.sh 脚本添加到名为"bash"的哈希表的示例。
Hash Command
将/home/bash.sh添加到映射名称为'bash'的哈希表后,我们可以直接调用它的名称为"bash":
Hash Command
Bash 检查哈希表中的命令名称以查找可执行文件。通常,除非我们希望它在新 shell 中可用,否则不需要将脚本放在路径中。

从哈希表中删除项目

我们还可以选择删除或忘记哈希 bash 中记住的命令位置。我们可以简单地使用 -d 选项后跟名称来执行此任务:
Hash Command
这里,我们从哈希表中删除了 /home/bash.sh,它被映射为一个名称"bash"。

清除哈希表

要清除哈希表,我们可以使用-r选项。
Hash Command
这里可以看到使用-r选项成功清除了哈希表。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4