shell 脚本——第一节课 bash的基本特性
shell 程序在学校都是单行命令的形式执行,缺乏逻辑关系
区别:使用shell实现Linux的批量管理,而不是去开发应用程序。
Shell(python、perl
1.bash的基本特性
ctrl + i
上键
history
2.IO重定向与管道符
3.编程基础
编程原理
程序:执行某个功能的一段代码
程序 = 指令 + 数据 + (逻辑关系)
命令 变量
4.Grep和正则表达式
Linux三剑客
Pattern“模式”
语句的逻辑关系
If
For * -- 放入for循环的列表
While – 循环条件为True
Until – 循环条件为False
(不要进入死循环)
Case -- *编写Linux的程序启动脚本*
Break
Continue
Exit
Read – input()
Echo--print()
变量*
Linux三剑客
Sed stream edit d?
两种模式的切换
Awk 报告生成器
是一个独立的编程语言
函数
数组
字符串
Wc -l /etc/inittab I cut -d`` -fl
Line =`wc -l /etc/inittab l cut d` ` -fl`
Echo $Line
第一节课 bash的基本特性·
1、 命令历史
作用:查看之前使用的命令
关于命令历史的文件:
每个用户家目录下的.bash_history
在关机的时候会自动写入一次(history -r 将内存中的命令历史写入文件)
关于命令历史的变量(环境变量)
Env //查看环境变量
Set //查看更详细的环境变量参数
HISTSIZE =1000 //记录1000个历史命令
HISTCONTROL = ignoredups
HISTFILE=/root/.bash_history
HISTFILESIZE = 1000
History的常见操作
查看命令历史
!# #表示数值,执行#行命令
!string 匹配最近一次的字符串
!! 上一条命令
*!$* 上一条命令的最后一个参数
Ls /etc
Ls !$
History的常见选项:
History # 显示最近#行的命令
2. 命令补全
Tab
作用1.提示2.自动补全
扩展:制表符 \t 四个空格键
3. 目录补全
Tab
作用1.提示2.自动补全
4. 命令展开-date命令
{}
Linux的目录需要遵循什么规则? --FHS目录规则
命令行扩展
属性1 属性2
a 1
b 2
mkdir -pv /var/{a,b}-{1,2}
date 基于date命令来创建目录
%F CCYY-mm-dd
%H hh
%M MM
%S ss
%T hh:MM:ss
%D mm/DD/YY
练习:通过for语句循环创建一个月的日志文件;.log 2019-08-6.http.log
touch ‘date +%F’.http.log
练习:编写脚本,每天02: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 日历
5.命令的执行状态
6.命令的快捷键
7.alias别名
1、 文件通配符
【文件通配符不是正则表达式】
? 任意单个字符
* 任意长度的任意字符
[] 指定范围内的任意一个字符
^ 1、以什么开头
2、[^]指定范围以外的任意一个字符
[^0-9A-Za-z]
[0-9][a-z] [A-Z] [a-zA-Z]
指定字符类: