Unix 列出目录中的文件,将输出存储在文件中,然后计算输出中的行数

Unix 列出目录中的文件,将输出存储在文件中,然后计算输出中的行数,unix,Unix,我是unix的初学者,被赋予以下任务: 列出主目录的内容,将此输出存储在名为newHomelist的文件中,然后计算此输出的行数 首先,我检查了我的结果应该是什么: ls ~/ | wc -l 我从中得到结果“20” 然后,我尝试了以下几点: ls ~/ > newHomelist | wc -l 然而,这给了我“0”的结果。我想我理解它为什么这样做,因为我已经移动了文件中的所有行,因此它不计算任何内容。我想我需要进入文件,然后数一数行。大概是这样的: ls ~/ > newH

我是unix的初学者,被赋予以下任务:

列出主目录的内容,将此输出存储在名为newHomelist的文件中,然后计算此输出的行数

首先,我检查了我的结果应该是什么:

ls ~/ | wc -l
我从中得到结果“20”

然后,我尝试了以下几点:

ls ~/ > newHomelist | wc -l
然而,这给了我“0”的结果。我想我理解它为什么这样做,因为我已经移动了文件中的所有行,因此它不计算任何内容。我想我需要进入文件,然后数一数行。大概是这样的:

 ls ~/ > newHomelist | more newHomelist | wc -l
然而,我得到的结果是“23”。这不是我期望的结果。有人能告诉我哪里出了问题吗


谢谢您

如果您需要在一行程序中执行此操作,您可以使用
tee
拆分输出(stdout)(请参阅“man tee”)

使用
将stdout重定向到文件意味着它不可用于管道中的后续命令

您也可以使用多个命令来执行此操作

$ ls ~/ > newHomeList
$ wc -l newHomeList
  # or the two commands combined onto one line as
$ ls ~/ > newHomeList ; wc -l newHomeList

任务是否声明需要使用单个命令执行此操作?使用几个用分号(或换行符)分隔的命令怎么样?顺便说一句,
more
是交互式的,添加了更多的行,因此行数增加了。虽然它属于“重定向和管道”一节,我认为应该用一个命令完成。根据您的建议,我尝试了以下方法:ls~/>newHomelist;更多newHomelist | wc-l这给了我“20”的正确输出,所以我对这个结果很满意,谢谢。现在,我将详细阅读您所说的“更多是交互式的”是什么意思。如果一个程序需要用户输入(并且通常打印输出作为响应),那么它就被称为交互式的
more
是一种允许浏览大型文件的寻呼机。如果有更多内容要显示,它会在屏幕的底部打印一个名为
--More--
的提示,因此它的名称为。请尝试查看更多的文本文件。然后在
--更多--
提示符下键入
h
以获取帮助。这是用户输入的
更多
将作出反应。谢谢。这对我有帮助。我现在明白了“tee”的作用了。:)
$ ls ~/ > newHomeList
$ wc -l newHomeList
  # or the two commands combined onto one line as
$ ls ~/ > newHomeList ; wc -l newHomeList