概述:
shell是我们和linux接触的通道,灵活使用使用shell就能更好的掌控linux,想学好shell首先是要理解熟记很多的命令,这就相当于英语积累的单词一样,单词记得多了,英语自然就好了,但是想要真正变成英语达人还要了解些语法,shell也是一样,命令是单词,也有他的语法,我们这次主要讨论语法部分。
expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为系统管理员的的一个强大助手。简单的说,如果没有expect的话很多需要交互的场景我们就需要一直守在计算机前面进行输入,如果输入是主要步骤还好,我们输入完就结束任务了,那万一,我们有一个任务是在凌晨3点以root身份执行一个脚本呢,我们需要的输入只是一个密码,却要一直在电脑前等到3点,想想都很亏。
1 bash的一些内建参数
1.1 "!"的妙用
!*:上一个命令的所有参数
[root@foundation3 mnt]# ls -a -l
total 41616
drwxrwxrwx. 3 root root 84 Dec 13 17:16 .
。。。省略
[root@foundation3 mnt]# echo !*
echo -a -l
-a -l
!^:上一条命令的第一个参数
[root@foundation3 mnt]# ls -a -l
total 41616
drwxrwxrwx. 3 root root 84 Dec 13 17:16 .
。。。省略
[root@foundation3 mnt]# echo !^
echo -a
-a
!$:上一条命令的最后一个参数
[root@foundation3 mnt]# ls -a -l
total 41616
drwxrwxrwx. 3 root root 84 Dec 13 17:16 .
。。。省略
[root@foundation3 mnt]# echo !$
echo -l
-l
!#:意义不明。。。。
[root@foundation3 mnt]# echo !#
echo echo
echo
!<comm>:<num>:显示上一个comm命令的第num个参数
[root@foundation3 mnt]# cp scan /media/
[root@foundation3 mnt]# echo !cp:2
echo /media/
/media/
[root@foundation3 mnt]# echo !cp:1
echo scan
scan
!(file):除去file代表的文件
[root@foundation3 tmp]# ls
file10.pdf file1.txt file3.pdf file4.txt file6.pdf file7.txt file9.pdf
file10.txt file2.pdf file3.txt file5.pdf file6.txt file8.pdf file9.txt
file1.pdf file2.txt file4.pdf file5.txt file7.pdf file8.txt file.pdf
[root@foundation3 tmp]# rm -rf !(*.pdf)
[root@foundation3 tmp]# ls
file10.pdf file2.pdf file4.pdf file6.pdf file8.pdf file.pdf
file1.pdf file3.pdf file5.pdf file7.pdf file9.pdf
上面的演示就是把.pdf结尾以外的文件都删除。
1.2 shell的位置参数
位置参数的个数:$#(通常用来判断是否加入了参数)