Shell脚本基础,


命令历史:

       查看已经使用过的命令

       关于历史命令的文件

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

              在关机的时候,会自动写入一次(history -r ) 手动写入

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

              env //查看环境变量

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

              HISTSIZE=1000 //数量

              HISTCONTROL=ignoredups 忽略重复的历史命令

                                    ignorespace 忽略空白开头的历史命令

                                    ignoreboth  两个都生效

       history的常见操作

              查看历史命令

              !# #便是数值,执行#行的命令

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

              !!  上一条命令

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

                     ls /etc

                     ls !$

                     =esc .

命令补全

       TAB键

命令展开——date命令

       {}

       linux 的目录需要遵循什么规则?——FHS目录规则

       属性1     属性2

       a     1

       b     2

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

       date 基于date创建命令

                     %F  CCYY-mm-dd

                     %T hh:MM:ss

                     %H hh

                     %D mm/dd/YY

                     %M MM

                     %S ss

                     练习:通过for语句创建一个月的日志文件 2019-08-06.log

                     touch `date %F`.log

                     for I in {1..30}:do

                            touch `date +%Y-%m-$i`.log

                     done

压缩工具

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

       gzip

       bzip2

       xz9

              tar归档可以对目录进行操作

              -j bzip2

              -J xz

              -z gzip

              -c create

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

              -f 指定文件名

              -v 显示详细信息 verbose

              -t 不解压查看内容

              tar cjvf 2018-08-*.log.bz2 2018-08-*.log

              tar xvf 2018-08-*.log.bz2 -C abc

       练习:编写脚本,每天2: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 日历

命令的执行状态

在Linux中,每一条命令执行后都会有两个结果

              命令本身放回的内容

              其次,命令执行的结果状态

$? 变量,就是用来存放命令执行状态的变量:

       0     表示成功状态

       1-255     表示失败状态

       [$? -eq0]&&exit0||exit1

命令快捷键:

       ctrl +I

       Ctrl +c

       Ctrl +u  //删除光标前的字符

       Ctrl +k  //删除光标后的字符

       Ctrl +a

       Ctrl +e

       Ctrl +w  //以空格为分隔符,去删除文件

       Ctrl +r  //进入一个交互界面,搜索最近一次使用的命令

alias别名

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

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

              /etc/profile:定义环境变量(所有用户)

              /etc/bashrc:定义本地变量--alias

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

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

文件通配符--globbing

       [文件通配符不是正则表达式]

       ?  --任意单个字符

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

       []  --指定范围内的任意一个字符

       ^   --1:以什么开头

              2:【^】指定范围之外的任意一个字符

                     【^0-9A-ZA-z】

                     【0-9】【a-z】【A-Z】【a-zA-Z】

相关内容

    暂无相关文章