使用Google翻译翻译自: http://www.ee.surrey.ac.uk/Teaching/Unix/unix3.html
由UNIX命令启动的大多数进程将输出写入标准输出(即终端屏幕),并且许多进程从标准输入(即键盘)读入。还有标准错误,其中进程默认将其错误消息写入终端屏幕。
我们已经看到一个使用cat命令将文件的内容写入屏幕的例子。
现在键入cat而不指定要读取的文件
%cat
然后在键盘上键入几个字,然后按[ 回车 ]键。
最后按住[ Ctrl ]键,按[ d ](简写为^ D)结束输入。
发生了什么?
如果您在运行cat命令时没有指定要读取的文件,则会从标准输入(键盘)读取,并在接收到“文件结束”(^ D)时将其复制到标准输出(屏幕)。
在UNIX中,我们可以重定向命令的输入和输出。
我们使用>符号重定向命令的输出。例如,要创建一个名为list1的文件,其中包含一个水果列表,请输入
%cat> list1
然后输入一些水果的名字。在每个之后按[ 回车 ]。
pear
banana
apple
^ D {这意味着同时按[Ctrl]和[d]}
cat命令会读取标准输入(键盘),>将标准输出(通常是屏幕)重定向到list1文件中
要读取文件的内容,请键入
%cat list1
使用上述方法,创建另一个名为list2的文件,其中包含以下水果:orange, plum, mango, grapefruit。读取list2的内容
>>将标准输出附加到文件。所以要添加更多的项目到文件list1时,键入
%cat >> list1
然后输入更多水果的名字
peach
grape
orange
^D(Ctrl+d 停止)
要读取文件的内容,请键入
%cat list1
你现在应该有两个文件。一个包含六个水果,另一个包含四个水果。
现在我们将使用cat命令把list1和list2连接成一个名为biglist的新文件。键入
%cat list1 list2> biglist
这样做会 依次读取list1和list2的内容,然后将文本输出到文件biglist中
要读取新文件的内容,请键入
%cat biglist
我们使用<来重定向命令的输入。
sort命令按字母顺序或数字顺序排序一个列表。键入
%sort
然后输入一些动物的名字。在每个之后按[回车]。
dog
cat
bird
ape
^D(Ctrl+d 停止)
输出将是
ape
bird
cat
dog
使用<您可以将输入重定向为来自文件而不是键盘。例如,要排序水果列表,请键入
%sort <biglist
排序的列表将被输出到屏幕。
要将已排序的列表输出到文件,请键入
%sort <biglist> slist
使用cat来读取文件的内容SLIST
要查看谁在使用系统,请输入
%who
获取这些人名列表的排序结果的一种方法是输入
%who> names.txt
%sort <names.txt
这有点慢,而且完成后你必须记得删除名为names.txt的临时文件。你真正想要做的是将who命令的输出直接连接到sort命令的输入。这正是管道所做的。管道的符号是垂直符|
例如,输入
%who|sort
将得到与上述相同的结果,但更快更干净。
要了解有多少用户登录,请键入
%who| wc -l
使用管道,显示包含 字母“p” 的list1和list2的所有行,并对结果进行排序。
命令 | 含义 |
---|---|
command > file | 将标准输出重定向到文件 |
command >> file | 将标准输出附加到文件 |
command < file | 从文件重定向标准输入 |
command1 | command2 | 将command1的输出通过管道连接到command2的输入 |
cat file1 file2 > file0 | 将file1和file2合并为file0 |
sort | 排序数据 |
who | 列出当前系统登录的用户 |