shell脚本基础

shell脚本调试

-n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误
-v,一边执行脚本,一边将执行过的脚本命令打印到标准错误输出
-x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来

shell脚本对文本中无序的一列数字排序

1
[root@server ~]# sort -n 190307.txt | awk '{a+=$0;print$0} END {print "sum="a}'

shell命令查看文件空行行号

1
2
3
4
[root@server ~]# grep -n ^$ filename
[root@server ~]# sed -n '/[a-zA-Z0-9@#$%^&*]!=' filename
[root@server ~]# sed -n '/^$/=' filename
[root@server ~]# awk '/^$/{print NR}' filename

shell文件夹操作

  1. 删除一个文件夹下所有文件但是不删除文件夹

    1
    [root@server-ai ~]# find . -type f | xargs rm -f
  2. 只复制目录的结构,而不复制目录的内容

    1
    [root@server-ai ~]# find ~ -type d -exec mkdir -p demo/\{\} \;
  3. 查找当前文件夹下所有的文本文件内容中包含有字符”math”的文件名称

    1
    [root@server-ai ~]# grep -r "math" /home/chenjiawei/test/shell/ | cut -d ":" -f 1
  4. 遍历目录及其子目录中的所有文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #! /bin/bash
    function read_dir(){
    for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令
    do
    if [ -d $1"/"$file ] #注意此处之间一定要加上空格,否则会报错
    then
    read_dir $1"/"$file
    else
    echo $1"/"$file #在此处处理文件即可
    fi
    done
    }
    #读取第一个参数
    read_dir $1

    执行命令

    1
    $ sh traveDir.sh DIR_NAME