如何在Linux终端中使用您的Bash历史记录
1、1.召堡厥熠键盘快捷键要滚动您的bash历史记录,您可以使用一些bash的许多有用的键盘快捷键。按照您之前使用的这些快捷方式和命令会出现在提示符下。向上箭头或Ctrl + P:转到历史记录中的上一个命令。按键多次,通过您使用的命令向后走。向下箭头或Ctrl + N:转到历史记录中的下一个命令。按键多次,通过您使用的命令前进。Alt + R:如果您在当前行中对其进行了编辑,则将任何更改还原为从历史记录中提取的命令。Bash还有一个特殊的“召回”模式,您可以使用它来搜索先前运行的命令,而不是逐个滚动。Ctrl + R:调用与您提供的字符匹配的最后一个命令。按此快捷方式,然后开始输入以搜索您的bash历史记录以获取命令。Ctrl + O:运行您使用Ctrl + R找到的命令。Ctrl + G:保留历史搜索模式,不运行命令。
2、查看你的Bash历史您可以通过运行单个命令将整个bash历史记录打印到屏幕上:history你会看到你的bash历史记录中的所有命令的列表,以及每个命令左边的数字。带有“1”的命令是您的bash历史记录中最早的命令,而最高的命令是最新的。
3、你可以做任何你喜欢的输出。例如,您可以将其管道到grep命令中以搜索您的命令历史。history| grep your_search
4、您也可以将其管理到tail命令中,以查看您运行的最近的少量命令。例如,以下命令将显示历史记录中的最后5个条目。history| tail-5
5、2.从你的历史运行命令Bash可以快速“展开”先前的命令,或者展开它们并修改它们。这个功能被称为“历史扩展”,并使用一个叫做“砰”的感叹号。只需在提示符下键入它们,按Enter键即可运行它们,就像运行任何其他命令一样。要从历史记录中运行特定的命令,请使用以下命令:#!例如,假设你想从你的bash历史运行第12个命令。当您运行该history命令时,它的左侧有一个“12”的命令。您将键入以下命令。!12
6、要重新运行您运行的最后一个命令,请键入以下命令。这与按向上箭头一次查看上一个命令,然后按Enter键具有相同的效果。!您还可以将命令返回一定数量的行。例如,!-2将运行您运行的第二个到最后一个命令。!!意思是同样的事情!-1。
7、这种扩展可以在任何地方工作。您可以!!在本节中添加任何您之前或之后的任何其他表达式。例如,您可以键入以下命令来重新运行您运行的最后一个命令sudo,从而赋予其root权限。如果sudo在运行命令之前忘记添加,这一点尤其有用 。sudo !!或者,例如,您可以重新运行上一个命令并将其输出管道输出到grep以搜索一些文本。!| grep文字
8、要搜索历史记录中的命令并运行它,请键入以下内容。这将运行与您指定的文本相匹配的最后一个命令:!文本所以,如果你最近运行了一个开始的命令ping,你可以运行以下命令来搜索它。这将通过您的历史记录向后搜索,找到以“pi”开头的最新命令,并立即运行:!PI
9、您可以附加:p到任何上述扩展,并且bash会将命令打印到终端而不运行。如果要确认您在运行该选项之前选择了正确的命令,这将非常有用。!12:P!:P!正文:P
10、2.从缩村枵沣您的历史重用参数Bash还允许您运行一个新命令,但是使用历史记录中先前命令的参数。这可以帮助您快速重用长时间或复杂的参数,而无需重新输入。命鸡舍诽浓令!$例如,假设你运行了这个命令touch /home/chris/some_long_file_name_you_dont_want_to_type_again。你现在想要运行命令nano /home/chris/some_long_file_name_you_dont_want_to_type_again。而不是从头开始打字,你可以运行:nano!$这!$将使bash自动填写上一个命令的最后一个参数。
11、这仅仅填写最后一个参数。所以,如果你运行ping google.com -c 4然后运行ping !$,这将扩展到“ping 4”。要解决这种情况,您可以使用以下技巧来展开第一个参数,而不是最后一个:命令!^所以,如果你跑了ping google.com -c 4,然后跑ping !^,bash会把它扩展到“ping google.com"。
12、要填写上一个命令中使用的所有参数,而不是单个参数,您可以使用以下命令:命令!*所以,如果你运行ping !*,bash会自动填写你在上一个命令中使用的所有参数
13、您可以使用与从历史记录中运行命令的相同技巧,从中获取参数。只需使用以下形式。命令!abc:#例如,我们sudo hostname ubuntu以前运行命令。如果我们运行以下命令,bash将通过历史记录向后搜索,以从我们键入的字母开始找到最后一个命令,并填写我们指定的参数。所以,如果我们运行echo !su:2,bash将会搜索到以“su”开始的最后一个命令,并填写第二个参数,即“ubuntu”。其他技巧可以像您所期望的那样工作。例如,使用星号(称为通配符)替换数字会导致bash从命令中填入所有参数:命令!abc:*
14、重新运行上一个命令并修改它Bash还允许您重新运行上一个命令并指定应该更改的内容。这可以用于纠正命令中的打字错误。例如,以下命令将重新运行上一个命令,将文本“abc”替换为文本“xyz”。^ ^ ABC XYZ例如,如果你不小心跑了ping gogle.com,你可以运行^gog^goog,bash会运行命令ping google.com。
15、3.存储缩村枵沣您的历史记录,以及如何清除默认情况下,bash shell将您在用户帐户的历史记录文件中运行的命令的历史记录存储在〜/ .bash_history。例如,如果你的用户名是bob,你会在/home/bob/.bash_history找到这个文件。由于您的历史记录存储在文件中,因此会在会话之间持续存在。您可以运行一些命令,退出,第二天回来,这些命令仍然可以在您的历史文件中准备查看和使用。每个用户帐户都有自己的具有单独命令历史的历史文件。要清除您的bash历史记录,可以运行以下命令。这将擦除用户帐户的.bash_history文件的内容:history-c
16、Bash仅默认记住有限数量的命令,从而防止历史文件增长太大。历史条目bash记忆的数量由HISTSIZ呶蓟鹭毵E变量控制。默认值通常为500或1000个条目。您可以运行以下命令来查看系统上bash历史记录的大小。echo $ HISTSIZE要将历史记录设置为零,请运行以下命令。HISTSIZE = 0对于当前会话,bash将不会存储任何历史记录条目,除非您运行命令HISTSIZE=1000将其设置回一定数量的条目
17、4.如何忽略空格和重复Bash允许您忽略以空格开头的历史记录条目,如果将HISTCONTROL变量设置为ignorespace.HISTCONTROL = ignorespace在命令行前输入一个空格,然后在bash shell中运行命令,命令将正常运行,但如果启用了此变量,则不会显示在历史记录中。这样可以让您的历史保持一点清洁,选择在没有出现在您的历史记录中的情况下运行命令。
18、Bash还允许您忽略可能会混淆您的历史记录的重复命令。要这样做,设置HISTCONTROL为ignoredups.HISTCONTROL = ignoredups
19、要使用ignorespace和ignoredups功能,请将HISTCONTROL变量设置为ignoreboth.HISTCONTROL = ignoreboth请注意,您设置的bash变量只会持续存在于当前会话中。您需要将这些添加到用户帐户的.bashrc文件,以便在您启动的每个bash会话中自动设置这些值,如果您愿意的话。
20、bash shell是一个复杂的工具,具有比这些更多的选项。请参阅官方bash手册中的Bash历史内存和历史扩展部分更详细的信息和其他可以使用的高级技巧。