个性化阅读
专注于IT技术分析

bash hash命令用法

本文概述

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

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

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

句法

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

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

命令选项

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

退出状态

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

列出Bash哈希表

hash

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

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

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

hash -l

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

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

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

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

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

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

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

从哈希表中删除项目

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

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

清除哈希表

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

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


赞(0)
未经允许不得转载:srcmini » bash hash命令用法

评论 抢沙发

评论前必须登录!