3.1 重定向
UNIX命令发起的大部分进程是输出在标准输出中的(也就是终端屏幕),输入也是来自
于标准输入(也就是从键盘读取)。还有就是标准错误输出,进程会输出错误信息,默
认也是终端屏幕。
我们已经学习了cat命令来展示文件内容。
输入没有参数的cat
% cat
之后用键盘随便输入些什么然后敲击[Enter]键。
最后按住[Ctrl]键的同时按下[d]键,就会终止输入。
如果运行没有输入参数的cat命令,就会从标准输入进行读取,也就是键盘,最后接受一个文件终止符也就是
[Ctrl]+[d]作为结束。
在UNIX中,对于输入和输出我们都可以进行重新设置,叫做重定向。
3.2 输出重定向
使用符号>来重定向输出。例如,创建一个叫做list1的文件来包含一系列水果的名字。
% cat > list1
之后输入水果的名字
pear
banana
apple
之后cat命令会读入标准输入,输出到重定向的文件中。
习题 3a
使用上面的方法,创建另一个文件list2,包含以下信息,orange,plum,mango,grapfruit。读取list2的信息。
3.2.1 在文件尾部追加
符号>>的作用是将标准输出追加到一个文件尾部
% cat >> list1
之后再输入信息
peach
grape
orange
现在应该已经有两个文件了list1和list2.
我们现在使用命令cat来将两个文件合并成一个文件biglist。
`% cat list1 list2 > biglist
这个命令所做的事情就是把两个文件依次读取的内容输出到biglist文件中。
3.3 输入重定向
使用符号<,来进行输入的重定向。
命令sort会将列表进行字母或者数字的排序。
% sort
下面是一些动物的名字的排序。
dog
cat
bird
ape
使用符号<可以讲输入重定向为文件,而不是从键盘中读取。
% sort < biglist
之后排序好的结果会输出到屏幕上
当然,sort的输出也可以重定向到文件中
% sort < biglist >list
3.4 管道
来看看都有谁在使用系统,
% who
也可以对姓名进行排序
% who > names.txt
% sort < names.txt
实际上你想做得事情是把一个命令的输出作为另一个命令的输入,这个功能可以通过管道命令来实现,也就是符号一竖(|)
% who | sort
之后的结果会直接打印,简单明了
来找出有多少用户
% whi | wc -l
习题 3b
使用管道命令,展示所有list1和list2中带有字母p的行,之后对结果排序。
答案:
% cat list1 list2 | grep p | sort
小结
命令 | 功能 |
---|---|
命令 > 文件 | 重定向输出到一个文件 |
命令 >> 文件 | 在一个文件尾部追加输出 |
命令 < 文件 | 将输入重定向为一个文件 |
命令 I 文件 | 管道命令,将一个命令的输出作为另一个的输入 |
cat 文件1 文件2 > 文件0 | 将文件1文件2连接之后输出到文件0中 |
sort | 对数据排序 |
who | 打印当前登陆的用户 |