我希望能够在后续命令中使用最后执行的命令的结果.例如

$ find . -name foo.txt
./home/user/some/directory/foo.txt

现在让我们假设我希望能够在编辑器中打开文件,或者删除它,或者用它做其他事情,例如.

mv <some-variable-that-contains-the-result> /some/new/location

我该怎么做?也许使用一些bash变量?

Update:

澄清一下,我不想手动分配东西.我想要的是一些内置的bash变量,例如.

ls /tmp
cd $_

$_保存上一个命令的最后一个参数.我想要一个类似的东西,但是有最后一个命令的输出.

Final update:

赛斯的回答很有效.要记住几件事:

  • 第一次try 解决方案时不要忘记touch /tmp/x
  • 仅当最后一个命令的退出代码成功时,才会存储结果

推荐答案

这是一个非常棘手的解决方案,但它似乎在大多数情况下都能奏效.在测试过程中,我注意到当在命令行上获得^C时,它有时工作得不太好,尽管我确实对它进行了一些调整,使其表现得更好.

这个黑客只是一个互动模式黑客,我很有信心我不会向任何人推荐它.后台命令可能会导致比正常情况下定义更少的行为.其他答案是通过编程获得结果的更好方法.


尽管如此,以下是"解决方案":

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

Linux相关问答推荐

在Zenity进度窗口上单击取消后如何停止bash脚本

如何添加Linux格式的时间输出

在 Linux 上的 std::threads 中创建子进程

如何更改文件的上次访问/修改/更改日期?

如何在bash中用另一个整数变量增加一个整数变量?

Bash - 如何根据 names.txt 重命名目录中的文件

如何将通配符参数传递给 bash 文件

Bash 变量:是否区分大小写?

如何有效地使用 grep?

为什么在编译 K&R2 第 1 章中最长的行示例时出现getline 的类型冲突错误?

为什么 XGrabKey 会生成额外的聚焦和聚焦事件?

是否可以在 Linux x86 GAS 程序集中创建没有系统调用的线程?

如何在非阻塞套接字上处理 OpenSSL SSL_ERROR_WANT_READ / WANT_WRITE

用于 Linux 的 Less 编译器

优雅地杀死在 Linux 上运行的 .NET Core 守护进程

bash shell 脚本函数定义(如f () {})中使用的括号是什么?它与使用function关键字不同吗?

在 Python 中删除 Root 权限

Windows 开发环境值得付出代价吗?

Linux命令将一个文件复制到多个文件

当我已经 ssh 进入远程机器时,如何 scp 回到本地?