输出到stderr改为stdout

时间:2015-10-02 10:57:56

标签: linux emacs stdout stderr eshell

我面临着一个奇怪的问题;每当我在min中运行一个命令时(这是一个简单的命令,一个复杂的应用程序或一个玩具示例),每个应该转向eshell的输出都转到stderr

这是一个例子:

stdout

我得到以下内容:

#include <iostream>

int main()
{
   std::cerr << "ERROR\n";
   std::cout << "OUTPUT\n";

}

使用~ $ ./a.out 2> /dev/null ERROR OUTPUT shell或外部终端启动相同的命令可以正常工作。即使在term内启动dashshbash,然后启动该计划也可以。

这是eshell错误吗?从我这边可能是一些错误的配置吗? 我的emacs版本为eshell

谢谢你, 尼古拉斯

1 个答案:

答案 0 :(得分:0)

来自the Eshell documentation

  

1.2 Eshell不是

     

Eshell不是bash或zsh等系统shell的替代品。想要在Emacs和外部进程之间移动文本时使用Eshell;如果您只想将输出从一个外部进程管道传输到另一个外部进程(然后是另一个,等等),请使用系统shell,因为Emacs的IO系统是面向缓冲区的,而不是面向流的,并且在此类任务中效率非常低。如果要在Eshell中编写shell脚本,请不要;要么写一个elisp库,要么使用系统shell。

     

有些事情Eshell表现不佳。它填补了IELM与你的系统外壳之间的利基,在那里有特殊的用例,并且在那个利基之外它不太理想。

这足以吓唬我使用它来支持bash或zsh。