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中特殊符号

  • 相关阅读:
    SQL学习
    FOR XML PATH
    IOS学习网址
    weak nonatomic strong等介绍(ios)
    UVALive3045 POJ2000 ZOJ2345 Gold Coins
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA10905 Children's Game
  • 原文地址:https://www.cnblogs.com/yanweichen/p/9063981.html
Copyright © 2011-2022 走看看