zoukankan      html  css  js  c++  java
  • Liunx命令工作总结(2)

     Liunx命令工作总结

      因为公司资料不能外传,以前有很多总结文件也拿不出来,离职之际,抄了点出来。就是这个总结的来源。将来也好查一点。

     

    1,cat命令:

    一次显示整个文件

    cat filename

    显示行号的话

    cat -n flename

    将几个文件合并为一个文件

    cat file1 file2 > file3

    假设我们配置文件是如下的格式:

    name=orcal
    password=nanjing

    在shell脚本里想取值的话:

    name=`cat file | grep name | awk -F '=' '{print $2}'`

    2,用sed做一些配置文件替代的操作

    把"defaultCluster"替换成$cluster变量

    sed -i 's/defaultCluster/'$cluster'/g' /home/conf/cluster.xml

    以下是文件夹下全局替换,这个我觉得用到多文件的修改场景很适合,把10.127.10.88替换成$local_ip变量

    find /home/map/ms/conf -type f | xargs -n | sed -i 's/10.127.10.88/'$local_ip'/g'

    以上是对转个字符串的替换,需要文件中有defaultCluster,10.127.10.88这样的字符串,才能替换。
    考虑到一半会使用xml文件来作为项目的配置文件,所以我觉得使用匹配的方式去替换比较好

    sed -i 's/svrid/' $svr_id '/g' /config.xml
    改写成:
    sed -i 's/.*\<svr_id>.*/\t\<svr_id>'${svr_id}'<\/svr_id>/' /config.xml

    如此就不需要保证config.xml的<svr_id>字段内容是svrid就可以替换了,说明:其中的\t是用来缩进的
    其他的替换方式:

    比如配置文件内容:

    ...
    <x>
    <enable>0</enable>
    <ip>0.0.0.0</ip>
    ...
    </x>
    <uoa>
    <enable>0</enable>
    <ip>0.0.0.0</ip>
    ...
    </uoa>
    ...

    1,解释一下场景<enable>字段是用0或1的,作用是把他改成1,因为xml文件中有很多<enable>字段,如果使用全局的替换,不能解决需求,考虑到<enable>字段都是在主节点(比如<uoa>这样的节点)后面的第一行,所以就想到用这样下一行匹配的方式来解决,其中的N就是这个作用

    sed -i '/<uoa>/{
        N
        s/\(<enable>\).*\(<\/enable>\)/\11\2
    }' config.xml

    2,上一个方式的缺陷就是万一字段顺序变了怎么办呢
    我就想是不是在在一个范围内进行匹配嘛,从<uoa>到</uoa>的范围内进行匹配

    sed -e '/<uoa>/,/<\/uoa>/s/\(<enable>\)/\(<\/enable>\)/\11\2/g' config.xml

    3,脚本中想要执行命令的时候,指定由哪一个用户来执行:

    su -logname -c "命令"

    这个应该经常要使用吧。

    4,wc命令

    1,显示一个文件的行数

    wc -l filename

    2,统计demo/目录下js文件数量

    find demo/ -name "*.js" | wc -l

    3,统计所有js文件代码行数

    find demo/ -name "*.js" | xargs cat | wc -l

    4,统计所有js文件代码行数(过滤掉空行)

    find demo/ -name "*.js" | xargs cat | grep -v ^$ | wc -l

    5,检查ip地址的合法性:

    function checkIP(){
        echo $1 | grep "^[0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}\.$"
        if[$? = 1]
            return 1
        else
            return 0
    }
    
    checkIp "$input_ip"

    说明:$1方法的第一个字段,$?上一个命令的执行结果成功与否,失败返回1,成功返回0。事实生着方法啥也没干....呵呵

     

    6,判断

    (1)数值判断:

      -eq 等于则为真。
      -ne 不等于则为真。
      -gt 大于则为真。
      -ge 大于等于则为真。
      -lt 小于则为真。
      -le 小于等于则为真。


    (2)字串判断:

      = 等于则为真。
      != 不相等则为真。
      -z字串 字串长度伪则为真。
      -n字串 字串长度不伪则为真。

    (3)文件判断:

        -e文件名 如果文件存在则为真。
      -r文件名 如果文件存在且可读则为真。
      -w文件名 如果文件存在且可写则为真。
      -x文件名 如果文件存在且可执行则为真。
      -s文件名 如果文件存在且至少有一个字符则为真。
      -d文件名 如果文件存在且为目录则为真。
      -f文件名 如果文件存在且为普通文件则为真。
      -c文件名 如果文件存在且为字符型特殊文件则为真。
      -b文件名 如果文件存在且为块特殊文件则为真

    例子:

    while["$enable" != "y"]&&["$enable" != "n"]
    if [$x -ge 225] || [$x -le 0];then
        return 1
    fi

    继续学习!

  • 相关阅读:
    BETA 版冲刺前准备
    Alpha 事后诸葛亮(团队)
    Learn Docker(一)—软件安装与常规操作
    Alpha 答辩总结
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    团队作业-随堂小测(同学录)
  • 原文地址:https://www.cnblogs.com/killbug/p/2819901.html
Copyright © 2011-2022 走看看