1、命令历史 :
作用:查之前使用的命令
关于命令历史的文件
每个用户家目录下面的 .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 # 显示最近 # 行的命令
2、命令补全:
tab :
1、提示 2、自动补全
扩展:制表符 四个空格键
3、目录补全:
tab:
1、提示 2、自动补全
4、命令展开---date命令:
{,}
Linux的目录需要遵循什么规则
属性1 属性2
A 1
B 2
Mkdir - pv /var/{a,b}-{1,2}
Date 基于date命令来创建目录
%F CCYY-mm-dd 年-月-日
%T hh:MM:ss 时-分-秒
%D:mm/dd/YY
%H hh 小时
%M MM 分钟
%S SS 秒
练习: 通过for语句循环创建一个月的日志文件;.Log 2019-08-6.http .log
Touch 'date +%F'.http.log
For I in {1,,30};do Touch 'date +%Y-%m-$i'.http.log;done
[tar
压缩工具 :只能对文件进行操作,不能对目录进行压缩
Gzip
Bzip2
Xz
tar的常见参数:
Tar 归档工具
-j bzip2
-J xz
-z gzip
-c create 创建
-x extract 解压 //可以不用指定解压工具
-f 指定文件名
-v 显示详细信息 verbose
]
练习 : 编写脚本,每天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、命令的执行状态
在Linux中,每一条命令执行后都会有两个结果:
命令本身放回的内容
其次,命令执行的结果状态
$? 变量,就是用来存放命令执行状态的变量;
0 表示成功状态(和python相反)
1--255 表示失败状态
[$? -eq 0]&& exit 0 || exit 1
6、命令的快捷键
Ctrl +l
Ctrl +c
Ctrl +u //删除光标前的字符
Ctrl +k //删除光标后的字符
Ctrl +a 光标首
Ctrl +e 光标尾
Ctrl + w //以空格为分割符,去删除文件
Ctrl + r //进入一个交互界面,搜索最近一次使用的命令(要输入string)
7、alias别名
系统启动时读取一些特殊文件的顺序;
Alias
Alias cdnet=“cd /etc/sysconfig/network-scriptes”//这种方式定义alias只能在当前shell生效
/etc/profile : 定义环境变量(所有用户)--EXORT HISTcONTROL=XXX
/etc/bashrc:定义本地变量--alias(所有用户)
~/.bash_prfile:定义环境变量(指定用户)
~/.bashrc:定义本地变量--alias(指定用户)
Sources /etc/porfile 或者 ./etc/profile
8、文件通配符 -- gobbing
【文件通配符不是正则表达式】
五种常见的t通配符:?*[]^指定字符类
? //任意一个字符
* // 任意长度的任意字符
[] //指定范围内的任意字符
^
2、[^]指定范围以外的任意一字符
[0-9a-zA-Z]
指定字符类
练习
1、显示/var目录下所有以1开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;
ls /var/1*[0-9]*[a-z]
2、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
ls /etc/[0-9]*[^0-9]
3、显示/etc目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
ls /etc/[^[:alpha:]][[:alpha:]]*
4、复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/test目录中;
cp -a /etc/m*[^0-9] /tmp/test
5、复制/etc目录下,所有以.d结尾的文件或目录至/tmp/test.com目录中
cp -a /etc/*.d$ /tmp/test.com
6、复制/etc目录下,所有.conf结尾,且以m n r p开头的文件或目录至/tmp/test.com目录中
cp -a /etc/[mnrp]*.conf /tmp/test.com