bash – 重定向的意外输出
我在重定向STDOUT和STDERR时遇到了一个奇怪的问题.以下按预期工作:
$gvim --version > /tmp/version.out $ls -l /tmp/version.out -rw-r--r--. 1 blah blah 3419 Jun 27 17:28 /tmp/version.out 输出文件中有3419个字符,当我查看文件时,它包含我所期望的内容. 但是,当我执行以下操作时,它无法正常工作: $gvim --version > /tmp/version.out 2> /tmp/version.err $ls -latr /tmp/version.* -rw-r--r--. 1 blah blah 0 Jun 27 17:29 /tmp/version.out -rw-r--r--. 1 blah blah 0 Jun 27 17:29 /tmp/version.err 请注意,.out和.err文件这次都是零长度.我用ls命令尝试了这个,它按预期工作: $ls . /ZZZ > /tmp/ls.out 2> /tmp/ls.err $ls -l /tmp/ls.* -rw-r--r--. 1 blah blah 50 Jun 27 17:45 /tmp/ls.err -rw-r--r--. 1 blah blah 33 Jun 27 17:45 /tmp/ls.out 在这里,STDERR被正确地重定向: $cat /tmp/ls.err ls: cannot access /ZZZ: No such file or directory 我对gvim –version进行了一次调查,并确认它正在尝试将版本信息写入STDOUT(fd 1).无论哪种方式都没关系,因为我试图捕获STDOUT和STDERR. 这里发生了什么?
恭喜,您刚刚在gvim中发现了一个错误!
正确的程序是 file a new issue on GitHub. 您应该首先尝试该错误的其他变体,以便开发人员更容易调试. 例如,仅重定向STDERR也会导致错误,因为没有写入输出.还有返回成功(0),这显然是一个错误. $gvim --version 2> /tmp/version.err $echo $? 0 通过查看代码,可以在version printing中的任何地方搜索bug,或者在泛型–version参数处理中的任何地方搜索not being done by gtk. 回答你的问题 到底是怎么回事? 这是一个程序错误,由gvim的开发人员制作,我不建议你努力找到它的根本原因,除非你有编码vim的经验或者如果你想学习,vim如何工作.在这种情况下,您的最佳镜头是fork the repo,在修复之后,提交拉取请求,以便每个人都可以从您的工作中受益. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 【ionic+angularjs】angularjs ui-router路由简介($urlRou
- forms – Bootstrap:表单组中的垂直居中标签
- angularjs – 使用JSONP找不到JSON_CALLBACK
- scala – 伴随对象中的隐式视图
- 如何从Scala中的持久层抽象域图层
- linux上配置jdk时,java命令提示没有此文件或文件夹的解决方
- service – Angular2 – 在routerOnDeactivate()中停止/取消
- angular – 数据表问题 – ERROR TypeError:val.slice不是
- webservice安全-两种方式
- shell – 自定义哦我的Zsh主题:长提示消失/切断