有没有办法执行历史命令?

有没有办法执行历史命令?

例如:

[root@ip-10-0-7-125 ~]# history | grep free
  594  free -m
  634  free -m | xargs | awk '{print "free/total memory" $17 " / " $ 8}'
  635  free -m
  636  free -m | xargs | awk '{print "free/total memory" $9 " / " $ 10}'
  736  df -h | xargs |  awk '{print "free/total disk: " $11 " / " $9}'
  740  df -h | xargs |  awk '{print "free/total disk: " $11 " / " $8}'
  741  free -m | xargs | awk '{print "free/total memory: " $17 " / " $8 " MB"}'

我只是想知道是否有任何方法可以执行 636 命令而无需再次键入,只需键入一些内容加上数字,例如历史记录 636 或其他内容。

答案1

在 bash 中,就!636可以了。

答案2

是的,这就是所谓的“历史扩展”。看

LESS='+/^HISTORY EXPANSION' man bash

了解完整详情。

使用感叹号后跟数字可以说是最简单的用法:

!636

但是,您也可以直接运行最后执行的命令,而无需知道其历史编号:

!!

或者您可以运行两个命令:

!-2

然而,我最常用的形式是重复最后一个命令的最后一个参数:

echo this text goes into a file > /tmp/afile.txt
cat !$

或者,假设我正在检查一个文件。使用制表符补全,我可能会执行以下操作:

ls -l /really/long/path/to/some/file
less !$

再次,阅读手册页更多细节:

LESS='+/^HISTORY EXPANSION' man bash

答案3

一个不错的,如果您不想首先查看历史记录,请记下数字等:

在 bash (也许还有其他)中:

ctrl-r something 

( ctrl-r=“交互式反向搜索”)( something=上一个命令的一部分)

这将向您显示包含 的最新历史记录行something。要获取之前的行,请在每次获取前一行时再次执行 ctrl-r (单独)。

前任:

ctrl-r  10

显示包含“10”的最新历史记录行(例如,$10在您的示例中带有 , 的行),然后ctrl-r再次显示,直到检索到您要查找的历史记录行

当您想要的行出现时,只需Enter运行它(或者您也可以编辑它,使用arrow keys, backspace, 和ctrl-a转到行的开头,ctrl-e到达行尾, ctrl-k: 来“杀死”从光标到行尾(=删除+将其保存在缓冲区中),: ctrl-y从缓冲区恢复先前被杀死的位等)

如果你想向前搜索(ctrl-s),您首先需要禁用 XON: 看https://stackoverflow.com/a/791800/1841533:

“只是通过运行来禁用 XON/XOFF

stty -ixon

“(然后您将能够使用 ctrl-s,而不会冻结终端)

答案4

HSTR-hstr命令bashzsh交互式命令选择,比 Ctrl-R 反向搜索更好:

hstr 交互式历史命令示例

它是交互式的,因此您可以在执行命令之前搜索并编辑命令。

在 Ubuntu 上,您可以hstr使用以下一行进行安装:

sudo add-apt-repository ppa:ultradvorka/ppa && sudo apt-get update && sudo apt-get install hstr && hstr --show-configuration >> ~/.bashrc && . ~/.bashrc

或一步一步:

sudo add-apt-repository ppa:ultradvorka/ppa
sudo apt-get update
sudo apt-get install hstr

hstr在 Fedora、RHEL 或 CentOS 上安装:

sudo dnf install hstr -y

在 macOS 上homebrew

brew install hstr

...然后配置它:

hstr --show-configuration >> ~/.bashrc

这将取代默认的 Ctrl-R 行为。

运行hstr --show-configuration以确定将附加到您的 Bash 配置文件中的内容。

Github 项目主页上提供了更多配置选项: https://github.com/dvorka/hstr

相关内容