手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

RHCE课堂实验笔记

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  单元八实验
  标准输入输出和管道
  估计用时:30分钟
  目标:熟悉Red Hat Linux 系统上的标准输入输出和管道实现。
  实验前准备:一台装有Red Hat Linux 系统的机器。
  实验1:标准输入和输出
  任务:
  1、打开您平常使用的文本编辑器并建立两个文档:
  packages1.txt 应该含有下列8行:
  apache
  galeon
  mozilla
  postgresql
  procinfo
  rpmfind
  sawfish
  squid
  packages2.txt 应该含有下列6行:
  anaconda
  openssh
  gnome-core
  samba
  sendmail
  xscreensaver
  2、cat 是Linux 最简单的文本过滤器(filter)。他的工作就是将他的输入——作为他的一个参数的文档名,或是从标准输入中输入,并且输出不变地输出他到标准输出。
  用packages1.txt 来测试cat:
  $ cat packages1.txt
  3、假如cat 后没有跟参数,他就期待从标准输入的输入。这意味着假如您键入cat 后按回车,似乎什么事也没发生。实际上,cat 在耐心的观察标准输入,等待输入的到达。假如您打入一些字符并按回车键,cat 将您输入的送到标准输出——即原封不动的将您的输入送出。结束
  cat 命令,按。这是通用的输入结束信号。
  $ cat
  Type some sample text, then press return.
  
  4、多数Linux 文本进程命令都以过滤器实现(filter),这意味着他能够从标准输入读出,然后对他做一些事,然后送到标准输出。这些命令和cat 很像,但是他们的输出和输入不同。
  本单元介绍过的tr,就是这样一个filter。假如您给tr 两个字串作为参数,那么他从标准输入中读出,然后从第一个字串的字母到第二个字串中的字符进行翻译,然后将翻译后的字串写到标准输出中。
  重复前一个例子,改用tr。给出的参数将元音字母从小写改为大写。
  $ tr 'aeiou' 'AEIOU'
  Type some sample text, then press return.
  
  5、要告诉shell 程式的输出不要送到标准输出,而是要重定向到一个文档,那么使用重定向符 >
  重复第一个cat 的例子,重定向标准输出到packages1.catfile。这将创建一个packages1.txt的拷贝。cat 这个输出文档,并且用diff 和ls 检验他是否和原先的文档拥有相同的内容。
  $ cat packages1.txt > packages1.catfile
  $ cat packages1.catfile
  $ diff packages1.txt packages1.catfile
  $ ls -l packages1*
  6、在一个已存在的文档中追加内容,使用>> 操作符。
  在packages1.catfile 后追加packages2.txt 的内容,并且检验结果
  $ cat packages2.txt >> packages1.catfile
  $ cat packages1.catfile
  7、假如没有文档名作为参数给cat,并且标准输出(原书写standard input,我觉得错了)定向为一个文档,那么屏幕上打的任何字符直到按下,将会被重定向到那个文档。这种方法能够很容易建立一个新文档。
  $ cat > typedin.txt
  This time , when text is typed at the keyboard,
  It is not echoed back to the screen,
  It is instead redirected to the file typedin.txt
  
  $ ls -l typedin.txt
  $ cat typedin.txt
  8、重复前面的步骤,替换cat 为tr 命令。
  $ tr 'aeiou' 'AEIOU' > trfile.txt
  This time , when text is typed at the keyboard,
  It is not echoed back to the screen with the translation made,
  It is instead redirected to the file trfile.txt
  
  $ ls -l trfile.txt
  $ cat trfile.txt
  9、使用set -o 显示当前bash 的noclobber 选项。检验当重定向输出到一个文档时您的确能够“修补(clobber)”该文档。
  $ set -o
  $ ls -l /tmp > trfile.txt
  $ ls -l trfile.txt
  $ cat trfile.txt
  10、使用set 修改noclobber 选项,然后检验操作:
  $ set -o noclobber
  $ echo "new contents" > trfile.txt
  bash: foo: cannot overwrite existing file
  11、cat 能够接受一个文档名,或一个重定向的文档作为标准输入。测试下面两个命令:
  $ cat packages1.txt
  $ cat < packages1.txt
  12、然而,tr 不允许文档名作为参数,他需要从标准输入的输入。
  $ tr 'aeiou' 'AEIOU' < packages1.txt
  13、标准输出和输入能够同时被重定向,就像下面这个例子。和上面相同,从packages1.txt
  定向输入到tr,但是这次需要重定向输出。屏幕上没有输出——他输出到了文档
  packages1.trfile.txt。
  $ tr 'aeiou' 'AEIOU' < packages1.txt >pacakges1.trfile.txt
  $ ls -l packages1.txt packges1.trfile.txt
  $ cat packages1.trfile.txt
  实验2:管道
  1、为了将标准输出从一个命令定向到另外一个命令作为标准输入,引入了一种叫做管道的特别的重定向机制。
  若没有管道,打印一个目录列表,至少需要两步——而且更有一个文档作为打印后没用的副产品。需要第三步来删除他。(注意,这些步骤当您没有打印机时仅作演示使用)
  $ ls -l > /tmp/ls.txt
  $ lpr /tmp/ls.txt
  $ rm /tmp/ls.txt
  假如使用管道,这三步能够在一个短命令中完成——并且无需建立临时文档、再删除。注意lpr 从标准输入中得到输入,所以没有必要加任何参数。
  $ ls -l | lpr
  2、管道经常用于一个可能生成多行的命令,输出到less。命令执行的顺序是从左开始。当输出生成后,通过管道传到在右边等待的命令。less 从一个管道中等待输入,所以无需加任何参数。(用空格键翻页,然后按q退出)
  $ ls -l /usr/bin | less
  实验3:练习
  假如您需要答案,答案在后面列出。但请用本单元提供的信息和man page努力完成这些练习。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!