目录
一、shell脚本概述
1.Shell脚本的概念
Shell(壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
2.Shel脚本应用场景
重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行······
二、shell的作用
1.用户的登录Shell
登录后默认使用的Shell程序,一般为 /bin/bash
不同Shell的内部指令、运行环境等会有所区别
查看操作系统默认支持的shell程序:cat /etc/shells
[root@bogon ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
[root@bogon ~]#
2.Linux中的Shell
最常用的就是bash、tcsh、csh、sh、nologin这些shell。这些shell都是依据Linux发展者的不同所创造出的不同版本。
sh:UNIX最初使用的 shell,已经被bash所替换。
bash:基准于GNU的框架下发展出的Shell,是 sh 的扩展。
csh:语法有点类似于c语言的Shell。
tcsh:整合了csh,提供更多的功能。
nologin:奇怪的shell,这个shell可以让用户无法登录主机。
注:bash(/bin/bash)是目前大多数 Linux 版本采用的默认 Shell。
三、编写和执行shell程序
1.Shell脚本的构成
脚本申明(解释器):若第一行为“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。
注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。
可执行语句:比如echo命令,用于输出" "之间的字符串
vim /root/first.sh
#!/bin/bash
# This is my first Shell-Script.
cd /boot
echo "当前的目录位于:"
pwd
echo "其中以 vml 开头的文件包括:"
ls -lh vml*
2.Shell脚本的运行
方法一:指定路径的命令,要求文件必须有 x 权限。
chmod +x /root/first.sh
指定绝对路径:/root/first.sh
指定相对路径:./first.sh
方法二:指定Shell来解释脚本,不要求文件必须有 x 权限。
sh 脚本路径:sh first.sh
source 脚本路径:. first.sh 或者 source first.sh
3.编程语言类型
编译型 :C C++ JAVA GO 代码文件需要先编译后,程序才能执行
解释型 :SHELL PYTHON 代码是边解释边运行
四、重定向和管道操作
1.管道操作
管道操作 |
将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。
ps aux | wc -l
echo "abc123" | passwd --stdin zhangsan
[root@bogon opt]# ls /opt
1.txt first.sh rh
[root@bogon opt]# ls /opt/ | rm -rf #rm -rf 需要指定对象,这里删除不了
[root@bogon opt]# ls
1.txt first.sh rh
[root@bogon opt]# ls /opt/ | xargs rm -rf #删除成功
[root@bogon opt]# ls
[root@bogon opt]#