在Mathematica中,可以使用%。
重复使用上一个命令的输出bash(或其他一些shell)有类似的可能吗?
例如,我运行一个发出警告的make,但我想找到所有警告。 所以,我输入
make | grep "warning"
但是我无法看到make的输出。
我想输入这样的内容:
make
% | grep "warning"
答案 0 :(得分:11)
由于输出量不确定,因此bash
存储它以供重新显示是没有意义的。但是你的问题有另一种解决方案:
tee
命令允许您将输出流复制到文件。因此,如果您愿意使用文件进行临时存储,您可以执行以下操作:
make | tee output.txt
grep "warning" output.txt
这个解决方案避免了两次运行make
,这可能是(a)昂贵且(b)不一致:第二个make可能比第一个make做的工作少,因为有些目标已经是第一次出现了。 / p>
注意:我没试过这个。您可能需要摆弄加入错误和输出流等。
答案 1 :(得分:2)
我不确定make
命令是否向stderr发送警告但我怀疑它是否存在。试试这个
make 2&>1 |grep 'warning'
它会将stderr重定向到stdout。
还应该注意,你不能grep任何不会stdout的东西。
答案 2 :(得分:2)
如果使用tee将输出流复制到/ dev / stderr,则不需要临时文件;此外,您可以使用sed过滤stdout流以创建make_warning.log文件 - 所有这些都在Unix shell管道中。
make 2>&1 | tee /dev/stderr | \
sed -E -n 's/(.*[Ww][Aa][Rr][Nn][Ii][Nn][Gg].*)/\1/p' > make_warning.log
答案 3 :(得分:2)
交换stdout
和stderr
信息流以记录整个stderr
信息流:
make 3>&2 2>&1 1>&3 3>&- | tee /dev/stderr > stderr.log
答案 4 :(得分:1)
您可以这样做:
lightbox.option({
'disableScrolling': true
})
通过使用make
!! | grep "warning"
告诉它重复该位置的最后一个命令,以及要添加到其中的任何其他bash命令。