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


  • 相关阅读:
    I firmly believe
    深度学习常见的专业术语
    阿里、网易和腾讯面试题 C/C++
    Winfrom中关于toolStrip工具栏中按钮背景的设置
    非常完善的Log4net详细说明
    C#中 Var关键字
    C#中Dynamic关键字
    Python中threading的join和setDaemon的区别[带例子]
    pycharm常用快捷键
    ABP发布到iis
  • 原文地址:https://www.cnblogs.com/baichuanhuihai/p/8133990.html
Copyright © 2011-2022 走看看