1. Shell概述
1.1 Shell简介
(1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
(2)Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
1.2 Shell的分类
(1)Bourne Shell:从1979年起Unix就开始使用Bourne Shell,其主文件名为sh。
(2)C Shell:主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名。
(3)Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh。
(4)Bash: Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell。
1.3 Linux支持的Shell
(1)/etc/shells
2. Shell脚本的执行方式
2.1 echo输出命令
(1)命令格式:echo [选项] [输出内容] (选项“-e”支持反斜线控制的字符转换)
控制字符 |
作用 |
\\ |
输出\本身 |
\a |
输出警告音 |
\b |
退格键,也就是向左删除一个字符 |
\c |
取消输出行末的换行符。和“-n”选项一致 |
\e |
Escape键 |
\f |
换页符 |
\n |
换行符 |
\r |
回车键 |
\t |
制表符,也就是Tab键 |
\v |
垂直制表符 |
\0nnn |
按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数 |
\xhh |
按照十六进制ASCII码表输出字符。其中hh是两位十六进制数 |
(2)应用举例:
①# echo 'hello world!' //但不能写成# echo "hello world!" 。因为!有特殊的作用
②演示“-e”选项的作用
[root@localhost ~]# echo "abc"
abc
[root@localhost ~]# echo "ab\bc"
ab\bc
[root@localhost ~]# echo -e "ab\bc"
ac
[root@localhost ~]# echo -e "a\tb\tc\nd\te\tf"
a b c
d e f
[root@localhost ~]# echo -e "\x61\t\x62\t\x63"
a b c
③输出颜色:#echo -e "\e[1;31m abcd \e[0m" //\e[1;表示开启颜色输出,\e[0m表示结束颜色输出
#30m=黑色,31m=红色,32m=绿色,33m=黄色
#34m=蓝色,35m=洋红,36m=青色,37m=白色
2.2 第1个脚本程序
(1)脚本程序
(2)脚本执行
①直接运行:
#chmod 755 hello.sh
#./hello.sh //使用绝对路径或相对路径
②通用Bash调用执行脚本:
#bash hello.sh //无须为hello.sh赋执行权限。表示通过bash程序来解释hello.sh文件。
(3)处理Windows和Unix换行符不同的问题:
①Windows中文件换行符为^M$,而Linux下为$,这会导致Windows下编写的bash文件在Linux下不能被正确读取。可以用#cat –A hello.sh查看出来。
②解决方案:#dos2unix hello.sh (命令的安装:#yum –y install dos2unix, unix2dos则进行相反的操作)