The*_*One 153 bash command-history
例如:
[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"}'
Run Code Online (Sandbox Code Playgroud)
我只是想知道是否有任何方法可以在不再次键入的情况下执行 636 命令,只需键入一些内容加上数字,例如历史 636 或其他内容。
use*_*825 254
在 bash 中,就!636可以了。
Wil*_*ard 90
是的,这就是所谓的“历史扩展”。看
LESS='+/^HISTORY EXPANSION' man bash
Run Code Online (Sandbox Code Playgroud)
详细信息。
使用感叹号后跟数字可以说是最简单的用法:
!636
Run Code Online (Sandbox Code Playgroud)
但是,您也可以在不知道其历史记录编号的情况下直接运行上次执行的命令:
!!
Run Code Online (Sandbox Code Playgroud)
或者你可以运行两个命令:
!-2
Run Code Online (Sandbox Code Playgroud)
然而,我最常使用的形式是重复最后一个命令的最后一个参数:
echo this text goes into a file > /tmp/afile.txt
cat !$
Run Code Online (Sandbox Code Playgroud)
或者,假设我正在检查一个文件。使用选项卡完成,我可能会执行以下操作:
ls -l /really/long/path/to/some/file
less !$
Run Code Online (Sandbox Code Playgroud)
再次阅读手册页以获取更多详细信息:
LESS='+/^HISTORY EXPANSION' man bash
Run Code Online (Sandbox Code Playgroud)
Oli*_*lac 16
一个不错的,如果你不想第一次历史,记下数字等:
在 bash 中(也许还有其他人):
ctrl-r something
Run Code Online (Sandbox Code Playgroud)
( ctrl-r= "反向搜索交互") ( something= 前一个命令的一部分)
这将向您显示包含something. 要获得之前的,请再次执行 ctrl-r (单独),每次获得前一行。
前任:
ctrl-r 10
Run Code Online (Sandbox Code Playgroud)
显示包含 '10' 的最新历史行(例如$10,在您的示例中带有,的行),然后ctrl-r再次显示,直到您检索到您要查找的历史行
当您想要的行出现时,只需Enter运行它(或者您也可以编辑它,使用arrow keys, backspace, 并ctrl-a转到行的开头,ctrl-e到达 End, ctrl-k: 以“杀死”从光标到行尾(=deletes+saves it in a buffer), ctrl-y: 从缓冲区恢复之前被杀死的位,等等)
如果要向前搜索(ctrl-s),首先需要禁用 XON:参见/sf/answers/55426031/:
" 只是通过运行禁用 XON/XOFF
stty -ixon
Run Code Online (Sandbox Code Playgroud)
"(然后您将能够使用 ctrl-s,而不会冻结终端)
您可以使用 shell 内置fc:
fc -s 636
Run Code Online (Sandbox Code Playgroud)
有HSTR-hh命令bash和zsh交互式命令选择,比 Ctrl-R 反向搜索更好:
它是交互式的,因此您可以在执行命令之前搜索和编辑命令。
在 Ubuntu 上,您可以hh使用以下单行安装:
sudo add-apt-repository ppa:ultradvorka/ppa && sudo apt-get update && sudo apt-get install hh && hh --show-configuration >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
或一步一步:
sudo add-apt-repository ppa:ultradvorka/ppa
sudo apt-get update
sudo apt-get install hh
Run Code Online (Sandbox Code Playgroud)
hh在 Fedora、RHEL 或 CentOS 上安装:
sudo dnf|yum install hstr -y
Run Code Online (Sandbox Code Playgroud)
在 macOS 上homebrew:
brew install hh
Run Code Online (Sandbox Code Playgroud)
...然后配置它:
hh --show-configuration >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
这将替换默认的 Ctrl-R 行为。
运行hh --show-configuration以确定将附加到您的 Bash 配置文件中的内容。
Github 项目主页上提供更多配置选项:https : //github.com/dvorka/hstr