shell脚本-bash基本特征

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值