当我尝试以这种方式使用 grep 时:
service --status-all | grep network
Run Code Online (Sandbox Code Playgroud)
即使我通过管道将grep其限制为“网络”字符串,它仍然列出所有服务
事后:
注意到这篇文章解释了为什么命令会这样,这就是我喜欢 linux 的原因,总有一个很好的理由,但不需要直观
Fli*_*imm 42
尝试:
service --status-all |& grep network
Run Code Online (Sandbox Code Playgroud)
命令行应用程序可以打印到两个文本流,称为标准输出(stdout) 和标准错误(stderr)。默认情况下,终端只显示相同的输出。
stdout是给出的数字1,和stderr被赋予数字2默认情况下,重定向操作符,比如>,|以及<仅适用于标准输出,1号。
|&将 stdout 和 stderr 一起输送到右侧标准输入 (stdin) 流上的进程,这可以grep按预期工作。
我不知道service --status-all这里为什么要打印到 stderr,但总的来说,拥有一个单独的 stderr 流非常有用,因为即使在 stdout 静音时,它也能让您看到错误。
| 归档时间: |
|
| 查看次数: |
6076 次 |
| 最近记录: |