欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Shell脚本基础

程序员文章站 2022-04-10 15:38:11
命令历史: 查看已经使用过的命令 关于历史命令的文件 每个用户的家目录下的./bash_history 在关机的时候,会自动写入一次(history -r ) 手动写入 关于历史命令的变量(环境变量) env //查看环境变量 set //查看更详细的环境变量参数 HISTSIZE=1000 //数 ......

命令历史:

       查看已经使用过的命令

       关于历史命令的文件

              每个用户的家目录下的./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】