$ echo hello; cd ~/Docs
hello
$ !!
echo hello; cd ~/Docs
hello
我想hello
在输入后获取并执行更改目录,!!
而无需再次重新显示echo hello; cd ~/Docs
。
编辑:
fc 仅适用于一个命令,但不会从终端执行整行。对于!!
或 也一样$(!!)
,它们不起作用。我试过了stty -echo
,但结果一样——它只隐藏了输入!!
,但仍显示命令。我最接近的解决方案是存储该命令,然后从 运行它script.sh
,但它仍会显示它正在运行script.sh
。
答案1
创建使用您的 bash 配置加载的以下函数(例如.bashrc
):
rpt() {
IFS=';' read -r -a array <<< "$(fc -ln -1)"
for element in "${array[@]}"
do
$element
done
}
运行命令rpt
来执行该功能。
这将把最后一个命令字符串读入一个数组,并在符号处进行拆分;
,然后数组中的每个元素(每个命令)单独运行。
为了使其工作,;
是一个保留字符,在任何情况下都不能用于打印字符串等。
对于该解决方案,您必须接受这个限制,但我认为它“足够好”可以发挥作用。