• Linux 常用命令总结【20190822号更新】自己需要常看


    linux查看指定文件夹大小
    du -sh 目录/

    du -sh * | sort -n 统计当前文件夹(目录)大小

    写在前面:

    总结一些自己在工作中常用到的命令,还有就是其余地方学习到的一并整理

    1.find - 查找特定的文件:

    语法:find path [options] params

    find / -name “nginx.conf”

    精准查找:
    指定目录下查找文件,不指定path代表当前目录
    find -name “nginx.conf”

    模糊查找:
    模糊匹配 * 代表0个或多个字符
    find / -name “nginx.conf

    忽略大小写查找: -iname
    find / -iname “nginx.conf”

    帮助文档:
    man find

    2.grep 和 管道符

    检索文件内容,文本搜索工 具

    语法:grep [options] pattern file

    作用:查找某文件里 符合条件的行

    | - 管道操作符:

    前一个指令的结果作为 ,后一个指令的输入【右边的命令能够接收标准输入流】

    find / -name “nginx.conf”
    find / | grep “nginx.conf”

    常用接收 数据管道的命令有:
    sed
    awk
    grep
    wc
    join
    sort
    split
    cut
    head
    top
    less
    more

    案例:查询指定log日志文件中,某一行是否存在

    匹配出包含某些字符的行:
    grep ‘partial[true]’ access.log
    进一步匹配,上一步的结果

    将结果中包含,对特定关心的一列 进行匹配出来
    grep ‘partial[true]’ access.log | grep -o ‘engine[[0-9a-z]*]’

    ps -ef |grep mysql |grep -v “grep”

    3.awk - 对文件内容做 统计

    特别适合处理结构化数据

    语法: awk [options] ‘cmd’ file

    一次读取一行文本,按照输入分隔符进行切片,切成多个部分
    将切片直接保存在内建分变量中,$1,$2($0表示全部)
    支持对单个切片进行判断,支持循环判断,默认分隔符是空格
    

    根据空格筛选出文件的第一列和第四列
    awk ‘{print $1,$4}’ student.txt

    awk ‘$1==“tcp” && $2==1 {print $0}’ student.txt

    表头输出出来
    awk ‘($1==“tcp” && $2==1) || NR=1 {print $0}’ student.txt

    指定分隔符为逗号:-F “,”
    awk -F “,” ‘{print $2}’ test.txt

    案例:某文件 各个字符出现的次数 ,类似于WC

    grep 'partial[true]' access.log 
    | grep -o 'engine[[0-9a-z]*]' 
    | awk 
    '{array1[$1]++}END
    {for(i in array1)
    print i "	" array1[i]
    }'
    

    4.sed - 批量替换文件内容

    sed 流编辑器

    语法: sed [option] ‘sed command’ filename

    适合用于对文本的行内容 进行处理

    replace.java
    Str a = “This is java liuge”.

    输出到终端:^Str打头的行
    sed ‘s/^Str/String/’ replace.java

    改变文件的内容 -i:
    sed -i ‘s/^Str/String/’ replace.java

    改变文件的内容 -i:.$ 点号结尾
    sed -i ‘s/.$/;/’ replace.java

    只是会替换每一行的第一个liuge
    sed -i ‘s/liuge/liuge2/’ replace.java

    全文替换:g
    sed -i ‘s/liuge/liuge2/g’ replace.java

    删除空行:
    sed -i ‘/^ *$/d’ replace.java

    删除包含is 的行:
    sed -i ‘/is/d’ replace.java

    ------ending-------

    netstat -tanp | grep 端口号

    kill -9 pid

    =20190822号更新===

     玩转大数据之shell
     
     
    mkdir shell
    第一个脚本:
    vim wordcount.sh
    #!/bin/bash
    # 解析器
    echo "www.csylh.cn"
     
    -bash: command not found:的问题
    echo $PATH
    新建文件,默认权限是:644 用户 用户组 其他
    可以更改为:654
    生产上不建议: chmod +x 文件
    
    
    -------------------
    怎么调试呢?#!/bin/bash -x
    #!/bin/bash -x
    # 解析器
    echo "www.csylh.cn"
    写复杂的shell 还是建议调试
    
    或者: sh -x aaa.sh
    
    总结:
    1. 开头定义: #!/bin/bash
    2. sh -x xxx.sh   【调试】
       ./xxx.sh    【不想调试】
    
     #!/bin/bash -x 这样会影响结果查看
     
     sh 命令的话 就不太care 是否有#!/bin/bash
     
     
    2. 定义变量 及引用=====================
    vi viriable.sh
    #!/bin/bash
    
    # 静态变量
    lg="www.csylh.cn"
    
    # 动态变量,会变化
    date=`date`
    
    echo ${lg}
    echo ${date}
    
    引用:
    	$k
    	${k}
    
    
    总结:
    1. = 前后不能有空格
    2. 字符串最好加上双引号
    3. 引用变量加上{}
    
    
    
    3. 传递参数 =====================
    vim paramater.sh
    
    #!/bin/bash
    
    echo $1
    echo $2
    
    echo "参数个数:$#"
    
    echo "传递参数作为一个字符串显示:$*"
    
    echo "PID: $$"
    
    sh paramater.sh a b 
    输出:
    a
    b
    
    sh paramater.sh "a b"
    输出:
    a b
    
    
    4. 数组 =====================
    linux 里面是一个一维的数组
    vim array.sh
    #!/bin/bash
    
    arr=(liuge lihong ehiehi jiji)
    
    # 打印出所有的值
    echo ${arr[*]}
    # 打印出第一个值
    echo ${arr[0]}
    
    echo ${#arr[*]}
    
    问题:* 号也可以使用@符号
    
    
    5. if判断 =====================
    vim if.sh
    #!/bin/bash
    
    a="abc"
    b="edf"
    # 判断是否相等
    if [ "${a}" == "${b}" ];then
    	echo "=="
    else
    	echo "!="
    fi
    
    sh -x if.sh
    
    
    另外一种:
    vim if.sh
    #!/bin/bash
    
    a="ccc"
    b="edf"
    # 判断是否相等
    if [ "${a}" == "${b}" ];then
    	echo "==" 
    elif [ "${a}" == "ccc" ]
    then
    	echo "=="
    else
    	echo "!="
    fi
    
    sh -x if.sh
    
    
    
    6. 循环 =====================
    for 
    while
    
    vim forwhile.sh
    #!/bin/bash
    
    echo "~~~~~~循环 1 2 3 4 5~~~~~~~~"
    for x in 1 2 3 4 5
    do
    	echo $x
    	
    done
    
    echo "~~~~~~循环(i=1;i<10;i++)~~~~~~~~~~"
    for ((i=1;i<10;i++))
    do
    	echo $i
    	
    done
    
    echo "~~~~~~while循环~~~~~~~~~~"
    
    j=1
    while(($j<10))
    do
    	echo $j
    	let "j++"
    done
    
    
    sh forwhile.sh
    
    
    7. 字符串分割 =====================
    vim split.sh
    #!/bin/bash
    
    s="liuge,lihong,jiji,heiehei"
    echo "~~~~~~~~~写法1~~~~~~"
    OLD_IFS="$IFS"
    IFS=","
    arr=($s)
    IFS="$OLD_IFS"
    
    for x in ${arr[*]}
    do
    	echo $x
    done
    
    echo "~~~~~~~~~写法2~~~~~~"
    
    arr2=(${s//,/ })
    for x in ${arr2[*]}
    do
    	echo $x
    done
    
    --------------------------
    作业:
    1. if 判断  数字大小 
    			判断文件是否存在 
    			文件是否为空
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    用华为云cli(命令行程序),管理华为云服务器的,安全组端口
    分布式运算中,高精度校时器的畅想
    powershell版,Fail2Ban脚本,阻止黑客攻击sshd
    对比nushell和powershell
    TagHelper 中使用 ViewBag 及其他
    测试其它 节选自《闻缺陷则喜》(此书可免费下载)
    单元测试 节选自《闻缺陷则喜》(此书可免费下载)
    概要设计 其它 节选自《闻缺陷则喜》(此书可免费下载)
    python进程
    JWT-jwt是什么
  • 原文地址:https://www.cnblogs.com/liuge36/p/12614739.html
Copyright © 2020-2023  润新知