我发现自己使用history | grep ‘whatever'
然后复制并粘贴cmd,我发现这很乏味。
$(history | grep 'whatever')
如果它是 1 行(超过这一行,我必须处理它),我有时也会执行 cmd,但我必须用来sed
删除行号。
那么当复制粘贴不可用时,人们是否只需重新输入命令?或者他们是否只需使用sed
并awk
处理然后执行?
答案1
从我自己的历史来看,UNIX 不一定按时间顺序排列。
在“过去”,既没有命令行编辑,也没有鼠标。您确实重新输入了命令,就像输入普通sh
或dash
.我怀疑这是常用命令较短的原因之一。个人$HOME/bin
目录中的简单脚本有助于$PATH
更常用的操作。
多年来,这就是我的环境,通过 PC 上运行的 X Windows 进行了增强(X视觉),这使我可以用鼠标复制和粘贴。
接下来是 C Shell ( csh
) 及其命令历史记录。仍然没有命令行编辑,但您可以重复以前的命令并对其进行简单的修改。以下%
是 C Shell 提示符:
% echo hello, world
hello, world
% ^world^earth
echo hello, earth
hello, earth
% history
12 echo hello, world
13 echo hello, earth
14 history
% !13
echo hello, earth
hello, earth
% !13:s/hello/goodbye
echo goodbye, earth
goodbye, earth
% !h
history
12 echo hello, world
13 echo hello, earth
14 history
15 echo hello, earth
16 echo goodbye, earth
17 history
然后tcsh
它提供了命令行编辑工具。尽管我编写的脚本是针对sh
.
然后我发现bash
,这意味着我可以使用history
命令行替换(使用^old^new
,如上所述),但也可以使用与我的脚本相同的语法。我还没有搬到,zsh
所以这是我目前的首选环境。
答案2
Bash 提供了一些选项来避免在无法进行复制和粘贴的终端上重新输入命令。
最有用的可能是CTRL+R,它允许您在历史记录中进行反向搜索。
ALT+。插入最后一个命令的参数。
CTRL+I或者标签自动完成命令、文件名和目录名。 ALT+/仅自动完成文件名和目录名。
CTRL+ALT+E扩展当前在命令行中输入的 Bash 别名。
然后,当然,你有向上和向下箭头键可浏览历史记录并选择已运行的命令。