zoukankan      html  css  js  c++  java
  • Linux-Shell编程

    Shell基础编程

    一、find grep sed awk cut sort case select 语法

    find语法
     
    # -name 按文件名查找 -type f代表文件 d代表目录
    $ find 查找路径 [-name/-type] 文件名/*.文件类型
    

      

    find扩展用法
    #只查找指定目录的一级目录 当前目录用"."代替
    $ find 查找路径 -maxdepth 1 [-name/-type] 文件名/*.文件类型
    #查找文件大于N兆的文件(N代表文件大小)
    $ find 查找路径 -size +N
    #查找一天内修改过的文件
    $ find 查找路径 [-name/-type] 文件名/*.文件类型 -mtime -1
    #查找n天前修改过的文件(n代表天数)
    $ find 查找路径 [-name/-type] 文件名/*.文件类型 -mtime +n
    #将查找到的文件删除或拷贝用 -exec  (大括号表示查找到的内容) 
    $ find 查找路径 [-name/-type] 文件名/*.文件类型 -exec rm -rf {} 
    $ find 查找路径 [-name/-type] 文件名/*.文件类型 -exec cp {} /目标路径/ 
    

      

    grep基本用法
    #基本语法
    $ grep "匹配内容" 文件名
    #正则匹配("^字符"表示以该字符开头 "字符$"表示以该字符结尾)
    $ grep "^字符" 文件名
    $ grep "字符$" 文件名
    #排除匹配内容(-v 表示不显示包含该字符的内容)
    $ grep -v "字符"
    #匹配数字
    $ grep "[0-9]" 文件名
    #匹配字母
    $ grep "[a-z]" 文件名
    $ grep "[A-Z]" 文件名
    #多级匹配 -E 表示egrep,是grep的扩展 例:匹配IP地址
    $ grep -E "([0-9]{1,3}.){3}[0-9]{1,3}"
    #满足两个条件其中一个都取出来
    $ egrep "条件1 | 条件2" 文件名
    

      

    sed用法
    #替换文件内容语法 加"-i"会修改原文件 不加则只输出临时结果不修改原文件
    $ sed -i 's/原内容/新内容/g' 文件名
    #在每行首添加内容
    $ sed 's/^/&要加添的内容/g' 文件名
    #在每行尾添加内容
    $ sed 's/$/&要添加的内容/g' 文件名
    #输出包含匹配内容的那一行 p
    $ sed -n '/匹配内容/P' 文件名
    #在匹配内容行的上一行添加内容 i
    $ sed '/匹配内容/i 添加内容/' 文件名
    #在匹配内容行的下一行添加内容 a
    $ sed '/匹配内容/a 添加内容/' 文件名
    #输出第一行
    $ sed -n '1P' 文件名
    #输出最后一行
    $ sed -n '$P' 文件名
    

      

    awk用法
    #取出第n列的内容 $n
    $ cat 文件名 |awk '{print $n}'
    #取出最后一列的内容 $NF
    $ cat 文件名 |awk '{print $NF}'
    #指定分隔符 -F分隔符
    $ cat 文件名 |awk -F: '{print $n}'
    #在结果中加入自定义内容 print后用""号包起来
    $ cat 文件名 |awk '{print "hello"$n}'
    

      

    cut用法
    语法格式
    $ cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]
    ​
    使用说明
    cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
    如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
    ​
    主要参数
    -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
    -c :以字符为单位进行分割。
    -d :自定义分隔符,默认为制表符。
    -f  :与-d一起使用,指定显示哪个区域。
    -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。
    sort用法
    #倒序
    $ cat 文件名 |sort -nr
    

      

    case语法
    case 变量名 in
        参数1 )
            执行A语句...
        ;;
        参数2 )
            执行B语句...
        ;;
        ...
    esac
    

      

    select命令交互
    PS3="请输入对应选项编号: "
    select 变量名 in "选项1" "选项2" "选项3" "exit"
    do
        #执行语句(一般配合case语句)执行交互
        case 变量名 in
            选项1 )
                执行A语句...
            ;;
            选项2 )
                执行B语句...
            ;;
            选项3 )
                执行c语句...
            ;;
            exit )
                执行exit退出命令!
            ;;
        esac
    done
    

      

    二、循环控制

    #for循环
    for 变量名 in 取值范围
    do 
        执行语句...
    done 
    #例:循环输出1-10的整数
    for i in seq 10
    do 
        echo "This Number=$i"
    done
    #while循环
    while [ 条件表达式 ]
    do
        条件成立时执行语句...
    done
    #例:同上
    i=0;
    while [ $i -gt 10 ]
    do 
        ((i++))
        echo "This Number=$i"
    done
    #while从文件中按行读取内容 read 
    while read line
    do 
        echo $line  
    done < 文件名 
    #另一种写法
    cat 文件名 | while read line
    do {
            echo $line
       }
    done

    三、if分支语句

    #if条件判断
        -eq:等于
        -ne:不等于
        -le:小于等于
        -ge:大于等于
        -lt:小于
        -gt:大于
        -r file   用户可读为真 
        -w file   用户可写为真 
        -x file   用户可执行为真 
        -f file   文件为正规文件为真 
        -d file   文件为目录为真 
        -c file   文件为字符特殊文件为真 
        -b file   文件为块特殊文件为真 
        -s file   文件大小非0时为真 
        -t file   当文件描述符(默认为1)指定的设备为终端时为真
        -a        与 
        -o       或 
        !        非
        
        -z 判断 变量的值,是否为空; zero = 0
           - 变量的值,为空,返回0,为true
           - 变量的值,非空,返回1,为false
        -n 判断变量的值,是否为空   name = 名字
           - 变量的值,为空,返回1,为false
           - 变量的值,非空,返回0,为true
           
        [ -n "$pid" ]   单对中括号,变量必须要加双引号
        [[ -z  $pid ]]  双对中括号,变量不用加双引号
        
        ()      子shell中执行
        (())    数值比较,运算 C语言
        $()     命令替换
        $(())   整数运算
        {}      集合
        ${}     变量引用 
        []      条件测试
        [[]]    条件测试,支持正则表达式 =~
        $[]     整数运算  例:求2的10次方 echo $[2**10]
         
    #基本语法 
    if [ 条件表达式 ];then
        条件成立执行语句...
    else
        条件不成立执行语句...
    fi
    #多重判断
    if [ 条件表达式1 ];then
        执行语句...
    elif [ 条件表达式2 ];then
        执行语句...
    else
        执行语句...
    fi  
    #扩展 执行语句中间用&&符号表示前面一名执行成功才执行后面一句 一般可用于代替if多重判断
    $ 执行语句A && 执行语句B    

    四、变量引用

    $? 表示上一条命令的退出状态, 结果为0表示上条命令执行成功
    $$ 表示当前shell的进程ID
    $# 表示参数个数
    $* 表示所有参数
    $@ 一般用于数组,表示所有元素
    $0 表示传入脚本的第一个参数
    $n 表示传入脚本的第n个参数
    #正则表达式 判断是否是数字 "^"表示以什么开头  "+"表示它前面的字符可以有1到多个 "$"表示以什么结尾
    $ ^[0-9]+$ 

    五、全量备份与增量备份

    全量备份
    $ tar -g 路径/快照名 -czvf 路径/压缩后的文件名.tar.gz 路径/备份的目标文件或目录
    

      

    增量备份
    $ tar -g 路径/原快照名 -czvf 路径/压缩后的文件名.tar.gz 路径/备份的目标文件或目录
    

      

    六、Linux命令取别名

    #查看当前shell别名
    $ alias
    #取消别名
    $ unalias 命令
    #定义临时别名
    $ alias 别名='命令 参数'
    #例:定义个临时别名
    $ alias abc='ls -l'
    

      

     

     

  • 相关阅读:
    MySQL 配置优化
    django基础之数据库操作
    Python常用内置模块之xml模块
    linux命令总结iostat命令
    springboot接口返回封装与异常控制
    springboot接口访问权限AOP实现
    springboot动态多数据源
    Elasticsearch一些使用笔记(持续更新)
    python语言中的AOP利器:装饰器
    如何使用supervisor管理你的应用
  • 原文地址:https://www.cnblogs.com/mrfo/p/10638011.html
Copyright © 2011-2022 走看看