例如:
[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
命令bash
和zsh
交互式命令选择,比 Ctrl-R 反向搜索更好:
它是交互式的,因此您可以在执行命令之前搜索并编辑命令。
在 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