共计 2295 个字符,预计需要花费 6 分钟才能阅读完成。
自动写代码机器人,免费开通
丸趣 TV 小编给大家分享一下 Bash 中的 history 命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
history 是内置的命令
history 命令与许多其他的命令不同。你可能习惯于命令都作为可执行文件放置在常见的系统级的位置,例如 /usr/bin,/usr/local/bin 或 〜/ bin。但是,内置的 history 命令并不在你的环境变量 PATH 保存的路径中的。
实际上,history 命令并没有保存在物理位置中:
$ which history which: no history in [PATH]
history 其实是 Shell 本身的一个内置函数:
$ type history history is a shell builtin $ help history history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...] Display or manipulate the history list. [...]
由于 history 是 Shell 的内置函数,所以每种 Shell 的 history 函数都是独一无二的。因此,你在 Bash 中能使用的功能可能无法在 Tcsh,Fish 或 Dash 中使用,同样的,在 Tcsh,Fish 或 Dash 中能使用的功能也可能无法在 Bash 中使用。
查看你的 Bash 命令历史记录
history 命令最基本,最频繁的用法就是查看你的 Shell 会话的命令历史记录:
$ echo hello hello $ echo world world $ history 1 echo hello 2 echo world 3 history
事件提示符
事件提示符 (!) 是按事件搜索历史记录的。这里的事件,指的是每一条记录在历史记录里的命令。换句话说,它就是一行命令,并被数字索引标记着以供引用。
要重新运行历史记录中的一个命令,用 ! 直接加上 (无空格) 你想要运行的命令前面的索引数字即可。例如,假设历史记录中的第一条指令是 echo hello ,然后你想重新运行它:
$ !1 echo hello hello
你还可以通过从历史记录中的当前位置开始提供负数的行来使用相对定位。例如,返回历史记录中倒数第 3 条命令:
$ echo alvin alvin $ echo hello hello $ echo world world $ !-3 echo alvin alvin
如果你只想返回上一条命令,你可以使用简写 !! 来替代 !-1。这整整节省了一次按键的时间!!!
$ echo alvin alvin $ !! echo alvin alvin
字符串搜索
你也可以通过特定的字符串来搜索历史记录中的命令并运行它。
若是想要搜索以特定字符串开头的命令,就用 ! 直接加上 (无空格) 你想要搜索的字符串:
$ echo alvin alvin $ true $ false $ !echo echo alvin alvin
你还可以搜索在任意位置包含特定字符串的命令。要做到这点,你只需要用 ! 直接加上前后两端都被 ? 包围的特定字符串即可,像这样:
$ echo alvin alvin $ true $ false $ !?alvin? echo alvin alvin
如果你知道你想要搜索的字符串在命令的最后面,那就可以省略字符串后面的 ?,像这样:
$ echo alvin alvin $ !?alvin echo alvin alvin
值得注意的是,若是历史记录中包含目标字符串的命令不止一条,则它只会执行符合条件的命令中最后的一条:
$ echo hello world hello world $ echo hello alvin hello alvin $ !?hello? echo hello alvin hello alvin
字符串替换
你可以搜索一个特定的字符串并用新字符串替换它,从而更改命令:
$ echo hello hello $ echo world world $ ^hello^alvin echo alvin alvin
但是它只能替换第一次出现的目标字符串,若是命令中出现两次目标字符串,则只有第一次出现的会被替换,像这样:
$ echo hello hello hello hello $ ^hello^alvin echo alvin hello alvin hello
与字符串搜索一样,当历史记录中包含目标字符串的命令不止一条时,只替换并执行最后一条:
$ echo hello world hello world $ echo hello hello $ ^hello^alvin echo alvin alvin
充分利用 history 命令
实际上,Bash 的 history 命令的功能远不止本文所提到的,但这是你习惯使用 history 命令的一个很好的开始,而不仅仅是利用 history 来查看历史记录。要经常使用 history 命令,看看你只利用 history 命令而不输入具体的指令能完成多少事情,你会被惊艳到的。
以上是“Bash 中的 history 命令怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!
向 AI 问一下细节
丸趣 TV 网 – 提供最优质的资源集合!