9.1 Bash 历史工具

评论 0 浏览 0 2023-01-26

set内置程序的-o history选项被启用时(见1 Set 内置程序),shell提供了对command history的访问,即以前输入的命令列表。 HISTSIZE shell变量的值被用作历史列表中要保存的命令数量。最后$HISTSIZE条命令的文本(默认为500条)被保存。 shell在参数和变量扩展之前,但在进行历史扩展之后,根据shell变量HISTIGNOREHISTCONTROL的值,将每个命令保存在历史列表中。

当 shell 启动时,历史从 HISTFILE 变量命名的文件初始化(默认 ~/.bash_history)。如有必要,由 HISTFILE 的值命名的文件将被截断,以包含不超过 HISTFILESIZE 变量的值指定的行数。当启用了历史的 shell 退出时,最后的 $HISTSIZE 行将从历史列表复制到由 $HISTFILE 命名的文件中。如果设置了 histappend shell 选项(参见 4.2 Bash的内置命令),这些行将附加到历史文件,否则历史文件是覆盖。如果未设置 HISTFILE,或者如果历史文件不可写,则不会保存历史。保存历史后,历史文件被截断为不超过 $HISTFILESIZE 行。如果 HISTFILESIZE 未设置,或设置为 null、非数值或小于零的数值,则不会截断历史文件。

如果HISTTIMEFORMAT被设置,与每个历史条目相关的时间戳信息将被写入历史文件,并标以历史注释字符。 当历史文件被读取时,以历史注释字符开头的行紧跟一个数字,将被解释为下一个历史条目的时间戳。

内置命令fc 可用于列出或编辑并重新执行历史列表的一部分。 history 内置函数可用于显示或修改历史列表以及操作历史文件。使用命令行编辑时,搜索命令在提供历史列表访问权限的每种编辑模式下都可用(请参阅用于操作历史的命令)。

shell允许控制哪些命令被保存在历史列表中。可以设置HISTCONTROLHISTIGNORE变量,使shell只保存所输入命令的一个子集。 如果启用cmdhist shell选项,会使shell尝试将多行命令的每一行保存在同一个历史条目中,在必要时加上分号以保持语法的正确性。 lithist shell选项使shell在保存命令时嵌入换行符而不是分号。 shopt内置程序用来设置这些选项。 参见2 Shopt 内置程序,了解shopt的描述。

最后更新2023-03-15
0 个评论
当前页面书签