Linux命令历史:选择要记住什么以及如何记住

Linux命令历史记录不只是关于重复命令。您可以有选择地决定要记住什么,以及是否记录使用命令的日期和时间。

Linux历史——您在命令行上使用的命令的记录——可以简化重复的命令,并在您试图追踪最近系统或帐户更改的发生情况时提供一些非常有用的信息。

然而,在开始您的调查之前,您需要了解两件事情:shell的命令内存可以是选择性的,命令运行的日期和时间是可选的。

基本的Linux历史

让我们首先看看在命令行上输入命令时,日期和时间是如何记录的。默认情况下,它们不是。history命令仅提供以前使用过的命令列表。这就是历史文件中保存的所有内容。对于bash用户,这些信息都被填充到.bash_history文件中;对于其他shell,它可能只是.history。

$ echo $HISTFILE /home/myuser/.bash_history

如何如果设置了HISTSIZE设置(通常情况下),则保留的命令历史受其限制。大多数帐户设置为记录100、500或1000条命令,当超过该限制时,较旧的命令将被较新的命令覆盖。

$ echo $HISTSIZE 500

另一个有趣的行为是,当前登录会话中输入的命令是添加到历史文件,直到您注销。相反,它们被写入历史缓冲区,该缓冲区在登录会话结束时添加到历史文件中。

向历史文件添加日期和时间

默认情况下,历史文件只记住命令本身,而不是输入它们的日期/时间。您无法提供过去使用这些命令的时间信息。

如果您想记录日期和时间,您可以将这样的命令添加到在类似于登录的.bash_profile中运行的文件之一。然后,您可以将文件(。~/.bash_profile),以便立即激活更改,或者等待您下一次登录时更改生效。

$ echo export HISTTIMEFORMAT=\"%m/%d/%y %T \" >> ~/.bash_profile

您选择的格式将决定如何显示您的命令历史记录,但是它将如何被记录。当使用如上所示的设置时,日期和时间信息将以“02/20/18 09:10:11”的格式显示。时间格式的每个部分代表一个日期组件。

y年份(4位数)y年份(4位数)m月份(2位数)d天(2位数)T时间(24小时)%r日期(12小时)AM/PM (AM/PM) % d日期(mm/dd/yy

不要忽略在你的HISTTIMEFORMAT设置中结束引号前的空白,否则你的日期和命令会像这样一起运行:

11 02/19/18 21:19:21cat .bash_profile 12 02/19/18 21:19:27vi .bash_profile 13 02/19/18 21:20:06echo $HISTCONTROL

一旦您选择了日期格式,日期和时间将被添加到您的历史文件。但是,不会将日期添加到先前添加到文件中的记录中。相反,一旦更改生效,您将看到与这些命令相关联的日期和时间,但它们只是反映了文件中最早记录的时间这些命令实际输入的日期和时间。

如果您改变了日期格式的想法,没有问题。当您使用历史命令时,您的命令历史将以当前的任何格式显示日期/时间信息。这说明存储在历史文件中的时间戳与您选择的显示格式无关。事实上,日期/时间信息将以这种形式存储在历史文件中:

1519083591

“那是什么?你可能会问。它以臭名昭著的Unix“epoch”格式显示时间——从Unix/Linux开始的秒数。如果你想看看工作中的转化率,看看这个时代转换器.如果您想查看这些时间戳是如何存储的,请使用od命令,你会看到这样的行:

0016440 171 012 043 061 065 061 071 060 070 063 065 071 061 012 157 144 y \n #1 5 1 9 0 8 3 5 9 1n d 0016460 040 055 142 143 040 056 142 141 163 150 137 150 151 163 164 157 - b c。B a s h _ h I s t o

注意到1519083591这个数字了吗?转换器可以告诉你,这个数字代表2018年2月19日星期一格林尼治时间晚上11:39:51。有趣的是,这个值实际上并不是以数字形式存储的,而是作为一系列表示时间戳的字符(例如,字符1、字符5等等)。

实现选择性记忆

选择性记忆起作用的方式有两种。首先,您可以避免将在当前登录会话中输入的命令添加到历史文件中。请记住,在您注销之前,它们不会添加到该文件中。如果清除会话历史记录历史- c在您注销之前,这些命令将被遗忘。

另一个选项是让shell忽略以空格开头的命令。换句话说,如果您输入“pwd”而不是“pwd”,该命令将不会被记录在历史文件中。要使这个特性生效,您需要将HISTCONTROL设置设置为“ignorespace”。

出口HISTCONTROL = ignorespace美元

其他设置包括ignoredups(忽略连续输入的命令的重复)和ignoreboth(忽略以空格和重复开头的命令)。要使用多个设置,请在HISTCONTROL变量中用冒号分隔它们。例如:

美元出口HISTCONTROL = ignorespace: ignoredups

如果希望此设置始终有效,请将显示的命令添加到登录时读取的文件(例如.bash_profile)中,并检查以确保下次登录时正确设置了该命令。

$ echo $HISTCONTROL ignorespace:ignoredups

总结

你不能改变历史,但是你可以控制它的记录方式——至少在Linux上可以。

加入网络世界社区足球竞猜app软件脸谱网LinkedIn对自己最关心的话题发表评论。

版权©2018足球竞彩网下载

2021年IT薪资调查:结果已经出来了