📜  Bash哈希命令

📅  最后修改于: 2020-12-29 10:32:01             🧑  作者: Mango

重击哈希命令

在类似UNIX的操作系统上,哈希bash shell的内置命令,用于列出最近执行的命令的哈希表。它用于在bash路径哈希中查看,重置或手动更改。它保留了最近执行的程序的位置,并在我们希望查看时显示它们。它提供每个命令名称的完整路径名。

换句话说,当执行任何命令时都没有命名其路径时,shell将开始在path变量中列出的目录中搜索该命令。当Bash获取该命令时,它将位置保存在哈希表中,以便它可以记住该命令的位置。之后,Bash开始检查表以查找命令的位置,而不是再次查找命令。它使命令运行得更快。但是,如果在将命令的位置记录在表中之后移动了该命令,则外壳将无法找到该命令。在这种情况下,将对路径中的目录进行完全搜索以获取命令数据。

内置的“ hash”命令负责维护哈希表。在没有任何开关的情况下,散列列出了先前使用的命令,它们的位置以及在会话期间执行它们的次数。

句法

hash [-l] [-r] [-p pathname] [-d] [-t] [command_name . . .]

上面的语法用于确定和记住每个command_name的完整路径名。如果没有参数,它将显示有关先前使用的命令及其位置的信息。

选件

-d Forget the remembered locations of command_name.
-l Display the information that can be used again as an input for another program.
-p Use pathname as the full path of command_name.
-r Forget all the remembered locations.
-t Print the remembered location of each command_name. If multiple command_names are given there, precede each location with corresponding command_name
command_name Each command_name specified is searched for in the path environment variable, and if found, is added to the list of remembered commands.

退出状态

hash命令成功返回“ 0”。非零值表示找不到command_name,或者给出了无效的选项。

列出Bash哈希表

hash

在这里,hash命令显示命中次数(该命令的调用)以及该命令及其在会话期间的路径。所有匹配的总和被视为通过路径保存的搜索次数。

注-如果在没有执行任何命令的情况下打开了新会话,则该会话将没有哈希表。输出将如下所示:

如果使用-l选项,则它将以可以用作输入的格式显示哈希表,即

hash -l

我们还可以使用-t选项print在会话中记住的命令位置。

我们还可以print以空格分隔的多个命令的位置,即

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

我们可以将项目添加到哈希表中,然后可以在外壳中再次使用。应当记住,哈希表仅存在于外壳程序的当前活动会话中。如果我们打开一个新的shell,bash将根据该shell的已执行命令创建一个新的哈希表。

一旦开始运行第一个命令,bash即开始创建哈希表。要将命令添加到哈希表中,我们可以使用-p选项,后接路径和名称。这样,我们可以像使用别名一样使用哈希表。下面是一个示例,其中我们将/home/bash.sh脚本添加到名称为' bash '的哈希表中。

在将/home/bash.sh添加到具有映射名称'bash'的哈希表之后,我们可以直接使用名称'bash'来调用它:

Bash检查哈希表中的命令名称以找到可执行文件。通常,除非我们希望脚本在新的shell中可用,否则无需将脚本放在路径中。

从哈希表中删除项目

我们还可以选择删除或忘记哈希bash中命令的记住位置。我们可以简单地使用-d选项后跟名称来执行此任务:

在这里,我们从哈希表中删除了/home/bash.sh ,该哈希表已映射为名称“ bash ”。

清除哈希表

要清除哈希表,我们可以使用-r选项。

在这里,可以看到通过使用-r选项成功清除了哈希表。