在Unix shell中,如果我想要组合stderr并stdout进入stdout流进行进一步操作,我可以在命令的末尾添加以下内容:
2>&1
Run Code Online (Sandbox Code Playgroud)
所以,如果我想head在输出上使用g++,我可以这样做:
g++ lots_of_errors 2>&1 | head
Run Code Online (Sandbox Code Playgroud)
所以我只能看到前几个错误.
我总是很难记住这一点,而且我不得不去查阅它,主要是因为我不完全理解这个特殊技巧的语法.
有人可以打破这个并按字符解释具体2>&1 意义吗?
我在bat文件中关闭了echo.
@echo off
Run Code Online (Sandbox Code Playgroud)
然后我做这样的事情
...
echo %INSTALL_PATH%
if exist %INSTALL_PATH%(
echo 222
...
)
Run Code Online (Sandbox Code Playgroud)
我得到:
该系统找不到指定的路径.
这两个回声之间的信息.
这条消息可能是什么原因以及为什么消息忽略了回声?
我正在尝试使用findstr在文件夹中搜索寻找一些字符串:
findstr /spin /c:"string" *
Run Code Online (Sandbox Code Playgroud)
但是它返回了很多Cannot open错误,这使我很难找到找到的确切匹配项。
使用Cmder命令时:
grep -r "string" .
Run Code Online (Sandbox Code Playgroud)
我收到Permission denied相同文件夹的错误。如果我使用命令:
grep -rs "string" .
Run Code Online (Sandbox Code Playgroud)
它给了我很好和干净的结果。是否有类似的标志findstr或cmd命令组合来执行相同的操作?
已经有一些关于findstr Cannot open错误的帖子,解释了什么是错误的以及如何解决它,但我不在乎它为什么会发生。我只希望命令忽略这些Cannot open行并仅打印出完全匹配的行。