在 Windows cmd 窗口中,假设我键入并执行 40 个命令,如下所示:
echo 1[Enter]
echo 2[Enter]
echo 3[Enter]
...
echo 40[Enter]
如果我决定以相同的顺序再次重复 40 个命令,我会这样做:
- 按
[Up]
--->提示显示echo 40
- 按
[Up]
--->提示显示echo 39
- 重复
[Up]
37次 - 按
[Up]
--->提示显示echo 1
- 按
[Enter]
--->echo 1
执行 - 按
[Down]
---> 提示显示echo 2
<--- 在 Linux/Bash 中不起作用 - 按
[Enter]
--->echo 2
执行 - 按
[Down]
--->提示显示echo 3
- 按
[Enter]
--->echo 3
执行 - 重复
[Down][Enter]
37次以执行所有剩余命令 - 如果我
[Down]
现在按,它会echo 1
再次循环
在 Linux/Bash 中,在历史记录中查找并执行后echo 1
,按[Down]
键不会给我任何东西。我必须[Up]
再次按 40 次才能得到echo 2
。有办法让它发挥作用吗?
答案1
- ...
- 按
[Up]
--->提示显示echo 1
- 按
[Ctrl-O]
(是字母o
,不是零)--->echo 1
执行,提示符显示echo 2
- 按
[Ctrl-O]
...
可以在 中更改热键.inputrc
,请参阅operate-and-get-next
中readline
的手册。
答案2
在这种情况下,改变流程可能会带来更好的解决方案。
您已标记为巴什这很方便。如果您想要重复 40 个命令,一种选择是将它们放入 shell 脚本中
fc -nl -40 >file
. file
或者您可能想先编辑它们
fc -40 0
更多兴奋与help fc