我希望能够在后续命令中使用上次执行的命令的结果.例如,
$find . -name foo.txt
./home/user/some/directory/foo.txt
现在让我们说我希望能够在编辑器中打开文件,或删除它,或者用它做其他事情,例如
mv <some-variable-that-contains-the-result> /some/new/location
我该怎么做?也许使用一些bash变量?
更新:
为了澄清,我不想手动分配东西.我所追求的是内置的bash变量,例如:
ls /tmp
cd $_
$_保存上一个命令的最后一个参数.我想要类似的东西,但是使用最后一个命令的输出.
最后更新:
赛斯的答案非常有效.要牢记几件事:
>第一次尝试解决方案时,不要忘记触摸/ tmp / x
>只有在最后一个命令的退出代码成功时才会存储结果
解决方法:
这是一个真正的hacky解决方案,但它似乎主要在某些时候工作.在测试过程中,我注意到在命令行上获取^ C时有时效果不好,不过我做了一点调整以表现得更好.
这个hack只是一个交互式模式hack,我相信我不会推荐给任何人.后台命令可能导致比正常情况更少定义的行为.其他答案是以编程方式获得结果的更好方法.
话虽如此,这里是“解决方案”:
PROMPT_COMMAND='LAST="`cat /tmp/x`"; exec >/dev/tty; exec > >(tee /tmp/x)'
设置此bash环境变量并根据需要发出命令. $LAST通常会有您正在寻找的输出:
startide seth> fortune
Courtship to marriage, as a very witty prologue to a very dull play.
-- William Congreve
startide seth> echo "$LAST"
Courtship to marriage, as a very witty prologue to a very dull play.
-- William Congreve
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。