访问上一个命令产生的 shell 打印输出

访问上一个命令产生的 shell 打印输出

我必须运行一个命令,在 shell 中打印出一条消息,其中包含文件的路径。

>> myCommand.py
>> outputs path to file

我想知道此消息是否存储在任何地方,以便我可以访问路径并自动打开文件(而不是通过将其复制并粘贴到 shell 中来打开它)

答案1

我觉得这可能是重复的,但到目前为止我发现的每个问题/答案都足够不同,我无法直接用它来回答你的问题。至少不是整个问题。

最简洁的答案是不”。 tcsh、Bash、Zsh 或 Fish(或我所知道的任何 shell)中没有自动变量来捕获最近命令的标准输出。 shell 不知道您运行的命令是否要输出单行、流中的多行,甚至执行终端操作命令(想想vinano或任何基于curses 的实用程序)。这也可能是内存问题,因为某些命令的输出可能会继续、继续、继续、继续……

但那里自动化此操作的方法。如果您事先知道要查看该命令输出的文件名所引用的结果文件,则可以使用 shell 的命令替换来执行以下操作:

> less $(myCommand.py) # POSIX (Bash, Zsh) or
> less (myCommand.py) # Fish Shell

当然,用您用来打开文件的任何内容代替less.

您还可以在要使用的变量中捕获文件名:

> OUTFILE=$(myCommand.py)
> echo $OUTFILE
> less $OUTFILE

当然,该变量可以命名为您想要的任何名称。

或者你可以输出结果将其捕获到变量中:

> OUTFILE=$(myCommand.py | tee /dev/tty)
filename
> less $OUTFILE # views "filename"

最后,还有一些其他非常hacky的解决方案,您可以在其中查看这个堆栈溢出问题自动捕获每个命令,但每个命令都有其缺点。

相关内容