bash – 如何捕获任何shell输出?
我们在浏览器中设计一个
shell,它将流输出
shell输出的所有内容. stdout,stderr,什么的.
然而,正如这个小例子向你展示的那样, git clone https://github.com/joyent/node.git >./git.out cat ./git.out 大部分输出都没有给./git.out.这里是小视频,如果你想看看http://screencast.com/t/7zTdPfq7Pr7正在发生什么 我们需要像’top’,’git’这样的命令才能工作,任何想法如何获得它们? (输出到文件仅用于说明目的,我们会将每行输出流式传输到另一个系统,我们知道最重要的是它没有意义但我希望我的观点足够清楚,以便能够提供洞察力的人.谢谢. )
大多数程序有两个输出:stdout和stderr. stdout是“主要”信息的去向. stderr用于,错误.它也用于各种非重要输出,有时也用于用户提示等.
要捕获所有这些,您需要将stderr重定向到stdout. somecmd arg1 arg2 arg3 >somefile 2>&1 或者将stderr捕获到单独的文件: somecmd arg1 arg2 arg3 >stdout.txt 2>stderr.txt 请注意,程序可以使用除stdout / stderr之外的其他输出.它可以确定你的控制台,并在那里基本上“强制”输出.然而,这种情况非常罕见,上述情况将在99%的情况下发挥作用. 如果将stdout和stderr重定向到同一个文件,请记住一件事是stdout和stderr缓冲区不同,因此它在日志文件中看起来与在屏幕上看起来不一样(行将不按顺序排列) ).此外,对于您的特定实例,您的输出将看起来像垃圾. git做了很多终端操作(对于进度指示器),在日志文件中看起来非常糟糕. 编辑 来自man git-clone:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |