Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 在emacs shell中,命令的运行速度是否相当慢?我如何防止这种情况,但仍然使用它?_Unix_Emacs - Fatal编程技术网

Unix 在emacs shell中,命令的运行速度是否相当慢?我如何防止这种情况,但仍然使用它?

Unix 在emacs shell中,命令的运行速度是否相当慢?我如何防止这种情况,但仍然使用它?,unix,emacs,Unix,Emacs,今天,我在emacs shell中运行了如下命令: ./someBinary | grep foo | cut -c30- | sort | uniq -c 在bash中,这需要一点时间,但不会太长(大约15秒),因为输出很容易超过一百万行。然而,当我在emacs shell中运行这个命令时,我等待了一个多小时,它仍然在运行,如果我使用top检查,进程显然在工作。我想知道这是否是因为emacs实现了我在lisp中使用的unix工具——如果这是原因,是否有办法将其默认为系统工具。否,emacs没

今天,我在emacs shell中运行了如下命令:

./someBinary | grep foo | cut -c30- | sort | uniq -c

在bash中,这需要一点时间,但不会太长(大约15秒),因为输出很容易超过一百万行。然而,当我在emacs shell中运行这个命令时,我等待了一个多小时,它仍然在运行,如果我使用
top
检查,进程显然在工作。我想知道这是否是因为emacs实现了我在lisp中使用的unix工具——如果这是原因,是否有办法将其默认为系统工具。

否,emacs没有实现这些工具。这与从命令行运行的工具相同。然而,输出是通过各种管道传递的,并且emacs可能应用了各种格式,这很可能是极端减速的罪魁祸首。一个简单的尝试是在shell缓冲区中禁用字体锁定模式。

Emacs在shell缓冲区中捕获最终输出,并应用字体锁定和其他分析(例如行号计数)来显示它。它还会滚动显示以显示最新的输出。虽然Emacs提供了剔除病态的长命令输出的功能,但它并没有真正针对数以百万行计的大量输出进行优化,因此它的性能明显比终端仿真器差,从而减慢了整个流程


如果您对输出不感兴趣,请将其重定向到
/dev/null
tail-500
,这是您在典型的终端回滚中可以看到的内容。

您没有说是使用
eshell
还是
shell
。根据我的经验,
shell
工作得很好,但是
eshell
对于任何想要将>1k条线穿过管道的东西来说都是完全不可用的(这很糟糕,因为eshell的其他功能看起来相当不错)

注意:即使输出只有一行,只要您使用
,eshell也是慢的,因此它似乎是实际的
操作符(在eshell中的emacs lisp中实现)慢的