shell脚本总结

shell脚本总结

什么是shell脚本呢?
Shell脚本(shell script)就是将要执行的命令按顺序保存到一个文本文件,并给该文件可执行权限,方便一次性执行的一个程序文件。主要是方便管理员进行设置或管理,可结合各种shell控制语句以完成更复杂的操作。常用于重复性操作、批量事物处理、自动化运维、服务运行状态监控、定时任务执行等。

[root@localhost days1]# date;who
Tue Jan 16 20:37:31 CST 2018
root pts/0 2018-01-16 19:33 (10.10.30.1)
创建一个shell脚本文件
shell脚本总结_第1张图片

date命令:
命令功能:date 可以用来显示或设定系统的日期与时间。
显示时间:
date命令可以按照指定格式显示日期,只键入date则以默认格式显示当前时间。如下:

date

Sat Jun 15 16:51:13 CST 2019
如果需要以指定的格式显示日期,可以使用“+”开头的字符串指定其格式,详细格式如下:
%H : 小时(00-23)
%M : 分钟(00-59)
%S : 秒(00-60)
%X : 相当于 %H:%M:%S
%Z : 显示时区
%d : 日 (01-31)
%m : 月份 (01-12)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000-9999)
%D : 直接显示日期 (mm/dd/yy)
%F:显示日期,等同于%Y-%m-%d
上述格式不必全都记住,只需要掌握几个常用的即可。例如%Y表示年,%m表示月,%d表示日,%H表示小时,%M表示分钟,%S表示秒,%s表示从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数。
实例见下:
#date “+now time is: %Y-%m-%d %H:%M:%S”
now time is: 2019-06-15 17:05:41

#date “+%Y-%m-%d%H:%M:%S”
2019-06-15 17:05:57

#date -l //大写i
2019-06-15
设定时间:
date -s 01:01:01 #设置具体时间,不会对日期做更改
date -s “01:01:01 2019-06-15” #这样可以设置全部时间
date -s “01:01:01 20190615” #这样可以设置全部时间
date -s “2019-06-15 01:01:01” #这样可以设置全部时间
date -s “20190615 01:01:01” #这样可以设置全部时间
注意,生产环境中,要确保服务器的系统时间是一致的,可以通过NTP(网络时间协议,基于udp 端口使123)服务同步时间,确保所有服务器的时间一致。可以自己搭建NTP时间服务器,也可以使用internet提供的NTP服务器。
例如结合cron计划任务定期与internet提供的ntp服务器同步保持时间一致。
#crontab -l

1 3 * * * /sbin/ntpdate 1.cn.pool.ntp.org
注:ntpdate命令是网络时间同步命令。

重定向与管道操作

1,重定向操作
(1)标准输入(stdin):默认的设备是键盘,文件编号是0,命令将从标准输入文件中读取在执行过程中需要的输入数据。
(2)标准输入(stdout):默认的设备是显示器,文件编号1,命令将执行后输入结果发送到标准输出文件。
(3)标准错误(stderr):默认的设备是显示器,文件编号2,命令将执行期间的各种错误信息发送到标准错误文件。
1) 重定向输出
重定向输出指的是将命令的正确输出结果保存到指定的文件中,而不是直接显示在显示屏幕上。重定向输出使用“>”或“>>”操作符号,分别用于覆盖或追加文件。
举例:uname -p > kernet.txt 将主机的cpu类型信息保存到kernel.txt文件中。
当需要保留目标文件原有的内容时,应该用“>>”操作符号,追加内容而不是全部覆盖。
举例:uname -r >> kernel.txt
2)重定向输入
重定向输入指的是将命令中的接收输入的路径有默认的键盘改为指定的文件。用“<”操作符号。
举例:vi pass.txt 添加初始密码为123456
123456
Passwd --stdin jerry < pass.txt 从pass.txt中提取密码
3)错误重定向
错误重定向指的是将执行命令过程中出现的错误信息保存到指定的文件,而不是在屏幕上直接显示。使用“2>”操作符号,其中“2”是指错误文件的编号。
举例:执行以下操作可以将使用tar命令进行备份时出现的错误信息保存error.log文件中
Tar jcf /tmp/etc.tar.gz /etc 2> error.log
注意:使用“2>”操作时,会覆盖目标文件的内容,若要追加内容而不是覆盖文件,则应该用“2>>”操作符。
2,管道操作
管道操作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的命令输出的结果,将作为右侧命令的输入,同一行命令中可以使用多个管道。
举例:grep “/bin/bash ” / e t c / p a s s w d 提 取 以 b a s h 结 尾 的 文 件 G r e p “ / b i n / b a s h ” /etc/passwd 提取以bash结尾的文件 Grep “/bin/bash /etc/passwdbashGrep/bin/bash” /etc/passwd | awk -F : ‘{print $1,$7}’
提取以bash结尾的文件的第一和第七个字符
注意:awk命令的作用是以冒号:作为分隔,输入第1,第7个区域的字符串。(-F用于指定的分隔符号,默认以空格分隔)。

使用shell变量

Shell变量是用来存放系统和用户需要使用的特定参数,而且这些参数可以根据用户的设定或系统环境的变化相应的变化。 常见的类型有自定义变量、环境变量、位置变量、预定义变量、
1,自定义变量
1)定义一个新的变量
定义变量的基本格式为:变量名=变量值,
举例:product=Python
Version=2.7.13
2)查看和引用变量的值
通过在变量名称前添加符号:$。可以引用一个变量值。使用echo可以查看变量。
举例:echo $product
Echo $product $version
注意:当前变量名称容易和紧跟其后的其他字符想混淆时,需要添加{}将其括起来
举例:echo $product2.5
Echo ${product}2.5
3)变量赋值的特殊操作
双引号(“”)
双引号主要起界定字符串作用,当赋值的内容中有空格的时候,必须以双引号括起来。
举例:Python=“Python 2.7.12”
Echo $Python
同样,也可以引用其他变量值。
举例:sqlserver=“sqlserver $python” 以变量的值进行赋值
Echo s q l s e r v e r e ∗ ∗ 单 引 号 ( ‘ ’ ) ∗ ∗ 当 要 赋 值 的 内 容 包 含 sqlserver e **单引号(‘’)** 当要赋值的内容包含 sqlservere

你可能感兴趣的:(shell)