Linux命令总结

作者: wo_monic | 来源:发表于2019-09-27 09:37 被阅读0次

    linux三剑客awk、grep、sed应用环境即常用命令

    linux常用命令链接

    https://man.linuxde.net/dos2unix

    https://man.linuxde.net/命令

    https://man.linuxde.net/awk

    文本处理

    • awk

      cat name.txt|awk '{print $1,$NR,$0}' 读取name.txt 输出第一列(1),最后一列(NR),和整行($0)

    分列输出文件无需循环,分列精品。

    awk -F , 'NR!=1{print $2 >$1".txt"}' geneinfo.csv 指定 ,为分隔符,逐行输出第二列的内容到对应的第1列的文件名的txt文件。

    cat name| grep zhan 查找name文件里含有zhan的行
    grep -v "node" filename 查找filename里不包含node的行

    • sed

      sed -n '1,10p' name.txt 获取1-10行的内容

    • cut
      cut -f 4-10 test.txt#获取text.txt的第4-10列。

    cut参数说明

    -b 表示字节;
    -c 表示字符;
    -f 表示定义字段。

    指定分隔符号使用-d 符号
    N-:从第N个字节、字符、字段到结尾;
    N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
    -M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。
    例:
    cut -f 5- -d "," test.csv 查看test.csv文件的第5列到最后一列,指定的分隔符号是,
    cut -c 1-4 test_Dsuite.txt 查看文件的第1到第4个字符。

    • column
      column -t 文件按照table格式查看,配合head可以更加清楚的阅读文件的前几行。
      column -t test_Dsuite.txt|head -5 查看tab分割文件的前5行,以table格式查看。

    文件处理

    • find 查找文件

      find -n

    • rename 批量重命名(此处的rename是perl版本的)

      rename有C语言版本和perl版本,以下命令均是perl版本的命令。

      使用命令man rename如果返回的窗口首行有perl`则是perl版本,否则即是C语言版本。

      ubuntu安装perl版本的rename

      sudo apt update
      sudo apt-get install rename
      

    rename参数讲解: s表示使用正则, 第1-2个/之间是要匹配的内容,$表示文件结尾。第2个/之后是要替换成的内容,最后跟上要操作的文件 *表示所有文件。注意:perl中''""不等价,此处应该使用的是单引号''

    • 字符替换

      rename 's/AA/aa' *.fa 把所有.fa文件名中的AA替换成aa

    • 修改文件后缀

      rename 's/\.html/\.php' * 把.html文件改为.php文件

      rename 's//$/.txt' *把所有文件名末尾添加.txt

      rename 's/^/admin' * 所有文件开头添加字符admin

      rename 'y/A-Z/a-z/' * 修改文件名大写字符为小写

      rename 's/[]+//g' * 去掉文件名中的空格

      rename 's/\.bak$//' *.bak 所有的.bak后缀名的文件全部删除后缀名

    • 正则匹配修改文件名

      • rename 's/(/d)/第$1章/' * 修改为第1章,第2章

    方法1:把文件名拆分处理,可以任意修改文件名

    find -name '*.log' -printf %f//n|awk -F'.' '{print $1}'|xargs -i{} mv {}.log xiyun_{}.log

    方法2:利用rename

    一般的linux下的rename命令比较简单

    rename 'test' 'xiyun' '*.log'

    把文件名中的某部分字符串替换掉

    ubuntu下的rename命令支持正则表达式,因此功能更强大。

    方法3:直接利用find和xargs和mv,中间不用awk,这样只能添加后缀名,不能修改文件名。

    • ln 建立超链接

      ln 远端文件 新文件 新文件即生成的远端文件的硬链接

      ln -s /disk/readme ./read 生成软链接,实际是在当前目录生成名为read的超链接,链接到disk/readme ,访问read,即相当于访问readme

    • dos2unix 转换windows文件为Unix格式

      dos2unix test.py把test.py转换成Unix格式

      dos2unix -n test.py u-test.py把test.py转换成unix的新文件u-test.py

      dos2unix -o test.py直接修改原始文件格式为unix

      dos2unix file1 file2 file3 同时修改多个文件的格式为unix

    • unix2dos 转换Unix格式为windows

      unix和windows 的文件格式中换行符的格式不一致,一定要注意转换换行符。否则会报错。

      unix和windows的文件系统也不一致,windows的Fat32(不支持单个文件大于4G),NTFS(目前常用的文件系统格式),linux是Ext2格式。如果要在两种系统格式之间传输文件,NTFS的硬盘在linux上不会被识别,最后使用第三方软件识别。

    • md5sum MD5值生成核对

      md5sum test生成test文件的md5值。

      md5sum -c testsum test 核对test的文件和testsum文件中的MD5值是否一致。

    • 排序参考
      sort test.txt排序
      sort命令的字段
      -n按照数字进行排序 -d 按照字典顺序排序
      -r 逆序排序
      -k N指定按第N列排序
      sort -nrk 1 data.txt
      sort -bd data//忽略空格之类的前导空白符
      sort info.csv|uniq 反向排序
      sort test.txt | uniq消除重复行
      sort test.txt | uniq -c 统计重复行出现的次数
      sort test.txt | uniq -d找出重复行
      指定每行中需要比较的重复内容 -s 开始位置 -w 比较字符数

    • 进程管理(杀死进程参考)
      ps 查看后台进程(仅限当前终端用户的后台进程)

      image.png
      ps命令输出的第一列即为PID.
      ps -ef查看所有用户进程
      kill -s 9 3645522 杀掉PID为3645522的进程,此处是杀掉md5sum的进程。
      pkill -9 md5sum 强力删除程序名为md5sum的进程。
    kill -s 9 `pgrep vim `  #使用pgrep和kill来删除名字为vim的进程。
    

    -进程检测
    ps -x |grep fastp|grep -v "grep"|wc -l 统计当前用户的所有运行进程中,名字为fastp的进程数量

    • 文件名字符的处理
      cut参考
      expr参考
      name是一个文件夹,里面有zao_L2_384384.R1.fastq.gz之类文本。
      cut -f1 -d "." name 指定分割符号.分割,获取第一列的字符
      cut -f1 -d "." --complement name 指定分割符号.分割,删除第1列后的字符
      expr substr zao_L2_384384.R1.fastq.gz 1 3 获取字符串的指定字符,第1-3个字符。
      -xargs
      ls *.gz|grep F2-3|xargs -i mv {} ./F2-3/查找当前目录中所有的gz文件,从中找到含有F2-3的,全部移动到当前目录中F2-3文件夹中。

    进程监控脚本

    #!/bin/bash
    line=`ps x|grep processname|grep -v "grep"|wc -l`
    while [ $line -gt 0 ]
    do
        echo "no~"
        sleep 30
        line=`ps aux|grep processname|grep -v "grep"|wc -l`
    done
    echo "yes!"
    
    image.png

    磁盘空间查看

    df -lh 查看整个服务器的磁盘分区使用情况
    du -lh 查看当前目录的磁盘使用情况

    查看服务器运行状态

    top 所有信息
    top -u username 指定用户的运行信息
    ps -ef所有进程信息
    ps -x 当前用户的进程

    文件查看工具

    head filename 查看前几行,

    • head -10 readme 查看readme文件的前10行
      tail filename
    • tail -8 errinfo 查看errinfo文件的后8行
      more filename 滚动方式查看文件,空格或enter键,往下继续阅读。不能上翻
      less filename 滚动方式查看文件,pgdn向下翻页,pgup向上翻页。
      vim readme 使用vim编辑readme文件。

    文件传输

    常用的文件传输类型有:win-linux和linux-linux
    mac没用过不清楚。

    • windows传输到linux,我一般使用 winSCP这个软件下载地址。各大软件商店都有这款软件。
    • linux到linux传输,使用命令scp.参考文章
      例如有如下两个主机:172.28.218.254(本地)172.28.210.9(远程)
      传输文件
      在本地主机(172.28.218.254)运行如下命令:
      说明:chaim是我在远程主机上的用户名
      • 获取远程目录maize
        scp -r chaim@172.28.210.9:/disk/maize/ ./maize/
        /disk/maize/ 这是远端服务器的文件地址 ./maize/这是存储到本地服务器的地址
      • 获取远程文件readme
        scp chaim@172.28.210.9:/home/info/readme ./Readme
        +将本地文件上传到远程
        scp /public/disk.info chaim@172.28.210.9:/home/info/disk.info
        +将本地文件夹上传到远程
        scp -r /public/maize/ chaim@172.28.210.9:/disks/backup/maize/
    在经历了scp传输中断,多个大文件需要重新传输的痛苦后,决定使用支持断点续传的rsync

    rsync 传输时,在另一端主机上会生成临时的隐藏文件,通过ls -la可以查看到。等待传输完成或中断时会显示出正常的文件名。
    上传数据到远程服务器
    rsync -P --rsh=ssh readme.md tang@172.28.218.254:~/chaim/

    相关文章

      网友评论

        本文标题:Linux命令总结

        本文链接:https://www.haomeiwen.com/subject/ueuouctx.html