在自动化任务时,首先手动测试它是明智的。但是,如果进入 stderr 的任何数据都可以立即识别,并且可以与进入 stdout 的数据区分开来,并且将所有输出放在一起,那么事件序列是什么,这将是有帮助的。
如果在程序退出时打印其返回代码,那么最后的接触会很好。
所有这些都有助于自动化。是的,我可以在程序完成时回显返回码,是的,我可以重定向 stdout 和 stderr;我真正喜欢的是一些外壳、脚本或易于使用的重定向器,它们以黑色显示标准输出,以红色显示与标准输出交错的标准错误,并在最后打印退出代码。
有这样的野兽吗?[如果重要的话,我在 Mac OS X 上使用 Bash 3.2]。
更新:对不起,我已经有几个月没有看过这个了。我想出了一个简单的测试脚本:
#!/usr/bin/env python
import sys
print "this is stdout"
print >> sys.stderr, "this is stderr"
print "this is stdout again"
Run Code Online (Sandbox Code Playgroud)
在我的测试中(可能是由于缓冲方式),rse 和 hilite 显示来自 stdout 的所有内容,然后显示来自 stderr 的所有内容。fifo 方法获得了正确的顺序,但似乎对 stderr 行后面的所有内容进行了着色。ind 抱怨我的 stdin 和 stderr 行,然后将 stderr 的输出放在最后。
这些解决方案中的大多数都是可行的,因为只有最后一个输出进入 stderr 并不是不典型的,但是,如果有一些稍微好一点的东西会很好。
Apple 为 MacBook(以及其他一些 Intel Mac 机型)制作了一个有趣的耳机端口。它像标准插孔一样工作:
但是你也可以使用一个特殊的适配器(它触发一个微型微动开关)来获得一个光学音频输出信号(你大概可以插入一个很好的环绕声系统)。
这一切都很好,除非在自动跟踪之类的情况下它不起作用,并且您没有任何调整的余地。用户报告说,当他们没有插入任何东西时,他们没有声音,并且耳机端口发出红灯。如果您转到“系统偏好设置”->“声音”->“输出”,它会显示 (IIRC)“Optical Out”而不是“Internal Speakers”。
我知道的唯一解决方案是尝试通过插入和移除一组耳机或牙签来重置开关,也许在端口内摆动它,并希望你能幸运地得到它。
还有其他方法可以解决这个问题吗?有谁知道微动开关在哪里或有一个很好的技术来重置它?