Linux学习63 shell脚本高级编程-信号捕捉实战
一、练习题
1、写一个脚本
2、将循环改成while循环
3、写一个脚本,实现:
a、能探测C类,B类或A类网络中的所有主机是否在线
b、提示用户输入一个IP地址或网络地址,获取其网络,并扫描其网段
二、信号捕捉
1、trap命令
a、列出信号
(1)、trap -l
(2)、kill -l
(3)、man 7 signal
b、信号是进程间通信的一种机制,而trap命令是shell进程自定义如何捕捉信号的,但是,trap不能够捕捉Tremil信号和KILL信号,即15号信号和9号信号,因为捕捉信号的目的在于可以定义一旦信号到达我们可以做什么操作,即可以定义不是其默认操作,这样一来可以想象如果一个进程可以捕捉KILL信号,那么任何人KILL他的时候他都可以说杀不死,即刀枪不入,这是不可取的。
2、现在我们来写一个脚本来捕捉信号
a、脚本如下
b、上面我们表示捕捉INT信号,然后我们执行脚本进行ping命令的时候当Ctrl + C中断时就会捕捉到此信号并输出echo的内容
c、另一种形式,即我们脚本捕捉到相应的信号并通过我们的命令来处理这个捕捉到的信号的相应事件该怎么进行,比如下面的脚本就是输出Quit并退出
3、trap用法
a、trap 'COMMAND' SIGNALS
b、常可以进行捕捉的信号
HUP,INT
c、用法示例
三、在bash中使用ACSII颜色
1、\033[31m hello \033[0m (正式使用的时候没有空格)
a、\033[31m 表示颜色控制开始符。 31m中表示控制前景色
(1)、##m的意思是
1)、左侧#:
3:前景色
4:背景色
如果要前景色和背景色一起使用可以分好隔开
2)、右侧#:表示颜色种类
1,2,3,4,5,6,7
(2)、还有#m 这种,他有斜体闪烁等功能
1)、斜体
2)、下划线
3)、闪烁
(3)、混合使用
b、\033[0m 表示结束符号
2、我们的提示符颜色也可以自己定义
a、我们提示符是PS1这个环境变量定义的,相应的值为: \用户@\主机 \目录
[root@www application]# echo $PS1 [\u@\h \W]\$
b、现在我们来自己定义用户名主机和目录的颜色
不过这样玩有副作用,有时候敲命令会卡主
3、diaglog命令,他能生成相应的对话框,可实现窗口化编程
a、各窗体控件使用方式
b、如何获取用户选择或键入的内容?
默认,其输出信息被定向到了错误输出流
4、《高级bash编程指南》