zoukankan      html  css  js  c++  java
  • linnux--shell

    一.执行shell
       方法一:chmod +x uad.sh
                   /uad.sh
       方法二:sh usd.sh
       方法三:source uad.sh
    二.shell命令的组合运用
       管道操作:将一端的命令输出交给另一端的命令处理
          格式:命令1 | 命令2
               
       重定向操作:改变执行命令时的默认输入,输出

    类型 操作符          用途
    重定向输入 从指定文件读取数据,而不是键盘输入
    重定向输出  >, >> 将输出结果覆盖追加到指定文件
    标准错误输出 2>,2>>  将错误信息覆盖追加到指定文件
    混合输出 &>,&>> 将标准输出和错误信息覆盖,添加到指定文件

      逻辑分隔:处理多条命令之间的逻辑关系

        逻辑与:&

             逻辑或:||

         顺序执行:;
    三:使用变量
        变量基本操作
         定义及赋值: 变量名=变量值
         引用变量:$变量名,${变量名}
       双引号/单引号/反撇号

    双引号

    允许引用,转义
    单引号 禁止引用,转义
    反撇号,或者 &()

    以命令输出进行替换


       常见的环境变量:用来记录/设置运行环境参数

        系统赋值:USER, LONGNAME,HOME,SHELL ... 

          用用户操作:PATH,LANG,CLASSPATH ...


       其他特殊变量

        由系统或脚本操控不可直接赋值

        $?:前一条命令的状态值,0为正常,非0为异常

        $0:脚本自身的程序名

        $1-$9:第1到第9个位置参数

        $*:命令行的所有位置参数的内容

        $#:命令行的位置参数个数

    四.数值运算及处理

      整数运算操作

        使用expr命令,计算表达式:expr 数值1 操作符 数值2

                    引用变量的情况 x=45; y=21; expr $x - $y

        使用$[]表达式,算式替换:$[数值1 操作符 数值2]

          引用变量的情况 x=45; y=21; echo $[x - y]   乘法不需要转义

      几个数值处理技巧

        变量的递更处理:let 变量名++   let变量名-

        使用随机数:RANDOM

          例:echo $RANDOM;   echo $[RANDOM%100]

        生成数字序列:seq 首数 末数  ,seq 首数 增量 末数

      小数运算操作

        将表达式给bc命令处理:echo "45.67-21.05" | bc               echo  "scale=4; 10/3" | bc (通过scale=n制约小数位数)

    五.字符串操作

      子串截取操作

        路径分割:dirname命令,base命令

        expr命令:expr substr $Var1 起始位置 截取长度

        ${}表达式:${Var1:起始位置:截取长度} 编号从零开始,从开始位置截取的话,起始位置可以省略不写

      字符串替换

        ${Var1/old/new}  只替换第一个old

        ${Var//old/new}   替换所有old

      使用随机字符串

        随机字符==》ASC11  

          head -1 /dev/urandom | md5sum

        使用cut切割字符串

          echo  $Var1 | cut -b 起始位置-结束位置  位置为首,尾可省略

    六.条件测试

      测试操作规范

        测试的本质是一条操作命令,根据 $? 返回值来判断条件是否成立

        格式:test 条件表达式

           [条件表达式]

                             [条件表达式] && echo YES      测试成功则会输出YES,测试失败就不会输出东西

      文件状态的检测

        存在及识别

          -e:是否存在    -d:是否为目录     -f:是否为文件     

        权限的检测

          -r:是否有读取权限     -w:是否有写的权限         -x:是否有可执行的权限

      整数值比较,字符串匹配

          -eq:等于(equal)   -ne:不等于(not equal)  -gt:大于(great than)  -lt:小于(less than) -ge:大于或等于(great or equal) -le:小于或等于(less or equal)

          当前服务器登陆用户数:who |wc -1

          获取当前用户: $USER

          =    两个字符串相同    !=   两个字符串不同

    七.使用if判断结构

      程序流控制

      单分支/双分支的if应用

    if    条件测试1
    
        then 命令序列1
    
    elif   条件测试2
    
            then 命令序列2
    
    else
    
            命令序列n
    
    fi(结束判断)
    

      

      多重分支的if应用

    八.for循环

      for语句结构

    for 变量 in 取值列表
     do
           命令序列
    done
    

      

    批量加用户,用户列表文件users.txt,一行一个。初始口令设置为123456,首次登录后必须修改
    cat uad.sh
    #! bin/bash
    for i in ${cat /root/users.txt}
    do
    	useradd $i
    	echo "123456" | passwd -stdin $i
    	chage -d 0 $i
    done
    

    九.case语句

    case 变量值 in
    模式1)
    	命令序列1
    	;;
    模式2)
    	命令序列2
    	;;
    *)
    	默认命令序列
    esac
    

     

    # cat hitkey.sh
    #! bin/bash
    read -p "请输入一个字符,并按Enter键确认:" KEY
    case "$KEY" in 
    [a-z] [A-Z])
    	echo "您输入的是字母。"
    	;;
    [0-9])
    	echo "您输入的是数字。"
    	;;
    *)
    	echo "您输入的是空格,功能键,或其他控制字符。"
    esac
    

    十.awk文本处理

    非交互式处理方式
    重定向,管道,命令替换
    head,more,cut,tr
    grep,awk,sed

    awk格式:awk '模式{操作}' 文件1 文件2 ...
          awk 'NR==1{print}' /etc/hosts   输出指定目录下第一行
          awk 'NR==1,NR==3{print}' test.txt 输出第1到第3行
               awk '(NR==1)||(NR==3){print}' test.txt  输出第1行和第3行
     
    正则表达式:awk '/2/{print}'test.txt 输出含有字符2的行
               awk '/bash$/{print}'test.txt 输出yibash结尾的行
    指定分隔,指定输出字段
         awk 'NR==2,NR==3{print $1,$3}' test.txt 输出第二行到第三行第一字段和第三字段
         awk -F. '$5=="benet"{print $0}' test.txt 输出以.分隔 且第五字段为benet的行
     
    常见的内置变量:
       NR:当前处理行的序数(行号)
       FS:字段分隔,缺省为空格或Tab位
       $n:当前行的第n个字段
       $0:当前行的所有文本内容

    十一.sed基本命令格式
     格式:sed ’编辑指令‘文件1 文件2...
           sed -n 文件1 文件2...
           sed -i 文件1 文件2... 

    十二.bash的基本功能
     1.命令别名与快捷键
      alias 查看别名
                                      alias 别名=‘原名’
      unalias 别名 :删除别名
      ctrl+c 强制终止当前命令
      ctrl+l 清屏
      ctrl+a 光标移到命令行首
      ctrl+e 光标移到命令行尾
      ctrl+u 从光标所在位置删除到行首
      ctrl+z 把命令放到后台
      ctrl+r 在历史命令中搜素
     2.历史命令
      history [选项] [历史命令保存文件]
                                      选项:-c 清空历史命令
                  -w 把缓存中的历史命令写入历史命令保存文件/.bash_history
      !n  :重新执行第n条命令
      !! :重新执行上一条命令
      !字符串 :重新执行最后一条以该字符串开头的命令
     3.输出重定向
      wc [选项] [文件名]
                       选项:-c统计字节数
                                                   -w统计单词数
                                                   -l统计行数        
     4.多命令顺序执行

    多命令执行符 格式 作用
    ;

    命令1 ; 命令2

    多个命令顺序执行,命令1和命令2之间没有逻辑联系
    && 命令1 && 命令2 命令1执行正确命令2才执行,命令1执行不正确,则命令2不执行

    ||

    命令1 || 命令2 命令1执行不正确命令2才执行,命令1执行正确,则命令2不执行

    管道符

    命令1 | 命令2 命令1的正确输出作为命令2的操作对象

                                                      more:能查看文件内容但不能查看命令执行结果

                  netstat -an 查看linnux中所有的网络连接

     5.shell中特殊符号

  • 相关阅读:
    数据结构和算法关系
    x轴滚动
    常用Python第三方库简介
    devgridContral
    第一次线程使用经验总结
    调取图片出现的的内存泄露,导致大红叉
    IEEE754 处理数据变换
    c# 基础任务1
    Python-常用第三方库
    C#高性能大容量SOCKET并发(八):通讯协议
  • 原文地址:https://www.cnblogs.com/yanweichen/p/9063981.html
Copyright © 2011-2022 走看看