不带 FILE 参数的 wc 命令(从标准输入读取)

不带 FILE 参数的 wc 命令(从标准输入读取)

关于wc(字数)命令...我试图理解以下内容(man wc我在下面引用了其中内容,并在问题末尾添加了更长的引用)

没有 FILE 或 FILE 为 - 时,读取标准输入。

这到底是如何运作的?我什么时候输入“标准输入”?

在网上查找解释相当混乱。也许我只是缺少一些关于到底stdin是什么的基本信息。

man wc

SYNOPSIS 
     wc [OPTION]... [FILE]... wc [OPTION]... --files0-from=F
         
DESCRIPTION 
     Print newline, word, and byte counts for each FILE, and a total
     line if more than one FILE is specified. A word is a
     non-zero-length sequence of characters delimited by white space.
         
     With no FILE, or when FILE is -, read standard input.

答案1

wc-,该程序检测命令行上何时有 0 个文件名,或者只有“ ”,例如

wc
wc -

并且,在这些情况下,从 - STDIN(进程的流 0)读取。您永远不需要“键入标准输入”。

“父进程”,即创建进程的进程,负责设置 3 个 I/O 流:

0 STDIN - program input
1 STDOUT - normal program output
2 STDERR - error program output

STDIN如果需要的话,由程序来读取。

wc使用从标准输入流读取的示例:

$ echo 'hello world' | wc
      1       2      12

此处,wc计算到达其标准输入流的行数、单词数和字符数。该流echo通过 shell 通过管道连接到命令的标准输出流。该echo命令将字符串发送hello world到其标准输出流并wc接收它。

答案2

我的问题是我不熟悉使用ctrl+d“结束终端行输入”(在输入输入文本后)。

我想这是使用命令行的基本知识 - 但我无法通过阅读手册页并谷歌搜索如何广泛使用 wc 命令来弄清楚。

对于任何其他困惑的初学者来说,请按步骤操作:

输入wc -终端并点击ENTER

现在您可以开始输入内容。

完成后,按ctrl+d

相关内容