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

 

继续学习!