'ls | 是什么意思?排序 file.txt' 做什么?

'ls | 是什么意思?排序 file.txt' 做什么?

我刚刚学习shell命令;更具体地说,我正在学习管道。

现在我无法区分以下命令:ls | sort file.txtsort file.txt。显然,应该是有区别的。

请有人能解释一下发生了什么事吗?

答案1

这两个命令的可见结果ls | sort file.txtsort file.txt相同的:

sort file.txt按字典顺序对行进行排序file.txt并输出结果。

ls | sort file.txt调用ls以生成当前目录中的名称列表。该列表将发送至sort file.txt.由于sort是从 读取file.txt,它将忽略来自 的名称列表ls,而是生成 的排序内容file.txt作为输出。的输出ls被丢弃,因为sort在本例中没有从其标准输入读取。

您可能想使用ls | sort它来对输出行进行排序ls(本来已经排序)。 sort会读取 的输出,因为它没有给出任何特定的文件名来读取,因此正在从其标准输入流(通过管道ls连接到 的输出流)读取。ls但请注意,使用需要文本行的工具可能无法处理 Unix 文件名,因为这些文件名可能包含换行符。

相关内容