1、为命令cal 在您的home 目录下建立一个格式化的man page 拷贝,文档名为cal.man
2、用哪个单条命令能够配置您的输入是键盘输入、输出是打印机输出?
3、您如何将/usr/bin 下的名字以'c'或'd'开头的文档长列表输出到打印机?
实验3答案
2、lpr
lpr 若给出文档名作为参数,则他打印文档内容。假如没有文档名给出,则他从标准输入读入数据。当您按
3、ls -l /usr/bin/[cd]* | lpr
单元九实验
字符处理
估计用时:60分钟
目标:熟悉几种Red Hat Linux 上的字符处理程式。
实验前准备:一台装有Red Hat Linux 的机器,并在您的home 目录中有/etc/passwd 的拷贝。
实验1a:基本字符处理
任务:
1、拷贝/etc/passwd 到您的home 目录
$ cd
$ cp /etc/passwd .
2、每个帐号都会在/etc/passwd 中占有一行。使用wc 统计passwd 文档的行数。
$ wc -l passwd
您系统上的帐号数有_______个。
3、生成一个用户shell 列表并将他存在另一个文档中:
$ cut -d: -f7 passwd > shells
4、使用cat 查看您的shells 文档。您将感到虽然文档存储了信息但是组织得不理想。将这些行排序并输出到一个新文档:
$ sort shells > sorted.shells
5、您的文档包含了多个重复的值。使用uniq 来统计每个值出现多少次:
$ uniq -c sorted.shells > uniq.sorted.shells
为什么在传给uniq 之前必须先要将输出排序?
(提示:试试uniq -c shells 和 man uniq)
6、要生成一个数字逆序排列的,您机器上使用的shell(当然您机器上使用的shell 数可能和这里列出的不同):
$ sort -nr uniq.sorted.shells
18 /sbin/nologin
5 /bin/false
4 /bin/bash
2 /dev/null
1 /sbin/shutdown
1 /sbin/halt
1 /bin/sync
1
结果:
得到一个数字逆序排列的、和系统中帐号相关的shell 列表。
实验1b:练习
设计,然后写下每个练习的解。记住,答案是您执行的命令,而不是输出。每个解应该只有一句命令,并且至少由一个管道实现。您可能需要翻阅man page。答案在实验最后给出。
1、/usr/bin 目录下有多少文档?输出应该是单个的整数。提示:设计一个命令能够每行列出一个文档,然后想想如何统计这些行数。
2、对/usr/share/doc/nautilus-1.06/NEWS 作一次拼写检查。
3、练习2 得到多少不重复的(unique)的单词?
4、练习2 中,输出重复出现超过一次的单词列表。
实验2:用grep 作字符处理
任务:
1、使用grep 显示您home 目录下的passwd 文档(/etc/passwd的拷贝)中,以'g'开头的帐户:
$ grep ^g passwd
2、显示任何的使用bash shell的帐户:
$ grep bash$ passwd
3、显示任何不使用bash shell 的帐户
$ grep -v bash$ passwd
4、为了演示diff 的使用,建立一个修改过的passwd 拷贝。使用grep 删除任何含有'N'或
'P'的行:
$ grep -v [NP] passwd > modified.passwd
5、最后,用tr 转换任何的大写字母为小写字母:
$ tr "A-Z" "a-z" < modified.passwd > modified2.passwd
6、使用cat 查看您原先的passwd 和modified2.passwd。假如不仔细看的话,区别难以找到。
使用diff 生成两个文档之间差异的列表,用统一格式:
$ diff -U 0 modified2.passwd passwd
实验3:正则表达式和字符操作
设计,然后写下每个练习的解。记住,答案是您执行的命令,而不是输出。您可能需要翻阅
man page。答案在实验最后给出。
任务:
1、试着用grep 将/usr/share/dict/words 中和查找项相符的项输出。例如,显示任何包含
fish 的项:
$ grep fish /usr/share/dict/words
仔细比较上面和下面的输出,并找出grep 的-i 开关的用处:
$ grep -i fish /usr/share/dict/words
2、使用grep 的man page,构造一个命令能够每行含有在words 文档中找到的fish 项的输出,且每行前后都空两行(提供其他的内容),然后执行他。
3、使用grep 的man page,构造一个命令能够输出fish 项在words 文档中找到的个数,然后执行他。
4、使用grep 的man page,构造一个命令能够将fish 项在words 中匹配的行,包括他的行号
。在哪行找到了starfish?
5、列出/usr/share/dict/words 文档中含有t、一个元音字母、接着是sh的单词。
6、为/usr/share/dict/words 构造一个匹配abominable, abominate, anomie 和 atomize(
但不匹配其他)的正则表达式。
7、在/usr/share/dict/words 中有多少词包括t,一个元音字母,以sh 结尾的单词?构造命令并执行,他应只输出个数。
8、列出/usr/share/dict/words 中只含16个字母的单词。
9、/usr/share/doc 是个有用的信息源。我们在后面几个任务中将使用这个目录中的文档。
列出含有词'expansion'的普通文档的文档名
10、显示'Linux'这个词在/usr/share/doc/bash-2.05a目录下的文档中的出现频率。但是不要
输出含0次的文档。提示:先统计任何文档的个数,然后考虑您如何禁止和某一项相匹配的行的输出。
11、列出在/usr/share/doc 下任何含有'Havoc' 的文档的文档名
12、您能够使grep 递归查找目录下的文档:
grep -R --include=
使用这种技术,将/usr/share/doc 下任何含有'ethernet' 的文档列出。
13、只显示那些文档的文档名
14、特别的挑战性任务:
设计一个命令,能够显示在练习13显示的文档中含有'authentication'的文档。记住
backquotes(``)能够先计算内表达式,然后将其替换命令行中的相应内容。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




