答案 0 :(得分:1)
你的尝试很接近:
ls | tee /dev/tty | grep poem | wc -l >number_of_poems
tee /dev/tty
将所有ls
输出复制到终端。这满足了"输出ls应该显示在屏幕上的要求。"同时还将ls
的输出发送到grep
的标准输出。
这可以进一步简化:
ls | tee /dev/tty | grep -c poem >number_of_poems
请注意,这些解决方案都不需要bash
。两者都适用于较小的shell,尤其是dash
,这是类似debian的系统中的默认/bin/sh
。
答案 1 :(得分:1)
如果允许使用bash,请使用进程替换作为tee的接收器
ls | tee >( grep -c poem > number.of.poetry.files)
答案 2 :(得分:0)
这听起来像是家庭作业:)
#!/bin/bash
ls
ls -l | grep -c poem >> file.txt
第一个ls将在屏幕上显示输出 下一行使用一系列管道输出包含“诗”
的文件/目录的数量如果其中有5个带有诗的文件,则file.txt将为5。如果file.txt已存在,则新计数将附加到结尾。如果您希望每次都覆盖文件,请将该行更改为阅读ls -l | grep -c poem > file.txt