zoukankan      html  css  js  c++  java
  • shell常用命令

    1. awk

    awk -F ',' '{print $NF, $(NF-1)}'        ##F 是field

    2. sed 's/a1/a2/g'

    1) 批量替换多个文件中的字符串命令如下:sed -i “s/原字符串/新字符串/g” `grep 原字符串 -rl 所在目录`

    例如:我要把 charset=gb2312 替换为 charset=UTF-8

    sed -i “s/charset=gb2312/charset=UTF-8/g” ‘grep charset=gb2312 -rl /www’  

    解释一下:

    -i 表示inplace edit,就地修改文件

    -r 表示搜索子目录

    -l 表示输出匹配的文件名

    这个命令组合很强大,要注意备份文件。

    例2

    数据 test1.TXT: 541187434656[02]真彩钢笔FP6328学生

    要求更换分隔符:  把[02] 替换为 |

    cat test1.TXT| sed "s/002]//g" |sed "s/[//g" |sed "s/\/|/g" 
    

    1st sed: 把 002] 替换为空

    2nd sed:把[ 替换为空,需要对[转义  [

    3rd sed: 把 替换为 |, 需要两个反斜杠转义 \ 

    2) 去掉文件中的所有空格

    3. wc -l

    4. regexp_extract

    5. 压缩与解压

    tar -zvcf .tar.gz   /   tar -ztvf

    gzip                  /    gunzip 

    zcat 压缩包 可以阅读压缩包

    6. 删除

    rm -r part=2016-08-23/     r 递归   特殊字符加上转义

    rm -v                                 v 显示删除内容

    rm -rf  强制删除文件夹及其内容

    cp -R 可以复制整个文件夹

    mv 可以重命名文件

    7. 查看磁盘使用情况 

    df -lh

    8. 获得一个路径下面的文件夹名

    ls –l $path|awk ‘/^d/ {print $NF}’

     

    #获得一个路径下面的文件名

    1)  不包含路径

    ls –l $path|awk ‘/^-/ {print $NF}’

    2)  包含路径

    find $path –name “*.*”

     

    find $path   ## 输出file和folder(包含路径)

    9. 变量和数值加减

    I=$((NUM+1))

    I=`expr $NUM +1`

    10. 读取文件除第一行之外的记录

    ls –l|sed ‘1d’

    11. 取字符串变量的第几位的值

    var=’abcder’

    a=${var:0:1}  --a

    b=${var:1:2}  --bc

    c=${var:1:1}  --b

    12. 查看后台任务,kill

    ps -au 

    ps -ef 查看 nohup的后台任务

     

    kill -9 pid 杀死某个进程id

    13. ulimit / error: too many open files

    max open files 查看 ulimit -n,机器一般缺省默认为1024

    当作负载较大的服务器时,很容易遇到error: too many open files。因此,需要将其改大。

    改大方式:

    1)ulimit -SHn 65535 等效于 ulimit -n 65535,这是即时修改方式,重启后失效。

    2)在/etc/rc.local 中增加一行 ulimit -SHn 65535
    3)在/etc/profile 中增加一行 ulimit -SHn 65535
    4)在/etc/security/limits.conf最后增加如下两行记录
        * soft nofile 65535
        * hard nofile 65535

    14 退出命令:

         退出ssh: exit

         退出mysql:quit

         退出虚拟机:deactivate

    15 日志

    log_file="/root/BI_scripts/logs"/"$TODAY".log
    exec 1>>$log_file
    exec 2>>$log_file
    

    1是成功日志,2是失败日志

    16 输出空格

    echo -e '
    '
    

    17 当前日期与时间

     #当前时间
        local curtime;
        curtime=`date +"%Y-%m-%d %H:%M:%S"`
    
     #当前日期
        TODAY=$(date +%Y%m%d) 
    endTime=$(date +%s)
    endDateTime=$(date -d @$endTime)
    diff=$(($endTime-$startTime))
    
    echo "Step2: 存储执行完成: $endDateTime"
    echo "耗时: $(($diff / 60)) minutes and $(($diff % 60)) seconds."

    18 crontab

    crontab -e

    crontab -l

    定时任务格式

    #30 6 * * *   nohup sh /data/admin/adsprecise/sources/transfers.sh tb_plan_click &

    19. 保存日志

    #添加日志文件 auto_deploy.log 目录是test/logs/
    date=$(date +%Y%m%d)
    log_file="logs/auto_deploy_"$date".log"
    
    echo
    echo 'Executing... Pls check process details in log file test/logs/auto_deploy.log'
    exec > $log_file 2>&1
    

    20. 判断是否存在

    1) 判断入参是否存在

    #判断输入参数是否齐全
    #参数1
    if [ $1 ] && [ $2 ] && [ $3 ]
    then
          sql_folder=$1 && echo "参数1 ready:"$sql_folder
          hospital=$2 && echo "参数2 ready:"$hospital
          state=$3 && echo "参数3 ready:"$state
    else
       echo -e "Error:参数缺失,请提供入参,重新执行!
    需要3个参数:脚本目录、指定医院(zrxwother)、是否启用细指标(1关闭 2开启)"
    fi
    

    2)判断文件是否存在

    if [[ -f objects.txt ]]
    then
            rm -f objects.txt
    fi 
    

    3) 判断文件夹是否存在

    #判断是否存在相应文件夹
    if [ ! -d "$version" ]; then
            mkdir $version && echo "文件夹${version}创建ok."
    else
       rm -rf $version && mkdir $version && echo "文件夹${version}重新创建ok."
    fi
    

    21. if else 语句

    • 括号前后必须有空格
    • 注意单括号和双括号的问题
    if [[ $part == "ind" ]] #如果是变量,也可以双括号[[ 不需要双引号
    then 
        echo "right1" 
    elif [ "$part" == "VTE" ] #如果是变量,单括号[ + 双引号 
    then 
        echo "right2" 
    elif [ 1 == 1 ] #如果是常量,可以用单括号[
    then 
        echo "right3" 
    else 
        echo "end" 
    fi
    

     22. vi撤销编辑

    撤销操作:u
    
    恢复操作:ctrl+r
    

      

      

      

  • 相关阅读:
    Web Api系列教程第2季(OData篇)(一)——OData简介和一个小应用
    漫步ASP.NET MVC的处理管线
    使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【十】——使用CacheCow和ETag缓存资源
    工具分享——将C#文档注释生成.chm帮助文档
    使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【外传】——Attribute Routing
    使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【九】——API变了,客户端怎么办?
    使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【八】——Web Api的安全性
    C#基础——谈谈.NET异步编程的演变史
    使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【七】——实现资源的分页
    使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【六】——实现资源间的关联
  • 原文地址:https://www.cnblogs.com/skyEva/p/5806342.html
Copyright © 2011-2022 走看看