zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    世界上最遥远的距离(泰戈尔)
    肩周炎?
    [转]C#基础概念二十五问
    [转]ASP.NET 2.0的缓存技术简介
    SQL Server 2005下的分页SQL
    [转]基本的缓存类操作封装(抽象类)
    GridView鼠标经过行变色
    推荐一个好用的.NET2.0下的发送EMail的库
    Data Access Application Block for .NET
    Pet Shop 4.0的缓存机制
  • 原文地址:https://www.cnblogs.com/hmm01031007/p/11337797.html
Copyright © 2011-2022 走看看