如何在linux或macos终端中使用bash历史记录

bashshell是大多数Linux发行版附带的标准终端环境,macOS附带,可在windows10上安装。它会记住您键入的命令并将其存储在历史文件中。您可能知道bash历史的一些基本知识,但它比您可能意识到的强大得多。...

如何在linux或macos终端中使用bash历史记录

bashshell是大多数Linux发行版附带的标准终端环境,macOS附带,可在windows10上安装。它会记住您键入的命令并将其存储在历史文件中。您可能知道bash历史的一些基本知识,但它比您可能意识到的强大得多。

键盘快捷键

相关:Bash的最佳键盘快捷键(又称Linux和macOS终端)

要滚动浏览bash历史,可以使用bash的许多有用的键盘快捷键中的一些。按这些快捷键,您以前使用过的命令将出现在提示处。

  • 向上箭头或Ctrl+P:转到历史记录中的上一个命令。多次按该键可向后浏览所使用的命令。
  • 向下箭头或Ctrl+N:转到历史记录中的下一个命令。多次按该键可浏览所使用的命令。
  • Alt+R:如果在当前行中编辑了从历史记录中提取的命令,则还原对该命令所做的任何更改。

Bash还有一种特殊的“回忆”模式,可以用来搜索以前运行过的命令,而不是逐个滚动。

  • Ctrl+R:调用与您提供的字符匹配的最后一个命令。按此快捷方式并开始键入以搜索bash历史记录中的命令。
  • Ctrl+O:使用Ctrl+R运行找到的命令。
  • Ctrl+G:离开历史搜索模式而不运行命令。

如何在linux或macos终端中使用bash历史记录

查看bash历史记录

您可以通过运行一个命令将整个bash历史记录打印到屏幕上:

history

您将看到bash历史中所有命令的列表,每个命令的左边都有一个数字。旁边带有“1”的命令是bash历史上最早的命令,而数字最大的命令是最近的命令。

如何在linux或macos终端中使用bash历史记录

相关:使用以下8个技巧成为Linux终端超级用户

你可以用输出做任何你喜欢的事情。例如,您可以通过管道将其发送到grepcommand来搜索您的命令历史记录。

history | grep your_search

如何在linux或macos终端中使用bash历史记录

您还可以通过管道将其发送到tail命令,以便仅查看最近运行的少量命令。例如,下面的命令将显示历史记录中的最后5个条目。

history | tail -5

如何在linux或macos终端中使用bash历史记录

运行历史记录中的命令

Bash可以快速“扩展”以前的命令,或者扩展并修改它们。此功能称为“历史扩展”,并使用感叹号,称为“bang”。只需在提示符处键入它们,然后按Enter键运行它们,就像运行任何其他命令一样。

要从历史记录中按编号运行特定命令,请使用以下命令:

!#

例如,假设您想运行bash历史记录中的第12个命令。当您运行history命令时,该命令的左边有一个“12”。您可以键入以下命令。

!12

如何在linux或macos终端中使用bash历史记录

要重新运行上次运行的命令,请键入以下命令。这与按一次向上箭头查看上一个命令,然后按Enter键的效果相同。

!!

您也可以将某个命令引用回一定数量的行。例如!-2将运行您运行的倒数第二个命令!!意思和…一样!-1 .

如何在linux或macos终端中使用bash历史记录

这个扩展在线路的任何地方都有效。你可以在之前或之后添加任何你喜欢的内容!!或本节中的任何其他表达式。例如,您可以键入以下命令来重新运行通过sudo运行的最后一个命令,并赋予它root权限。如果在运行命令之前忘记添加sudo,这将特别有用。

sudo !!

或者,例如,您可以重新运行上一个命令并将其输出传输到grep以搜索某些文本。

!! | grep text

如何在linux或macos终端中使用bash历史记录

要在历史记录中搜索命令并运行它,请键入以下命令。这将运行与指定文本匹配的最后一个命令:

!text

因此,如果您最近运行了一个以ping开头的命令,您可以运行以下命令来搜索它。这将向后搜索历史记录,找到以“pi”开头的最新命令,并立即运行它:

!pi

如何在linux或macos终端中使用bash历史记录

您可以将:p附加到上述任何扩展中,bash将在不运行命令的情况下将命令打印到终端。如果要在运行命令之前确认选择了正确的命令,这将非常有用。

!12:p !!:p !text:p

如何在linux或macos终端中使用bash历史记录

重用历史中的参数

Bash还允许您运行新命令,但使用历史记录中以前命令的参数。这可以帮助您快速重用长参数或复杂参数,而无需重新键入它们。

command !$

例如,假设您运行了touch/home/chris/some\u long\u file\u name\u命令,您不想再次键入\u。你现在想运行命令nano/home/chris/some\u long\u file\u name\u你不想再输入一次。您可以运行以下命令,而不是从头开始键入整个内容:

nano !$

这个!$将使bash自动填充上一个命令的最后一个参数。

如何在linux或macos终端中使用bash历史记录

这只会填充最后一个参数。所以,如果你跑平谷歌网站-C4然后跑平!$,这只会扩展到“ping 4”。

要解决此问题,可以使用以下技巧展开行中的第一个参数,而不是最后一个参数:

command !^

所以,如果你跑平谷歌网站-C4然后冉平!^,bash将其扩展为“ping”谷歌网站".

要填充上一个命令中使用的所有参数,而不是一个参数,可以使用以下命令:

command !*

所以,如果你跑平了!*相反,bash会自动填充上一个命令中使用的所有参数。

如何在linux或macos终端中使用bash历史记录

您可以使用与从历史记录中运行命令以获取参数相同的技巧。请用下面的表格。

command !abc:#

例如,我们在前面运行了sudo hostname命令。如果我们运行以下命令,bash将在历史记录中向后搜索,找到以我们键入的字母开头的最后一个命令,并填写我们指定的参数。所以,如果我们运行echo!su:2,bash将返回搜索以“su”开头的最后一个命令,并填写第二个参数,即“ubuntu”。

其他的小把戏也会如你所料发挥作用。例如,将数字替换为星号(通配符),会导致bash填充命令中的所有参数:

command !abc:*

如何在linux或macos终端中使用bash历史记录

重新运行上一个命令并修改它

Bash还允许您重新运行前面的命令并指定应该更改的内容。这对于纠正命令中的拼写错误非常有用。例如,以下命令将重新运行上一个命令,将其中的文本“abc”替换为文本“xyz”。

^abc^xyz

例如,如果你不小心跑了平gogle.com,然后可以运行^gog^goog,bash将运行命令ping谷歌网站相反。

如何在linux或macos终端中使用bash历史记录

您的历史记录存储在哪里,以及如何清除它

默认情况下,bashshell将您在用户帐户的历史文件~/.bash\u history中运行的命令的历史记录存储在~/.bash\u history中。例如,如果您的用户名是bob,您将在/home/bob/.bash\u history中找到此文件。

因为您的历史记录存储在一个文件中,所以它在会话之间保持不变。您可以运行一些命令,注销,第二天返回,这些命令仍将在历史文件中,随时可以查看和使用。每个用户帐户都有自己的历史文件和单独的命令历史记录。

要清除bash历史记录,可以运行以下命令。这将删除用户帐户的.bash\u历史文件的内容:

history -c

如何在linux或macos终端中使用bash历史记录

Bash在默认情况下只记住有限数量的命令,以防止历史文件变得太大。bash记住的历史条目数由HISTSIZEvariable控制。默认值通常为500或1000个条目。您可以运行以下命令来查看系统上bash历史记录的大小。

echo $HISTSIZE

要将历史记录设置为零,请运行以下命令。

HISTSIZE=0

对于当前会话,bash不会存储任何历史记录条目,除非运行HISTSIZE=1000这样的命令将其设置回一定数量的条目。

如何在linux或macos终端中使用bash历史记录

如何忽略空格和重复项

如果将HISTCONTROLvariable设置为ignorespace,Bash允许您忽略以空格开头的历史记录条目。

HISTCONTROL=ignorespace

在bashshell中运行命令之前,在命令前面键入空格,命令将正常运行,但如果启用此变量,则不会出现在历史记录中。这允许您保持您的历史有点干净,选择运行命令,而不让它们出现在您的历史中。

如何在linux或macos终端中使用bash历史记录

Bash还允许您忽略重复的命令,这些命令会使历史变得混乱。为此,请将HISTCONTROL设置为ignoredups。

HISTCONTROL=ignoredups

如何在linux或macos终端中使用bash历史记录

要同时使用ignorespace和ignoredups功能,请将HISTCONTROL变量设置为ignoreboth。

HISTCONTROL=ignoreboth

请注意,您设置的bash变量将仅在当前会话中保持。如果愿意的话,您需要将这些值添加到用户帐户的.bashrc文件中,以便在启动的每个bash会话中自动设置这些值。

如何在linux或macos终端中使用bash历史记录

bashshell是一个复杂的工具,有比这些更多的选项。请参考官方Bash手册中的Bash历史内置和历史扩展部分,了解更多详细信息和其他可以使用的高级技巧。

  • 发表于 2021-04-08 02:29
  • 阅读 ( 211 )
  • 分类:互联网

你可能感兴趣的文章

使用以下技巧和技巧成为linux命令行高手

... 如何掌握linux命令行:最后的想法 ...

  • 发布于 2021-03-12 10:19
  • 阅读 ( 272 )

顶级网站和书籍,让您成为linux命令行英雄

...bash是什么、不同的模式(交互式和非交互式)以及它是如何产生的基础知识开始,这个站点提供了一个全面的背景知识来帮助您理解命令行的机制。 ...

  • 发布于 2021-03-14 07:04
  • 阅读 ( 243 )

如何在linux上安装和使用powershell

... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...

  • 发布于 2021-03-16 02:34
  • 阅读 ( 303 )

如何定制mac终端并使其更有用

...个新手,现在坚持默认的bashshell是可以的。但你应该知道如何在需要的时候切换它们。 ...

  • 发布于 2021-03-21 20:13
  • 阅读 ( 269 )

在windows上运行linux应用程序和游戏的4种方法

需要在Windows中运行Linux软件吗?当您需要访问终端时,是否卡在使用Microsoft操作系统?别再担心了。您可以选择几个选项来享受Linux环境,甚至可以在Windows中运行Linux软件。 ...

  • 发布于 2021-03-24 10:20
  • 阅读 ( 289 )

启动linux的9个基本命令

... 如何在linux下打开终端 ...

  • 发布于 2021-03-26 18:33
  • 阅读 ( 224 )

在linux中,“bash”是什么意思?

...在这篇短文中,我们将探讨Bash是什么,它做什么,以及如何开始使用它。 ...

  • 发布于 2021-03-28 13:14
  • 阅读 ( 449 )

哪个linux shell最好?比较了5种常见的贝壳

...你的计算机需要一个翻译层。这介于你告诉它做什么和它如何理解之间。 ...

  • 发布于 2021-03-30 18:45
  • 阅读 ( 366 )

如何使用chsh在linux上更改默认shell

Bash不是唯一的Linux shell。很容易尝试其他的shell,比如非常流行的Zsh。找到一个您喜欢的shell后,使用chsh命令将其设置为默认shell。我们会教你怎么做。 为什么贝壳很重要 shell位于您和操作系统之间。它在终端窗口内提供环境...

  • 发布于 2021-04-02 06:04
  • 阅读 ( 334 )

如何在linux上的bash中设置环境变量

Linux上有多种类型的环境变量。了解如何查看它们,为本地和远程登录创建它们,并使它们在重新启动后仍然有效。 环境变量的工作原理 启动终端窗口及其内部的shell时,会引用一组变量,以确保shell配置正确。这些变量还确...

  • 发布于 2021-04-02 06:44
  • 阅读 ( 218 )
tfxulb517395
tfxulb517395

0 篇文章

相关推荐