Shell脚本基础
命令历史:
查看已经使用过的命令
关于历史命令的文件
每个用户的家目录下的./bash_history
在关机的时候,会自动写入一次(history -r ) 手动写入
关于历史命令的变量(环境变量)
env //查看环境变量
set //查看更详细的环境变量参数
histsize=1000 //数量
histcontrol=ignoredups 忽略重复的历史命令
ignorespace 忽略空白开头的历史命令
ignoreboth 两个都生效
history的常见操作
查看历史命令
!# #便是数值,执行#行的命令
!string 匹配最近一次的字符串
!! 上一条命令
*!$* 上调命令的最后一个参数
ls /etc
ls !$
=esc .
命令补全
tab键
命令展开——date命令
{}
linux 的目录需要遵循什么规则?——fhs目录规则
属性1 属性2
a 1
b 2
mkdir -pv /var/{a,b}-{1,2}
date 基于date创建命令
%f ccyy-mm-dd
%t hh:mm:ss
%h hh
%d mm/dd/yy
%m mm
%s ss
练习:通过for语句创建一个月的日志文件 2019-08-06.log
touch `date %f`.log
for i in {1..30}:do
touch `date +%y-%m-$i`.log
done
压缩工具
只能对文件压缩,不能对目录进行操作
gzip
bzip2
xz9
tar归档可以对目录进行操作
-j bzip2
-j xz
-z gzip
-c create
-x extract //可以不用指定解压工具
-f 指定文件名
-v 显示详细信息 verbose
-t 不解压查看内容
tar cjvf 2018-08-*.log.bz2 2018-08-*.log
tar xvf 2018-08-*.log.bz2 -c abc
练习:编写脚本,每天2:20备份/etc/目录中所有文件,名称为当天日期;并且文件为压缩文件
crontab --20 2 * * * /root/xxx.sh
vim xxx.sh
#!/bin/bash
#
tar cjvf /var/ `date +%f`.xz /etc/*
chmod +x xxx.sh
clock / hwclock 查看硬件时钟 (如何同步系统与硬件时钟)
cal 日历
命令的执行状态
在linux中,每一条命令执行后都会有两个结果
命令本身放回的内容
其次,命令执行的结果状态
$? 变量,就是用来存放命令执行状态的变量:
0 表示成功状态
1-255 表示失败状态
[$? -eq0]&&exit0||exit1
命令快捷键:
ctrl +i
ctrl +c
ctrl +u //删除光标前的字符
ctrl +k //删除光标后的字符
ctrl +a
ctrl +e
ctrl +w //以空格为分隔符,去删除文件
ctrl +r //进入一个交互界面,搜索最近一次使用的命令
alias别名
系统启动时读取一些特殊文件的顺序
alisa cdnet="cd /etc/sysconfig/network-scriptes/" //这种方式定义的alias只能在当前shell生效
/etc/profile:定义环境变量(所有用户)
/etc/bashrc:定义本地变量--alias
~/.bash_profile:定义环境变量(指定用户)
~/.bashrc:定义本地变量--alias(指定用户)
文件通配符--globbing
[文件通配符不是正则表达式]
? --任意单个字符
* -- 任意长度的任意字符
[] --指定范围内的任意一个字符
^ --1:以什么开头
2:【^】指定范围之外的任意一个字符
【^0-9a-za-z】
【0-9】【a-z】【a-z】【a-za-z】