首页 > 解决方案 > zsh:标准错误没有被重定向

问题描述

我为测试创建了一个空的导演

$ mkdir test

$ cd test

$ grep da *
zsh: no matches found: *

现在我正在尝试将错误重定向zsh: no matches found: *到文件。(我的目的只是为了测试和理解,请不要问我为什么要这样做)

$ grep da * 2> grep-errors.txt
zsh: no matches found: *

现在错误仍然可见

$ ls -al   
total 60
drwxr-xr-x   2 test users  4096 Mar  2 20:18 .
drwxr-xr-x 117 test users 53248 Mar  2 20:25 ..

该文件grep-errors.txt未创建

所以这里发生的事情有人可以解释。为什么错误没有被重定向到文件。

标签: zsh

解决方案


重定向仅适用于grep,但它zsh本身会在*未扩展到任何匹配文件时、在运行之前 grep或什至在zsh尝试处理重定向之前产生该错误。

一种解决方法是禁用该NOMATCH选项,以便*按字面意思传递给grep. 然后将运行并产生将写入文件grep的错误 ( )。grep: *: No such file or directory

% setopt NO_NOMATCH
% grep da * 2> grep-errors.txt
% cat grep-errors.txt
grep: *: No such file or directory

推荐阅读