zoukankan      html  css  js  c++  java
  • linux shell脚本攻略笔记

      前一阵子系统学习了下《linux shell脚本攻略》这本书。在此记录下自己的学习笔记

    1. 输出颜色字符 
    echo -e "e[1:41m" 1表示背景色
     
    2.  echo 打印!需要注意 
    echo "hello, bash!"  会出错 
    需要改成 echo 'hello, bash!'
     
    3. printf可用于格式化输出 
    printf "format"  var1 var2 ...
     
    4.  echo 
    echo -n  # 不添加换行符
    echo -e  # 使用转义序列  相当于 echo "XXXX"
    echo -e "e[id1 XXXXXX"                 # 
     
    echo 显示颜色   
    其中id用于设置字背景颜色
     
    5.  pgrep  
    pgrep 进程名  # 相当于ps -ef  
    cat /proc/$PID/environ # 查看进程运行过程中的环境变量
     
    6. (())
    c=$((a+b))  # 赋值方式1
    ((c = a+b))  # 赋值方式2
     
    7. 重定向
    # 将标准输出定向到stdout.txt 将标准错误输出定向到stdout.txt 
    sh mybash.sh 1>stdout.txt 2 > stdout.txt
     
    # 更简单的方案 注意&和>之间不能有空格 
    sh mybash.sh &> stdout.txt
     
    8. exec 
    # 创建文件描述符
    exec 4 < log.txt
    exec 5 > log.txt
    exec 6 >> log.txt
     
    9. 哈希数组 
    # 声明
    declare -a map
     
    # 定义
    ${map[key]}=value
     
    # 获取所有key
    ${!map[@]}
     
     
    10. date 
    # 显示秒数
    date +%s 
     
    # 将秒数转成字符串
    date  -d @秒数 
     
    11 tput 
    # 设置光标位置
    tput cup 行号  列号
     
    # 保存光标位置
    tput sc 
     
    # 回到保存的光标位置
    tput rc
     
    # 清除当前光标到行尾
    tput ed
     
    12. read 
    # 设置不回显
    read -s
    # 设置超时时间 
    read -t 
    # 设置读入字节数
    read -n 字节数
    # 设置提示
    read -p "please input passwd"
     
    13. cat 
    # 删除多余的空行 
    cat -s file
     
    # 打印行号
    cat -n file 
     
    # 打印出制表符
    cat -T file 
     
    14. find 
    # 打印
    find <path> -name XXX  -print 
     
    # 执行命令 
    find  <path> -name XXX -exec rm -rf {} ;
     
    15. xargs 
    # 常用用法
    cat file | xargs
     
    # 设定每行的字段数
    cat file | xargs -n 3 
     
    # 以null为换行符
    cat file | xargs -0
     
    # 代替命令中位置
    cat file | xargs -l {} rm -rf {}
     
    16. tr 
    # 替换 
    tr  字符集1 字符集2 
     
    # 删除
    tr -d 字符集
     
    # 补集
    tr -d -c 要留下的字符集
     
    # 去除重复空格
    tr -s " "
     
    17. md5sum 
    # 生成md5值
    md5sum file  > file.md5
     
    # 校验 
    md5sum -c file.md5
     
    18. sort 
    # 按照字符串排序 
    cat file | sort 
     
    #按照数字排序
    cat file | sort -n 
     
    # 逆序排序
    cat file | sort -r
     
    # 按照某列排序 
    cat file | sort -k 列数 
     
    19. dd    生成文件  
    # 从/dev/zero生成文件 
    dd if=/dev/zero of=data.file bs=100k count=1 
     
    20. split  分割文件 
    split data.file -b 10k -a 3
     
    21. 字符串分割 
    # 获取文件后缀
    echo ${filename##*.}
     
    # 获取文件名
    echo ${filename%.*}
     
    22. 单词表
    cat /usr/share/dict/words
     
    23. 自动化交互式输入
    # 标准输入
    echo "XXX"  | sh interactive.sh
     
    # 文件输入
    sh interactive.sh < input.data
     
    # expect 
    spawn  ./interactive.sh 
    expect "XXXX"
    send "YYY "
     
    24. comm
    # 求差集a-b
    comm a.txt b.txt -1
     
    # 求a+b并集
    comm a.txt b.txt 
     
    # 求ab交集
    comm a.txt b.txt -1 -2 
     
    25. 将文件设置为不可修改
    chattr +i file
    去除不可修改属性
    chattr -i file 
     
    26. 寻找软连接
    ll -rt | grep -P "^l" | awk '{print $8}'
    find . -type l
     
    27. diff
    diff -u 1.txt 2.txt 
    diff -u 1.txt 2.txt > 12.patch 
     
    28. patch
    patch -p1 1.txt < 12.patch
     
    29. pushd、popd、dirs
    # 常规用法
    pushd  directory
    popd 
     
    # 指定目录
    dirs
    pushd +N
    popd +N
     
    30. grep 
    # 显示颜色
    grep --color=auto 
     
    # 统计匹配行数
    grep -c 
     
    # 显示匹配行号
    grep -n 
     
    # 显示匹配字符偏移量
    grep -o -b
     
    # 显示匹配文件列表
    grep -l  1.txt 2.txt
     
    # 使用文件匹配
    grep -f pattern.txt  file.txt
     
    # 静默模式
    grep -q 
     
    # 定位代码
    grep -R -n 
     
    # 忽略大小写
    grep -i 
     
    # 匹配多个样式
    grep -e pattern1 -e pattern2
     
    # 显示匹配行之前N行
    grep -A 
     
    # 显示匹配行之后N行
    grep -B 
     
    # 显示匹配行之前之后N行
    grep -C 
     
    30. sed 
    # sed "s///" 替换
    echo  "hello wolrd" | sed "s/hello/goodbye/"
     
    # sed -i 替换文件内容
    sed -i 's/hello/goodbye/' 1.txt
     
    # sed 's///g' 替换所有匹配内容
    echo "thisthisthisthis" | sed 's/this/THIS/g'
     
    # sed 's///ng' 从第n处匹配开始替换
    echo "thisthisthisthis" | sed 's/this/THIS/2g'
     
    # sed '//d' 删除匹配行
    cat diff.sh | sed '/^$/d' 
     
    # 匹配字符串标记
    echo this is an example | sed 's/w+/[&]/g'
     
    # 捕捉字符串
    echo "this is a digit 7 in a numbger" | sed 's/digit ([0-9])/1/'
     
    31. paste
    # 按列合并文件
    paste file1 file2
    paste file1 file2 -d  ","
     
    32. rev
    # 字符串逆序
    echo "1234" | rev
     
    33. tac
    # 行逆序
    seq 1 10 | tac
  • 相关阅读:
    全面分析再动手的习惯:链表的反转问题(递归和非递归方式)
    Gatech OMSCS的申请和学习之奥妙
    java线程安全之并发Queue
    一篇文章看懂Java并发和线程安全
    java并发之如何解决线程安全问题
    Java并发/多线程系列——线程安全篇(1)
    当面试官问线程池时,你应该知道些什么?
    java 线程池 使用实例
    多线程-Executors和Executor,线程池
    从阿里Java开发手册学习线程池的正确创建方法
  • 原文地址:https://www.cnblogs.com/taiyang-li/p/6027971.html
Copyright © 2011-2022 走看看