所以我想做的是复制以前使用的多行,使用for循环并引用历史行。 就像我制作了一个目录,然后将cd插入目录,然后制作一个文件,然后删除了所有内容,我想在不删除的情况下重现包含文件的目录,就像我想使用!1!2!3,但是怎么样? 我尝试了以下方法:
for i in {1..3}
do
!$i
done
但是我已经试过了!用$命令!和“!”,当然都没有用。我也尝试过fc $ i,但是什么也没发生。有人可以帮我吗?
答案 0 :(得分:0)
man bash
在“历史扩展”下说:
在读取完整行之后,在外壳将其分解为单词之前,将立即执行历史扩展。
这意味着历史记录扩展发生在变量扩展之前,即,您不能使用变量来代替!
之后的数字,因为外壳仍然不知道它具有什么值。
此外,默认情况下,非交互式外壳具有禁用历史记录扩展的功能。您可以使用set
进行更改,例如,参见
#!/bin/bash
set -o history
set -H
ls
!-1