Shell脚本基础
随着linux系统在企业中的应用越来越多,服务器的安全防护与自动化管理逐渐也变得越来越重要。在linux服务器的自动化维护工作中,除了计划任务的设置以外,shell脚本的应用也是非常重要的一部分。Shell脚本虽然只是一个简单的解释性语言,不会受到研发人员的重视,但是对于工程人员来说有着举足轻重的作用。它可以帮助工程人员减少日常的工作量,成为他们的万能工具箱。
简单了解shell脚本
Linux中的shell是什么?
Linux系统中的shell是一个特殊的应用程序,它介于操作系统内核和用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递到内核执行,并输出执行结果。
2. 常见的shell解释器
/bin/bash是目前大多数linux版本采用的默认shell。
注意:
通过/etc/shells文件可以了解当前系统所支持的所有shell种类
3. 什么是shell脚本?
Shell脚本与windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,同时给予该文件相应的执行权限,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比windows下的批处理更强大,比用其他变成程序编辑的程序效率更高。
学会编写脚本
使用工具
Vim编辑器
2. 脚本的编写步骤
(1)、新建以.sh为文件后缀的文件
脚本=脚本名+后缀(.sh)
(2)、编写脚本内容
示例:
[root@localhost~]#vi First.sh
#!/bin/bash
#This is my firstshell-script.
cd /home
echo “In the current directory:”
注解:“#!/bin/bash”这是一行特殊的脚本声明,表示此行以后的语句通过/bin/bash程序来解释执行;
其他以“#”开头的语句表示注释信息;对脚本内容进行解释;
“echo”命令用于输出字符串,将“”中的内容显示到屏幕上,对执行的脚本命令后的结果进行解释,以使脚本的输出信息更容易读懂。
(3)、赋予脚本可执行权限
[root@localhost ~]# chmod+x First.sh
(4)、执行脚本
[root@localhost ~]#./First.sh
In the current directory:
/home
注意:执行脚本的方法
〈1、 通过文件路径,如上所示:“./First.sh”的方式执行脚本,但要求文件本身具有X可执行权限。
〈2、 指定某个shell来解释脚本语句。可没有X可执行权限。
示例:
[root@localhost ~]# sh First.sh
[root@localhost ~]# . First.sh
〈3、 通过内部命令Source来加载文件中的源代码执行.X可执行权限可有可无。
[root@localohost ~]# source First.sh
重定向与管道操作
linxu系统交互设备文件
类型 |
设备文件 |
文件描述编号 |
设备 |
标准输入(STDIN) |
/dev/stdin |
0 |
键盘 |
标准输出(STDOUT) |
/dev/stdout |
1 |
显示器 |
标准错误(STDERR) |
/dev/stderr |
2 |
显示器 |
2. 重定向
在实际的linux系统维护中,可以改变输入输出内容的方向,而不使用默认的标准输入输出设备(键盘和显示器),这种操作被称为“重定向”。
(1)、重定向输出
重定向输出指的是将命令的正常输出结果保存到指定的文件中,而不是直接的显示在显示器的屏幕上。
示例:
“〉”将前端执行命令内容保存并覆盖到指定的文件中。
[root@localhost ~]# uname �Cp >CPUkernel.txt
[root@localhost ~]# cat CPUkernel.txt
i686
“》”在原内容不变的情况下追添新的内容到指定的文件中。
(2)、重定向输入
重定向输入指的是将命令中输入的途径由默认的键盘改为指定的文件,而不是等待键盘输入。
示例:
[root@localhost ~]# vimpasswd.txt //添加密码字符串
123.qwer@.k
[root@localhost ~]#passwd - - stdin jerry < passwd.txt //从passwd.txt提取密码
(3)、错误重定向(操作符“2)”)
错误重定向指的是将执行命令过程中出现的错误信息保存到指定的文件。
用途:收集程序执行错误的信息,为排错提供依据。对于shell脚本来说,将无关紧要的错误信息重定向到空文件/dev/null中,保持脚本输出的整洁。
注:“2>”覆盖目标文件内容,将正确和错误信息分开保存到不同文件。
“2>>”在目标文件后面追加内容,将正确和错误信息分开保存到不同文件。
“&>”将正确信息和错误信息保存到同一文件。