history -r
具有不同的行为,具体取决于它是通过命令行还是使用bind调用。
使用名为hist.txt
的小文件包含4行:
cat hist.txt
a
b
c
d
和一个名为foo的函数:
function foo {
history -c && history -r ./hist.txt
}
如果我输入foo
然后按UP键,我会得到填充d
的缓冲区。这是对的。
如果我用bind -x '"\eW":"foo"'
绑定此函数然后按ALT+W
,则执行foo但结果不同:如果我按UP键我什么也得不到,如果我按下DOWN键然后我得到{ {1}}。
这是否有解释,是否有一种方法可以让这个b
像所描述的第一个行为一样?
答案 0 :(得分:0)
自动应答。我仍然不知道为什么历史 - 我不遵守绑定但我找到了使用循环和历史的解决方法-s:
bind -x '"\eW":"dum=$(cat hist.txt) && while read j; do history -s ${j}; done <<< $dum"'
只有历史记录-r的区别在于hist.txt
文件需要以空行结束。如果不是:read将不会获得所提供示例中的最后一行(d
)。