day01 shell基本介绍

1、命令历史 :

    作用:查之前使用的命令

    

    关于命令历史的文件

      每个用户家目录下面的 .bash_history

      在关机的时候,会自动写入一次 (history -a  将内存中的命令历史写入文件)

    关于命令历史的变量(环境变量)

      env  //查看环境变量

      set  //常看更详细的环境变量参数

      HISTSIZE=1000        数量

      HISTCONTROL=ignoredups

        Ignoredups  忽略重复的历史命令  --  连续且相同,才叫重复

        Ignorespace  忽略空白开头的历史命令,“键入空格开头则不会被记录”

        Ignoreboth  两者都生效

      HISTFILE=/root/.bash_history

      HISTFILESIZE=1000

 

    history 的常见操作

      查看命令历史

      !#  #表示数值,执行#行的命令

      !string  匹配最近一次的字符串

      !!  上一条命令

      *!$*  上一条命令的最后的一个参数

        ls /etc

        ls !$

        ESC+. 

      常见的选项:

      -a

      -d

      -c

      history #   显示最近 # 行的命令

 

    2、命令补全:

          tab :

        1、提示 2、自动补全

        扩展:制表符  四个空格键

 

    3、目录补全:

      tab:

        1、提示 2、自动补全

 

     4、命令展开---date命令:

        {,}

        Linux的目录需要遵循什么规则

        属性1 属性2

        A        1

        B         2

        Mkdir  - pv /var/{a,b}-{1,2}

 

        Date 基于date命令来创建目录

         

            %F   CCYY-mm-dd 年-月-日

             %T hh:MM:ss 时-分-秒

            %D:mm/dd/YY

            %H hh 小时

            %M MM 分钟

            %S SS 秒

        

        练习: 通过for语句循环创建一个月的日志文件;.Log   2019-08-6.http .log

        Touch 'date +%F'.http.log

          For I in {1,,30};do Touch 'date +%Y-%m-$i'.http.log;done

          [tar

            压缩工具 :只能对文件进行操作,不能对目录进行压缩

            Gzip

            Bzip2

            Xz

            tar的常见参数:

              Tar 归档工具

              -j bzip2

              -J xz

              -z gzip

              -c create 创建

              -x extract 解压  //可以不用指定解压工具

              -f 指定文件名

              -v 显示详细信息  verbose

           ]

            练习 : 编写脚本,每天02.20 备份/etc/目录中的所有文件,名称为当天的日期;且保存文件

        为压缩文件;

            Crontab -- 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 表示失败状态

      [$? -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别名

        系统启动时读取一些特殊文件的顺序;

        Alias

        Alias cdnet=“cd /etc/sysconfig/network-scriptes”//这种方式定义alias只能在当前shell生效

        /etc/profile : 定义环境变量(所有用户)--EXORT HISTcONTROL=XXX

        /etc/bashrc:定义本地变量--alias(所有用户)

        ~/.bash_prfile:定义环境变量(指定用户)

        ~/.bashrc:定义本地变量--alias(指定用户)

        Sources /etc/porfile 或者 ./etc/profile

    8、文件通配符 -- gobbing

      【文件通配符不是正则表达式】

       五种常见的t通配符:?*[]^指定字符类

      ? //任意一个字符

        *  // 任意长度的任意字符

      [] //指定范围内的任意字符

      ^

        2、[^]指定范围以外的任意一字符

          [0-9a-zA-Z]

       指定字符类

         

练习

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/only-m/p/11311324.html