安卓系统

Linux中的历史记录命令(bash历史记录)

Iron Danger Review-schickes Taktik Story-RPG mit Zeitschleife (Deutsch-German, with many subtitles)

Iron Danger Review-schickes Taktik Story-RPG mit Zeitschleife (Deutsch-German, with many subtitles)

目录:

Anonim

,我们将讨论 history 命令,它使您可以查看以前执行的命令的列表,在列表中进行搜索以及操作历史文件。

使用 history 命令和历史扩展

history 是一个内置的shell,每个shell的行为可能略有不同。 我们将介绍 history 的Bash内置版本。

以最简单的形式,在没有任何选项或参数的情况下调用 history 命令时,将显示带有行号的整个历史记录列表。

history

… 467 git push 468 tail -f var/logs/error 469 nano +22, 5 functions.sh 470 source project-env/bin/activate 471 history

键入 !n 执行历史记录列表中的第n条命令,而键入 !-n 则将n行返回。 在下面的示例中,我们在第 467 行执行命令:

!467

执行命令的另一种方法是使用 !word 扩展。 word 是指以“ word”开头的最新命令。

通常, history 会显示许多屏幕上不适合的输出行。 要一次查看输出一页,请像 less 命令一样,将其通过管道传送到寻呼机程序:

history | less

要显示最后 n 行,请将数字作为参数传递给命令。 例如,要仅查看历史记录列表的最后五行,请输入:

history -5

使用 up down 箭头键浏览列表中的条目。 当显示您搜索的命令时,按 Enter 执行。

输入 !! 执行上一条命令:

!!

当您忘记在命令后加上 sudo ,这非常有用,您可以键入以下命令来代替重新键入命令:

sudo !!

!-1 !! 相同 并执行历史记录列表中的最后一个命令,倒数第二个 !-2 ,依此类推。

^word1^word2^ 扩展允许您重新运行最后一个命令,将“ word1”替换为“ word2”。 如果您不小心键入了 sduo command 而不是 sudo command ,则可以使用正确的单词重复以下命令:

^sduo^sudo^

使用 grep 命令来过滤输出。 例如,要查看包括“ nano”在内的所有命令,请运行:

history | grep nano

302 sudo nano /etc/resolv.conf 356 nano setup.py 413 sudo nano /etc/hosts 469 nano +22, 5 functions.sh

现在,如果要重新运行 nano setup.py 命令,只需键入:

!356

搜索命令历史记录的另一种方法是按 Ctrl-R 。 提示将变为以下内容,您可以开始搜索先前执行的命令。

(reverse-i-search)`':

外壳将显示一条匹配的行。 要移至下一个匹配的建议,请再次按 Ctrl-R

查看Bash手册以获取有关历史记录扩展,修饰符和指示符的更多信息。

保存历史记录列表

默认情况下,启动新会话时,Bash从 .bash_history 文件读取历史记录列表。 当前会话中执行的命令列表保留在内存中,并在关闭会话时保存到文件中。

-a 选项允许您将当前会话历史记录列表保存到 .bash_history 文件中:

history -a

-w 选项将完整的历史记录列表写入历史记录文件。

history -w

清算记录

history 命令允许您清除完整的历史记录列表或删除某些部分。

要清除历史记录列表,请使用 -c 选项:

history -c

要从历史记录列表中删除开始位置和结束位置之间的特定行,请使用 -d 选项。

例如,要删除365和375之间的行(包括那些行),请输入:

history -d 365 375

当使用负整数时,行将从历史记录列表的末尾算起。

上面的命令清除历史记录列表,该列表保留在内存中,但不会从磁盘上的 .bash_history 文件中删除条目。 要清除文件,您需要将历史记录列表写入文件:

history -c history -w

修改历史记录行为

可以使用几个不同的环境变量来定义Bash历史记录的行为。 修改历史记录行为时,请在 ~/.bashrc 或用户登录时加载的任何其他配置文件中设置变量。

默认情况下,Bash在命令历史记录列表中保留500行。 HISTSIZE 变量允许您更改此值。 要将其设置为10000,请将以下行添加到 .bashrc 文件中:

HISTSIZE=10000

HISTCONTROL 变量接受用冒号分隔的值列表,这些值定义了如何在历史记录列表中保存命令:

  • ignorespace 以空格开头的命令不会保存在历史记录列表中。 ignoredups 不保存重复的命令。 ignoreboth 是一个简写形式,包括 ignorespace ignoredups

HISTCONTROL=ignoreboth

设置 HISTTIMEFORMAT 变量后,Bash将在每行上为命令添加执行时间戳。

例如,如果您设置:

HISTTIMEFORMAT="%F %T: "

历史记录将以以下格式显示:

413 2019-10-27 21:13:07: sudo nano /etc/hosts

结论

history 命令显示以前执行的命令的列表。 例如,您可以使用历史记录来查看您之前忘记的长命令。

历史终端