【问题标题】:How to show command output in stdout and also transfer it to pipe如何在标准输出中显示命令输出并将其传输到管道
【发布时间】:2014-05-06 18:54:37
【问题描述】:

假设我有闲置的 cmd:

ls | grep dir

如果有名称包含dir 的文件夹,那么将看不到它们。 如果没有,那么我根本看不到任何输出。

现在,我想要查看ls 命令的输出,然后还要查看grep 之后的最终输出。

让我们这样说:

>>ls | grep dir
filea fileb filec
filed dir1  dir2

dir1 
dir2

前两行是ls 的结果,后两行是grep 命令的结果。

我该怎么做?

【问题讨论】:

  • 检查这个 stackoverflow.com/questions/5677201/…> ls |tee /dev/tty |grep Public 你可以使用 tty 命令找到终端并在这里替换

标签: bash


【解决方案1】:
ls |tee /dev/tty |grep dir

会这样做,尽管它不会在两个部分之间放置空格。

【讨论】:

  • 作为一个魅力 :) THX
【解决方案2】:

我有点作弊,但你不能一个接一个地执行两个命令吗? 喜欢(添加回声以在它们之间放置一些空间):

 ls && echo && ls | grep dir

【讨论】:

    【解决方案3】:

    最简单的方法是运行 ls 两次:

    ls; ls -1 | grep dir
    

    请注意-1选项。 grep 是面向行的,这就是为什么 ls 应该每行打印一个目录条目。

    【讨论】:

    • -1 仅在输出为终端时才需要;在写入管道或文件时,-1 是有效隐含的。
    猜你喜欢
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多