【发布时间】:2020-04-14 09:16:25
【问题描述】:
当我在包含太多文件的目录中运行ls -l | head 时遇到ls: write error: Broken pipe。我在运行ls | head 时没有遇到这个问题。我只是想知道为什么-l 选项会导致这个问题。我也想知道如何解决这个问题,但仍然打印了很长的文件信息。
要重现我的问题,您可以先在 Jupyter Notebook 提供的终端中打开一个,
然后运行以下代码。
cd
mkdir test
cd test
for i in {1..200}; do touch $i; done
ls -l | head
输出如下。
total 0
-rw-rw-r-- 1 s1855106 s1855106 0 Apr 14 10:14 1
-rw-rw-r-- 1 s1855106 s1855106 0 Apr 14 10:14 10
-rw-rw-r-- 1 s1855106 s1855106 0 Apr 14 10:14 100
-rw-rw-r-- 1 s1855106 s1855106 0 Apr 14 10:14 101
-rw-rw-r-- 1 s1855106 s1855106 0 Apr 14 10:14 102
-rw-rw-r-- 1 s1855106 s1855106 0 Apr 14 10:14 103
-rw-rw-r-- 1 s1855106 s1855106 0 Apr 14 10:14 104
-rw-rw-r-- 1 s1855106 s1855106 0 Apr 14 10:14 105
-rw-rw-r-- 1 s1855106 s1855106 0 Apr 14 10:14 106
ls: write error: Broken pipe
【问题讨论】:
-
我无法重现此内容,但请查看 How can I fix a broken pipe error。可能您的 shell(以及由此启动的任何命令)忽略了 SIGPIPE(作为说明,
(trap '' PIPE; ls -l | head)将可靠地重现您的问题)。您可以使用内置的trap -p来查看bashshell 的信号配置@ -
我无法重现此错误 - 我尝试了 20,000 个文件,但
ls -l | head按预期工作 - 可能与您的 shell(bash v5?)或您的 ls 命令(gnu ls ?) ? -
感谢大家的帮助!我现在发现如果使用 Jupyter Notebook 提供的终端会遇到这个问题。如果我使用 Git Bash 等其他终端,一切都很好。我已相应地编辑了我的问题,感谢您的进一步帮助。我使用 Jupyter Notebook Terminal 主要是因为我想做网页上的所有事情。
标签: bash shell jupyter-notebook