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的目录需要遵循什么规则? -- FHS目录规则
属性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
- %Y CCYY
练习:通过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 压缩工具 1234lfjkfoajf3o2u34o2jlr lwjro32rlf1234e 1234=ax
【压缩 只能对文件进行操作,而不能对目录进行操作】
- gzip
- bzip2
- xz
- zcat //查看压缩文件且不解压
tar的常见参数:
tar 归档工具【可以对目录进行操作】
- -j bzip2
- -J xz
- -z gzip
- -c create
- -x extract //可以不用指定解压的工具
- -f 指定文件名
- -v 显示详细信息 verbose
- -t 不解压查看内容 和 zcat 一样
tar cjvf 2018-08.http.log.bz2 2018-08-*.http.log
tar xvf 2018-08.http.log.bz2 -C abc
练习:编写脚本,每天02:20 备份/etc/目录中所有文件,名称为当天日期;且保存文件为压缩文件; crontab -e -- 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 : 定义环境变量(所有用户) -- EXPORT HISTCONTROL=XXX
/etc/bashrc : 定义本地变量--alias(所有用户)
~/.bash_profile : 定义环境变量(指定用户)
~/.bashrc : 定义本地变量--alias(指定用户)
sources /etc/profile 或者 . /etc/profile
8、文件通配符 -- globbing
【文件通配符不是正则表达式】
? 任意单个字符
* 任意长度的任意字符
[] 指定范围内的任意一个字符
[^] 指定范围以外的任意一个字符
[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:]]*$ //有空格键的空行(正则表达式)