bash的基本特性

1、命令历史
    作用:查看之前使用的命令
    关于命令历史的文件
      每个用户家目录下面的.bash_history
      在关机的时候,会自动写入一次(history -r 将内存中的命令历史写入文件)
    关于命令历史的变量(环境变量)
      env //查看环境变量
      set //查看详细的环境变量参数
      HISIZE=1000 数量
      HISCONTROL = ignoredups
    history的常见操作
      查看历史命令
      !!上一条命令
      *!$*上一条命令的最后的一个参数
          ls /etc
          ls !$
          ESC +
      常见的选项
      -a
      -d
      -c
      history # 显示最近#行的命令
2、命令补全
    TAB
      1、提示2、自动补全
    扩展:制表符 四个空格键
3、目录补全
    TAB
    1、提示2、自动补全
4、命令展开-date命令
    {}
    Linux的目录需要遵循什么规则? --FHS目录规则
    date 基于date命令创建目录
        %F CCYY-mm-dd
        %H hh
        %M MM
        %S ss

        练习:通过for语句循环创建一个月的日志文件:.log 2019-08-6.http.log
          for i in {1..30};do
            touch `date +%F-%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 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/xx.sh
vim xx.sh
#!/bin/bash
#
tar cJvd /var/`date +%F`.xz /etc/
clock
hwclock
5、命令的执行状态
在Linux中,每一条命令执行后都会有两个结果:
命令本身反回的内容
其次,命令执行的结果状态
$?变量,就是用来存放命令执行状态的变量;
0表示成功状态(和Python正好相反)
1-255表示失败状态
6、命令的快捷键
ctrl + I
ctrl + C
ctrl + U //删除光标前的字符
ctrl + K //删除光标后的字符
ctrl + A
ctrl + E
ctrl + W //以空格为分隔符,去删除文件
ctrl + R //进入一个交互界面,搜索最近一次使用的命令
7、alias别名
系统启动时读取一些特殊文件的顺序;

alias cdnet="cd /etc/sysconfig/network-scripts" //这种定义alias只能在当前shell生效
/etc/profile:定义环境变量(所有用户) --EXPORT HISTCONTROL =
/etc/bashrc:定义本地本量--alias(所有用户)
~/.bash_profile:定义环境变量(指定用户)
~/.bashrc:定义本地变量--alias(指定用户)

sources ~/.bashrc
8、文件通配符 -- globbing
【文件通配符不是正则表达式】
? 任意单个字符
* 任意长度的任意字符
[] 指定范围内的任意一个字符
^ 1、以什么开头
2、[^]指定范围以外的任意一个字符
[^0-9A-Za-z]
[0-9][a-z][A-Z][a-zA-Z]
指定字符类:
符号
字符标识
[:digit:]
任意数字, 相当于0-9
[:lower]
任意小写字母
[upper:]
任意大写字母
[alpha:]
任意大小写字母
[:alnum:]
任意数字或字母
[:blank:]|
水平空白字符
[:space:]
水平或垂直空白字符
[punct:]
标点符号
[print:]
可打印字符
[:cntrl:]
控制(非打印)字符
[:graph:]
图形字符
[xdigit:]
十六进制字符