Shell-bash的基本特性

时间:2019-08-06
本文章向大家介绍Shell-bash的基本特性,主要包括Shell-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、自动补全
        扩展:制表符 \t 四个空格键
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:]
            十六进制字符

9、练习
    1、显示/var目录下所有以1开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;
        ls /var/1*[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/jklp-1234/p/11311440.html