shell脚本day01-bash的基本特性
一、命令历史
作用:查之前使用的命令
关于命令历史的文件
每个用户家目录下面的 .bash_history在关机的时候,会自动写入一次 (history -a 将内存中的命令历史写入文件)
关于命令历史的变量(环境变量)
- env //查看环境变量
- set //常看更详细的环境变量参数
- HISTSIZE=1000 数量
- HISTCONTROL=ignoredups
- Ignoredups 忽略重复的历史命令 -- 连续且相同,才叫重复
- Ignorespace 忽略空白开头的历史命令,“键入空格开头则不会被记录”
- Ignoreboth 两者都生效
- HISTFILE=/root/.bash_history
- HISTFILESIZE=1000
history 的常见操作
- 查看命令历史
- !# #表示数值,执行#行的命令
- !string 匹配最近一次的字符串
- !! 上一条命令
- *!$* 上一条命令的最后的一个参数
- ls /etc
- ls !$
- ESC+.
常见的选项:
- -a
- -d
- -c
- history # 显示最近 # 行的命令
二、命令补全
- tab
- a.提示
- b.自动补全
拓展:制表符 \t (四个空格键)
三、目录补全
- tab
- a.提示
- b.自动补全
四、命令展开-date命令
Linux的目录遵循的规则是FHS目录规则
{,}演示如下:
date基于date目录来创建目录
改变date的输出格式:
- %F:CCYY-mm-dd
- %T hh:MM:ss
- %D mm/dd/YY
- %H hh
- %M MM
- %S ss
- %Y CCYY
- 通过for语句循环创建一个月的日志文件:.log 2019-08-06.http.log
- tar归档(压缩只能对文件进行操作,但不能对目录操作,但归档都可以)
压缩工具:
gizp
bzip2
xz
tar的常见参数:
-j bzip2
-J xz
-z gzip
-c creat
-x extract //可以不用指定解压工具
-f 指定文件名
-v 显示详细信息 verbose
-t 不解压查看内容,和zcat相同
补充:
clock/hwclock 查看硬件时钟
cal日历
五、命令的执行状态
在Linux中,每一条命令执行后都有俩种结果:
(1).命令本身放回内容
(2).命令执行的结果状态
$!变量,就是用来存放命令执行状态的变量:
- 0 表示成功状态(和python)相反
- 1-255表示失败状态
六、命令的快捷键
- ctrl + l
- ctrl + c
- ctrl + u //删除光标前的字符
- ctrl + k //删除光标后的字符
- ctrl + a
- ctrl + e
- ctrl + w //以空格为分隔符,去删除文件
- ctrl + r //进入一个交互界面,搜索最近一次使用的命令(要输入string)
七、alias别名
系统启动时读取一些特殊文件的顺序;
alias
alias cdnet="cd /etc/sysconfig/network-scriptes" //这种方式定义alias只能在当前shell生效;
/etc/profile : 定义环境变量(所有用户) -- EXPORT HISTCONTROL=XXX
/etc/bashrc : 定义本地变量--alias(所有用户)
~/.bash_profile : 定义环境变量(指定用户)
~/.bashrc : 定义本地变量--alias(指定用户)
sources /etc/profile 或者 . /etc/profile
八、文字通配符
【文件通配符不是正则表达式】
- ? 任意单个字符
- * 任意长度的任意字符
- [] 指定范围内的任意一个字符
- [^] 指定范围以外的任意一个字符
- [0-9A-Za-z]
- [0-9] [a-z] [A-Z] [a-zA-Z]
- 指定字符类:
- [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:],
- [:punct:], [:space:], [:upper:], and [:xdigit:]
^[[:space:]]*$ //有空格键的空行(正则表达式)