标准输入输出和管道及字符处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
标准输入输出和管道实验
估计时间:20 分钟
目标:熟悉Red Hat Linux 中的标准输入输出和管道
试验的起点:标准的Red Hat Linux
步骤1:标准输入和输出
任务:
1.使用vi编辑器创建两个文件:
packages1.txt 应该包含以下八行:
amanda
galleon
metacity
mozilla
postgresql
procinfo
rpmfind
squid
packages2.txt 应该包含以下6 行
anaconda
openssh
gnome-core
samba
sendmail
xscreensaver
2.cat 工具是最简单的linux 过滤器,它会默认把跟在后面的参数当作文件名,并把这个文件作为输入,如果没有文件名则把标准的输入作为自己的输入,然后将它们发送到标准的输出上去。现在我们来实验一下:
$cat packages1.txt
amanda
galleon
metacity
mozilla
postgresql
procinfo
rpmfind
squid
3.如果cat 后没有参数,则它会等待标准的输入,所以当你输入cat 命令后,再回车,然后什么也没有显示。输入cat后,cat 命令会监视标准输入,等待输入的到达。如果这个时候输入一些文本,再按回车,cat 就会把输入的内容当作自己
的输入,然后输出到标准的输出——显示器上,结束cat 的命令为按下ctrl-d,这是结束输
入的标志。
$ cat
输入一些文字,然后按回车。
^d (就是按ctrl-d)
abcdefg
abcdefg
4.大多数的文本处理命令是执行过滤操作,他们可以读标准输入,对输入做一些动作,然后把结果发送到标准输出去。这些命令就向cat 一样,只是对输入的处理不太一样。
tr 命令,也是过滤器命令,如果给tr 后加两个字符串做为参数,它会读取标准输入,然后把输入中包含着前一个字符串的字符变成第二个字符串,然后输出到标准输出去。
把刚才的命令换成tr,tr 将把字符串中有的字符变成大写的。
$ tr 'aeiou' 'AEIOU'
输入一些文字,然后按回车。
^d
abc
Abc
5.定义shell 不要把命令的输出发到标准输出上,而是重定向到一个文件中,我们使用> 来重定向重复cat 的例子重定向标准的输出到packages1.catfile,这样把输出到屏幕的东西输出到了文件中,效果就和重新copy了一份文件是一样的,cat 这个输出文件,然后用diff 和ls 确认原文件与package1.catfile 内容一样。
$ cat packages1.txt > packages1.catfile
$ cat packages1.catfile
$ diff packages1.txt packages1.catfile
$ ls –l packages1*
amanda
galleon
metacity
mozilla
postgresql
procinfo
rpmfind
squid
-rw-r--r-- 1 root root 67 Oct 26 17:16 packages1.catfile
-rw-r--r-- 1 root root 67 Oct 26 17:13 packages1.text
-rw-r--r-- 1 root root 67 Oct 26 17:14 packages1.txt
6.使用>>来重定向会把输出附加到已存在的文件的末尾。
把packages2.txt 文件中的内容附加到packages1.catfile 之后,然后检验结果。
$ cat packages2.txt >> packages1.catfile
$ cat packages1.catfile
amanda
galleon
metacity
mozilla
postgresql
procinfo
rpmfind
squid
anaconda
openssh
gnome-core
samba
sendmail
xscreensaver
7.如果输出重定向时cat 没有直接跟文件名的参数,那么cat 就会等待标准的输入,直到按下ctrl-d 作为结束,然后把
所有输入的东西重定向到这个文件中去。这样可以很容易的创建一个文本文件,
$ cat > typedin.txt
This time, when text is typed at the keyboard,
It is not echoed back to the screen.
Instead, it is redirected to the file typedin.txt.
^d
$ ls –l typedin.txt
$ cat typedin.txt
-rw-r--r-- 1 root root 131 Oct 26 17:28 typedin.txt
Instead, it is redirected to the file typedin.txt.
8.使用tr 取代cat,重复刚才的命令
$ tr 'aeiou' 'AEIOU' > trfile.txt
This time, when text is typed at the keyboard,
It is not echoed back to the screen.
Instead, it is redirected to the file typedin.txt.
^d