![不带 FILE 参数的 wc 命令(从标准输入读取)](https://linux22.com/image/198386/%E4%B8%8D%E5%B8%A6%20FILE%20%E5%8F%82%E6%95%B0%E7%9A%84%20wc%20%E5%91%BD%E4%BB%A4%EF%BC%88%E4%BB%8E%E6%A0%87%E5%87%86%E8%BE%93%E5%85%A5%E8%AF%BB%E5%8F%96%EF%BC%89.png)
关于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