7. 在/usr/share/dict/words文件中包含多少先有字母t然后有一个元音字母,之后是sh的单词,只输出数量。
—————————————————————————————————————
8. 列出/usr/share/dict/words中刚好包含16个字母的单词:
—————————————————————————————————————
9. 我们将要使用/usr/share/doc文件夹来完成我们的下几个任务。
列出/usr/share/doc/bash-2.05b文件夹中,所有包含单词expansion的文件,
—————————————————————————————————————
10. 显示出―Linux‖在/usr/share/doc/bash-2.05b文件夹的文件中出现的次数,但是不要显示没有这个单词的文件。提示:先列出所有的文件,然后想如何使输出符合要求:
—————————————————————————————————————
11. 列出所有包含Havoc的文件名:
—————————————————————————————————————
步骤3:使用正则表达进行文本流编辑 任务:
想象你创建一个了名叫―cats‖的文件包含以下单词: cat
catalog
concatenate polecat Cat
猜想执行以下每个sed命令之后,把cats文件的每一行的执行后的结果写在后面:
1. sed 's/cat/dog/' cats cat __________
catalog __________
concatenate __________
polecat __________ Cat __________
2. sed 's/[Cc]at/dog/' cats cat __________
catalog __________
concatenate __________ polecat __________ Cat __________
3. sed 's/\\<[Cc]cat/dog/' cats cat __________
catalog __________
concatenate __________ polecat __________ Cat __________
4. sed 's/[Cc]at\\>/dog/' cats cat __________
catalog __________
concatenate __________ polecat __________ Cat __________
5. sed 's/\\<[Cc]at\\>/dog/' cats cat __________
catalog __________
concatenate __________ polecat __________ Cat __________
6. sed 's/\\<[Cc]at\\>/& and dog/' cats cat __________
catalog __________
concatenate __________ polecat __________ Cat __________
7. 创建一个'cats'文件,运行sed命令,测试你的答案。
步骤2的答案:
2.grep –B2 –A2 \/usr/share/dict/words 3.grep –c \/usr/share/dict/words 4.grep –n \/usr/share/dict/words 5.grep \/usr/share/dict/words
6. \或
\
诀窍是判断哪些字母是变化的哪些是不变的,注意想代替任意个任意字符要使用 ―.*‖。
7.grep –c \/usr/share/dict/words 8.grep \/usr/share/dict/words 或者:
grep –c \/usr/share/dict/words
9.grep –l expansion /usr/share/doc/bash-2.05b/*
10.grep –c \/usr/share/doc/bash-2.05b/* |grep –v \11.grep –R –l \/usr/share/doc
试验12 进程控制
估计时间: 30分钟
目标: 练习与进程控制有关的不同命令
试验的起点: 安装Red Hat Linux,并且能正常工作,有一个用户名和密 码都为student的用户
步骤1:进程控制
场景描述:
在这个任务中,大家会启用几个进程,然后使用bash的进程控制方法来控制它们。你将会在几个控制台间切换,注意你在哪个控制台上运行命令。
任务:
1. 开始使用student用户在第一、二个控制台(tty1、tty2)上登陆
2. 到tty1上,然后运行以下命令:
$ (while true; do echo –n A >> log; sleep 1;done)
3. 注意这个控制台现在因为在运行你的进程,所以处于忙的状态(进程在前台运行),这个进程不断把字母―A‖添加进~/log文件中去,到tty2上运行以下命令:
$ tail –f log
你会看到―A‖不断增长
4. 切换回控制台tty1,按下
5. 回到tty1,再次启动进程,运行jobs会显示job[1]在运行了,到tty2上看到文件继续增长了:
$ bg $ jobs
6. 到tty1上,按向上的箭头,重新找回第二步时的命令,把A换成B,在最后加上&,然后在把B换成C:
$ (while true; do echo –n B >> log; sleep 1;done) $ ^B^C
7. 输入jobs确认三个进程都在运行,到tty2上看到每秒钟会有三个字母增长。
8. 在第4步你按ctrl-z时,实际上是给进程发一个信号,使用kill命令也可以给它们发信号,使用kill来显示信号列表和标号,然后发一个SIGSTOP(19)的信号给job[1],到tty1上执行:
$ kill –l
$ kill -19 %1
9. 输入jobs,确认job[1]停止,到tty2上看结果是否停止。
10. 用kill重新启动进程,使用SIGCONT(18)信号,你会看到进程又重新启动了。(参考第8步的实现方法)
11. 使用kill命令的SIGTERM(15)信号,也是kill的默认信号,来结束三个进程,先结束job[2]和job[3]时,用jobs来看一下它们的状态是不是terminated的:
$ kill %2 %3 $ jobs
12. 结束最后的进程:
$ fg
$
相关推荐: