1、命令历史(history)内置命令
作用:查看之前使用的命令
关于命令历史的文件(每个用户家目录下面的.bash_history,在关机的时候会自动写入一次(history -r 将内存中的命令写入文件中))
关于命令历史的变量(环境变量)path是环境变量的一个
env #查看环境变量
set #查看更详细的环境变量参数
HISTSIZE=1000
HISTCONTROL=ignoredups
Igonredups 忽略重复的历史命令--连续相同,才叫重复
Igonrespace 忽略空白开头的历史命令,“键入空格开头则不会被记录”
Igonreboth 两者都生效
HISTILE=/root/.bash_history
HISTSIZE=1000
history常见的操作
查看命令历史
!# #表示数值,执行#行的命令
!string 匹配最近一次的字符串
!! 上一条命令
(*)!$ 上一条命令的最后一个参数(ESC+.)
ls /etc
ls !$
常见的选项:
-a:将缓冲区历史手动添加到文件.bash_history中,重启依然存在
-d:删除某条历史命令
-c:清空缓冲区中的历史命令缓存
history # 显示最近#行命令
useradd hmm
echo “123456” | passwd --stdin “hmm” #给hmm写密码
2、命令补全
tab键补全
扩展:制表符 \t 四个空格键
3、目录补全
tab键
1.提示目录的路径
2.自动补全
4、命令展开--date命令
{}
Linux的目录需要遵循的规则:FHS目录规则(文件系统层次化标准)
date:基于date命令来创建目录
date +%F:改变date输出时间格式(年-月-日)
%H :小时
%M :分钟
%S :秒
%T :时-分-秒
%D :月/日/年(19)
%Y :年
练习:通过for语句循环创建一个月的日志文件;.log 2019-08-6.http.log
for i in range{1..30}
touch`date +%Y-%m-$i`.http.log;
done
tar:归档(压缩与解压缩)(压缩只能对文件压缩,不能压缩目录)
压缩工具:gzip
bzip2
xz
(zcat查看压缩文件且不解压)
tar的常见参数:
tar归档工具【可以对目录进行操作,多个目录可以归档为一个目录】
-j bzip2
-J xz
-z gzip
-c create:创建
-x extract: 可以不用指定解压的工具
-f 指定文件名
-v 显示详细信息 verbose
-t 不解压查看内容和zcat一样
例子:
tar cjvf hmm.bz2 hmm.log(压缩)
tar xvf hmm.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 表示失败状态
127 :命令找不到
2:文件或目录不存在
13:没有权限
[$? -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别名
系统启动时读取一些特殊文件的顺序;
定义别名:(定义的别名只能在当前的shell中有效)
alias cdnet="cd /etc/sysconfig/network-scripts/" #两种方式定义alias只能在当前shell中生效
cdnet #想要开机之后还有要写到配置文件中
/etc/profile:定义环境变量(所有用户)--EXPORT HISTCONTROL = xxx
/etc/bashrc:定义本地变量 ---alias(所有用户)
家目录/.bash_profile:定义环境变量(指定用户)
家目录/.bashrc:定义本地变量---alias(指定用户)
sources /etc/profile 或者 . /etc/profile :生效
8、文件通配符 (globbling)
【文件通配符不是正则表达式】
?:任意单个字符
* :任意长度的任意字符
[]:指定范围内的任意一个字符
^ :1、以什么开头
2、[^]指定范围内以外的任意一个字符
[^0-9A-Za-z]
[0-9][a-z][A-Z][a-zA-Z]
指定字符类:
[:alnum:]匹配字母和数字,[:alpha:].[:cntrl:],[:upper:]
[:punct:]特殊字符,[:space:]空格
^[[:space:]]*$ #有空格键的空行
练习:
1、显示/var目录下所有以1开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;
ls /var/*[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
转载于:https://www.cnblogs.com/hmm01031007/p/11337797.html