目录
一.echo
转义符号 | 含义 |
---|---|
-n | 不要追加换行 |
-e | 启用下列反斜杠转义的解释 |
-E | 显式地抑制对于反斜杠转义的解释 |
\b | 转义后相当于按退格键,但前提是\b后面存在字符:\b表示删除前一个字符,\b\b 表示删除前两个字符 \b的个数不能超过后面的字符数 |
\c | 不换行输出,当\c后面存在字符时,后面的字符不会被输出 |
\n | 换行,被输出的字符从\n除开始另起一行 |
\f 或\v | 换行,但是换行后的新行的开头位置连接着上一行的行尾 |
\t | 转以后表示插入tab,即横向制表符 |
\r | 光标移至行首,用后面的字符覆盖等长度的前面的字符 |
\\ | 表示插入"\"本身 |
二.date
date查看当前系统时间
1.常见选项
date [选项]+[格式]
date [选项]+[MMDDhhmm[CC]YY[.ss]]
-d 你描述的日期,显示指定字符串所描述的时间,而非当前时间
%F 完整日期格式,等价于 %Y-%m-%d
% T 时间(24小时制)(hh:mm:ss)
-d, --d=STRING 显示的是有string所指定是时间,不是当前的系统时间
-f ,--file=DATEFILE 显示DATEFILE每一行所指定的时间
-r,--reference=file 显示FILE的最后修改时间
-R,--rfc-822根据RFC-822指定格式输出时间
-s,--set=STRING根据STRING设置时间
--help 显示帮助文本被退出
--version 显示版本信息并退出
接下来是后缀的一些详细介绍
%% 文本的 %
%a 当前区域的星期几的简写 (Sun..Sat)
%A 当前区域的星期几的全称 (不同长度) (Sunday..Saturday)
%b 当前区域的月份的简写 (Jan..Dec)
%B 当前区域的月份的全称(变长) (January..December)
%c 当前区域的日期和时间 (Sat Nov 04 12:02:33 EST 1989)
%d (月份中的)几号(用两位表示) (01..31)
%D 日期(按照 月/日期/年 格式显示) (mm/dd/yy)
%e (月份中的)几号(去零表示) ( 1..31)
%h 同 %b
%H 小时(按 24 小时制显示,用两位表示) (00..23)
%I 小时(按 12 小时制显示,用两位表示) (01..12)
%j (一年中的)第几天(用三位表示) (001..366)
%k 小时(按 24 小时制显示,去零显示) ( 0..23)
%l 小时(按 12 小时制显示,去零表示) ( 1..12)
%m 月份(用两位表示) (01..12)
%M 分钟数(用两位表示) (00..59)
%n 换行
%p 当前时间是上午 AM 还是下午 PM
%r 时间,按 12 小时制显示 (hh:mm:ss [A/P]M)
%s 从 1970年1月1日0点0分0秒到现在历经的秒数 (GNU扩充)
%S 秒数(用两位表示)(00..60)
%t 水平方向的 tab 制表符
%T 时间,按 24 小时制显示(hh:mm:ss)
%U (一年中的)第几个星期,以星期天作为一周的开始(用两位表示) (00..53)
%V (一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (01..52)
%w 用数字表示星期几 (0..6); 0 代表星期天
%W (一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (00..53)
%x 按照 (mm/dd/yy) 格式显示当前日期
%X 按照 (%H:%M:%S) 格式显示当前时间
%y 年的后两位数字 (00..99)
%Y 年(用 4 位表示) (1970...)
%z 按照 RFC-822 中指定的数字时区显示(如, -0500) (为非标准扩充)
%Z 时区(例如, EDT (美国东部时区)), 如果不能决定是哪个时区则为空
2.查看日历
三.for循环语句
读取不同的变量值,用来逐个执行同一组命令
for 变量名 in 取值列表
do
命令序列
done
1.for循环语句(遍历)
[root@localhost ~]# vim qiuhe_for.sh
for循环的三种格式
格式1:
#!/bin/bash
sum=0
for i in {1..100}
do
sum=$[sum+i]
done
echo "1-100的和为:$sum"
格式2:
#!/bin/bash
sum=0
for i in `seq 10`
do
sum=$[sum+i]
done
echo "1-100的和为:$sum"
格式3:
#!/bin/bash
sum=0
for ((i=0;i<=100;i++))
do
sum=$[sum+i]
done
echo "1-100的和为:$sum"
2.奇偶数
1.奇数和
2.偶数和
3.求磁盘总容量
4.批量生成用户
1.法一
2.法二
[root@localhost ~]# vim useradd_for.txt
[root@localhost ~]# vim useradd_for.sh
5.根据IP地址检查主机状态
1.检查具体的主机状态
[root@localhost ~]# vim ping_for.txt
[root@localhost ~]# vim ping_for.sh
2.检查一个网段的主机状态
[root@localhost ~]# vim ping_for.sh
6.九九乘法表
正序九九乘法表
[root@localhost ~]# vim 99_for.sh
倒序九九乘法表
[root@localhost ~]# vim 99_for.sh
7.批量改后缀
[root@localhost mnt]# vim rename_for.sh
四.while
重复测试某个条件,只要条件成立则反复执行
while 条件测试操作
do
命令序列
done
1.批量创建用户并添加密码
[root@localhost ~]# vim useradd_while.sh
2.求和
[root@localhost ~]# vim qiuhe_while.sh
3. 猜商品价格
[root@localhost mnt]# vim caijiage_while.sh
五.until
重复测试某个条件,只要条件不成立则反复执行
until 条件测试操作
do
命令序列
done
[root@localhost ~]# vim qiuhe_until.sh
六.菜单
基本格式
PS3="请输入基本配置信息:"
menu=" ”
select menu in $menu
do
case $REPLY in
1)...
esac
done
[root@localhost ~]# vim menu.sh
[root@localhost ~]# vim menu.sh
#!/bin/bash
PS3="请输入基本配置信息:"
menu="
永久关闭防火墙
关闭selinux
创建本地yum
硬盘分区
改主机名
结束
"
select menu in $menu
do
case $REPLY in
1)
systemctl disable firewalld.service
;;
2)
setenforce 0
;;
3)
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak
echo "[centos7]
name=abc.repo
baseurl=file:///mnt
gpgcheck=0
enabled=1" >abc.repo
mount /dev/sr0 /mnt
yum clean all
yum repolist
;;
4)
echo "- - -" >/sys/class/scsi_host/host0/scan
echo "- - -" >/sys/class/scsi_host/host1/scan
echo "- - -" >/sys/class/scsi_host/host2/scan
lsblk
fdisk /dev/sdb <<EOF
n
p
1
2048
+10G
w
EOF
mkfs.xfs /dev/sdb1
echo "/dev/sdb1 /mnt xfs defaults 0 0" >>/etc/fstab
mount -a
df -hT
;;
5)
hostnamectl set-hostname ooo
su
;;
6)
echo "结束"
break
esac
done