我是unix的初学者,并且已经完成了以下任务:
列出主目录的内容,将此输出存储在名为newHomelist的文件中,然后计算此输出的行。
首先,我检查了我的结果:
ls ~/ | wc -l
我从中得到结果'20'。
然后我尝试了以下内容:
ls ~/ > newHomelist | wc -l
然而,这给了我'0'的结果。我想我理解为什么这样做,因为我已经移动了文件中的所有行,因此它没有计算任何东西。我想我需要进入文件然后计算行数。像这样:
ls ~/ > newHomelist | more newHomelist | wc -l
然而,我得到的结果是'23'。这不是我期待的结果。有人能告诉我哪里出错了吗?
谢谢
答案 0 :(得分:1)
如果你需要在单行中进行,你可以使用tee
分割输出(stdout)(参见' man tee')
$ ls ~/ | tee newHomelist | wc -l
使用>
将stdout重定向到文件上意味着它不适用于管道中的后续命令。
您也可以将其作为多个命令
$ ls ~/ > newHomeList
$ wc -l newHomeList
# or the two commands combined onto one line as
$ ls ~/ > newHomeList ; wc -l newHomeList