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

    作业:

           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 /etc/m*[^0-9] /tmp/test

           5.复制/etc目录下,所有以.d结尾的文件或目录至/tmp/test.com目录中

                  cp /etc/*.d /tmp/test.com

           6.

           复制/etc目录下,所有.conf结尾,且以m n r p开头的文件或目录至/tmp/test.com目录中

                  cp /etc/[mnrp]*.conf /tmp/test.com

  • 相关阅读:
    String 尺取法
    dos 命令
    又见01背包
    01串
    Python-Matplotlib 10 面向对象 VS Matlab Style
    [ 转 ] Fiddler 教程
    Android 查看设备文件
    Python-Matplotlib 9 颜色和样式 [r]
    Python-Matplotlib 8 箱形图
    Python-Matplotlib 7 饼状图
  • 原文地址:https://www.cnblogs.com/shy13138/p/11310422.html
Copyright © 2011-2022 走看看