zoukankan      html  css  js  c++  java
  • Shell4

    ssh 192.168.4.5
    >提示continue,连接过的主机不会提示
    >连接过的主机 文件存放位置:/root/.ssh/known_hosts


    #####################################################################
    字符串的截取:
    # X=1383838438
    # echo $X
    1383838438
    # echo ${X}
    1383838438
    # echo ${#X}
    10


    第一种
    ${var:起始位置:长度},从第0位开始
    ${X:0:4}
    ${X:3:6}
    ${X::4}

    对下面的数随机取一为做随机密码:
    # X=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
    # n=$[RANDOM%62]     26小写字母+26大写字母+10个数字=62  
    # echo ${X:$n:1}

    X=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
    pass=''
    for i in {1..6}
    do
      n=$[RANDOM%62]    #26小写字母+26大写字母+10个数字=62
      tmp=${X:$n:1}
      pass=${pass}$tmp
    done
    echo $pass


    第二种
    expr substr $变量 开始位 长度
    # X=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
    # expr substr $X 2 3      #从第1位开始数,没有第0位
    bcd
    # expr substr $X 1 3
    abc


    第三种
    echo $变量|cut -b 开始位置-结束位置
    echo $X |cut -b 2-5
    echo $X |cut -b 3,8,11
    ########################################################################

    vim 替换
        :s/old/new


    # X=1383838438
    # echo ${X/3/#}     /表示替换一个数,这里代表将第一个3替换成#
    1#83838438
    # echo ${X//3/#}    //表示替换所有的数,这里代表将所有的3替换成#
    1#8#8#84#8
    注意这种替换并不改变X变量的值
    # echo $X
    1383838438


    掐头、去尾
    ${变量#}     掐头
    ${变量%}    去尾

    # X=`head -1 /etc/passwd`
    # echo $X
    root:x:0:0:root:/root:/bin/bash
    # echo ${X#*:}              一个#代表最短的*:内容  掐掉开头
    x:0:0:root:/root:/bin/bash
    # echo ${X##*:}             两个##代表最长的*:内容  掐掉开头
    /bin/bash


    # echo ${X%:*}              一个%代表最短的*:内容  去掉尾巴
    root:x:0:0:root:/root
    # echo ${X%%:*}             两个%%代表最长的*:内容  去掉尾巴
    root

    ##############################################################
    echo ${变量:开始:长度}    截取
    echo ${变量/old/new}      替换
    echo ${变量#}             掐头
    echo ${变量%}             去尾
    echo ${变量:-}             初始化

    touch {a、b、c、d、e、f}.txt

    批量重命名:将.txt改为.doc
    for i in `ls *.txt`
    do
       mv $i ${i%.*}.doc
    done

    ###############################################################

    数组:一个变量存多个值
    X=(11 22 33 aa bb cc)
    # echo ${X[0]}
    11
    # echo ${X[1]}
    22
    # echo ${X[4]}
    bb
    # echo ${X[*]}
    11 22 33 aa bb cc

    ##############################################################
    非交互式发送邮件
    echo "内容" |mail       #不需要文件  
    mail < 文件                       #需要另外一个文件,内容可以很复杂


    yum -y install expect 非交互的工具expect
    vim test.sh
    mail -s error root << EOF    end of life
    内容
    内容
    内容
    ......
    EOF
    #############################################################

    #!/bin/bash
    rm -rf /root/.ssh/known_hosts     #所有已经连接过的主机存储为这个位置,删掉后会>提示未连接过的主机,要不要继续远程登录
    expect << EOF
    spawn ssh 172.25.0.10
    expect "continue" {send "yes "}
    expect "passwd" {send "redhat "}
    expect "#"      {send "touch /a.txt "}
    expect "#"      {send "exit "}
    EOF

    3个问题
      1、continue的问题
    rm -rf /root/.ssh/known_hosts     #所有已经连接过的主机存储为这个位置,删掉后会>提示未连接过的主机,要不要继续远程登录
        2、超时问题
    set timeout
        3、最后一行不执行


    ####################################################################################
    正则表达式:使用特殊符号去表达的一种方式
    ^   开始
    $   结尾
    []   集合、取之一

    [abcdef56789]==[a-f,5-9]==[5-9,a-f]
    [abc]==[cba]==[bac]==[bca]==[cab]==[acb]

    [^]   对集合内容取反
    .      任意单个字符,同?
    *     匹配前一个字符出现了任意次
    .*    匹配任意长度的任意所有
    {n,m}   匹配前一个字符出现了n到m次  
    {n,}    匹配n个以上的(包括n个)
    {n}     匹配n个   
            grep a{3,5} 匹配3到5个a; grep a{3,} 匹配3个以及3个以上的a; grep a{3} 匹配3个a

    #####################################################################################
    unset 变量    #清除变量的值
    [a-Z]==[a-z,A-Z]


    扩展正则表:(简化基本,扩展新的)
    {2,5}----------------->{2,5}
    ()                         ()
    *任意次                   ? 前面的字符出现0次或1次
                                   +  前面的字符出现至少1次
    ()整体                      (abc)+
                     abc  abccc  abccccc...
    |或者                        (test|taste)

    扩展正则:写的简单,兼容性差(支持正则的不一定支持扩展)
    基本正则:写的麻烦,兼容性强(几乎所有支持正则的都支持)
     
    grep不支持扩展正则  
    egrep支持扩展正则
    grep -E 扩展正则  用grep调用egrep来支持扩展正则

    egrep "the" txt   #代表单词边界
    ###################################################################################
    ()      保留(复制)
    ()          保留(复制)
    1        将保留的第一个复制出来

    vim a.txt
        abcdefabcdefabcdefabcdef
    grep "(abcdef)111" a.txt  将()里面的保留内容复制粘贴3遍  所有的字母都变红

    vim a.txt
        abcdefabcdeffqwerfqwer
    grep "(abcdef)1(fqwer)2" a.txt  将第一()里面的保留内容复制粘贴1遍;将第二()里面的保留内容复制粘贴1遍  所有字母都变红

    vim a.txt
    hello the world
    ni hao ya
    san li tun jian
    把第一个字母和最后一个字母对调
    sed -r 's/^(.)(.*)(.)$/321/' a.txt


  • 相关阅读:
    [Luogu P3626] [APIO2009] 会议中心
    杭电 1869 六度分离 (求每两个节点间的距离)
    杭电 1874 畅通工程续 (求某节点到某节点的最短路径)
    最短路径模板
    杭电 2544 最短路径
    POJ 1287 Networking (最小生成树模板题)
    NYOJ 1875 畅通工程再续 (无节点间距离求最小生成树)
    POJ 2485 Highways (求最小生成树中最大的边)
    杭电 1233 还是畅通工程 (最小生成树)
    杭电 1863 畅通工程 (最小生成树)
  • 原文地址:https://www.cnblogs.com/baichuanhuihai/p/8133990.html
Copyright © 2011-2022 走看看