每天一个linux命令
Bash 的基本语法

  • 查看最近进程top,查看root用户的进程top -u root
  • 查看cpu信息lscpu 链接
  • 查看文件夹大小du -sh dirname ,除去某些文件夹或文件du -sh plassout_new/less500_1 --exclude='tmp_*',统计底下子文件夹大小du -h plassout/ --max-depth=1 ,按照文件大小排序du -hs * --exclude='tmp_*'| sort -rh | head -n 10参考 Link
  • 合并多个文本文件cat 1.txt 2.txt > all.txt,可以用`cat seq.txt > all.txt`
  • 移动文件或目录mv bfd/ database/,可以直接移目录而无需加参数
  • 重命名文件mv 1.txt 2.txt,将1改成2。
  • 删除文件rm 1.txt,删除文件夹rm -rf bfd/,-r表示乡下递归删除,-f表示强行删除,慎用!!
  • 复制文件cp 1.txt text/,复制文件夹cp -r dir1/ dir2/,将dir1复制到dir2下,若dir2不存在则是重命名dir1变成dir2。
  • 压缩.gz 不保留源文件gzip filename,保留gzip -c file >file.gz,解压缩.gzgzip -d filename.gz
  • 查找字符串grep -C 5 "abc" file,显示file中abc上下五行,并且有行数。grep "^>" 1CR5A.fasta.a3m| wc -l查找这个文件中以字符”>”开头的数目
  • 给权限chmod 777 filename,任何用户都有最高权限。4表读,2表写,1表执行。chmod 754,其他用户只可读。
  • 生成校验文件md5sum file > file.md5,检查md5sum -c file.md5需将被校验的文件放到.md5同一目录。
  • 添加环境变量,编辑~/.bash_profile文件,永久对当前用户生效。末尾加上export PATH="$HOME/software/zsh/bin:$PATH",意思就是在原本的PATH后面加上zsh软件的路径,$HOME就等于家目录(~),如果在外面输export那句话就只在当前终端有效,换了就没用了。
  • ;、&&、||是什么意思
    • 分号: 顺序地独立执行各条命令, 彼此之间不关心是否失败, 所有命令都会执行。
    • &&:顺序执行,前者成功才执行后者
    • ||:顺序执行,前者失败才执行后者
  • 默认情况下,echo输出的文本末尾会有一个回车符,-n不输出该回车符。-e解释特殊字符如hello\nworld,就可换行输出。更多详见阮一峰bash手册
  • 命令行分多行写只需在前一行末尾加 \
  • %cpuusage = **(usertime + sys_time)/real_time* 100%,分别的意义链接
  • time命令和/usr/bin/time命令。链接。time命令也能输出, (time ls) 2>file 关于shell:如何重定向“time”命令的输出?
  • 查看Linux内核版本uname -srm链接
  • 清除缓存echo 3 > /proc/sys/vm/drop_caches 链接
  • 查看内存缓存等free -h,-h表示human能看懂,-m表示单位mb链接
  • vim命令模式,4w向前4个单词,4b向后四个单词,^首字母,$末尾。

删除所在行dd。删除多行:[start],[end]d,例如.表示当前,$表示最后一行,从当前到末尾都删除
:.,$d,删除当前以下5行5dd,跳到文件链接链接

  • top命令输出及使用详解。链接。 关于state的D(不可中断的睡眠状态)的解释链接
  • 截取文件部分内容到另一个文件 head -100 filename >a.txtsed -n '100,200p' filename >a.txt,注意有个p

    删除第N行:sed -i ‘Nd’ filename 删除第M到N行: sed -i ‘M,Nd’ filename sed -e ‘/abc/d’ a.txt // 删除a.txt中含”abc”的行,但不改变a.txt文件本身,操作之后的结果在终端显示 sed -e ‘/abc/d’ a.txt > a.log // 删除a.txt中含”abc”的行,将操作之后的结果保存到a.log sed ‘/abc/d;/efg/d’ a.txt > a.log // 删除含字符串”abc”或“efg”的行,将结果保存到a.log 其中,”abc”也可以用正则表达式来代替。 ———————————————— 版权声明:本文为CSDN博主「realmeh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/realmeh/article/details/16340453

  • vim:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g) 链接

  • wc -l a.txt,计算a.txt的行数 链接
  • free -h >> free.txt 如果要观察内存问题可以每次跑一个加一行这个,写进txt记录下来统计

    wget下载进度条变成多行显示的解决方法

    1. #因为后面显示的eta太长导致自动换行了。
    2. #注意文件路径是在:/usr/share/locale/zh_CN/LC_MESSAGES/
    3. cd /usr/share/locale/zh_CN/LC_MESSAGES/
    4. #先重命名
    5. mv wget.mo wget.mo.bak
    6. #从重命名后的文件里替换eta(英国中部时间)为ETA,并导出新文件
    7. msgunfmt wget.mo.bak -o - | sed 's/eta(英国中部时间)/ETA/' | msgfmt - -o wget.mo

    但是ssh远程wget还是多行,路径底下也没有wget.mo文件,且在远程那台直接下是单行输出没问题,本机也单行,没解决。

    awk

  • awk ' NR%3==2 { print >> "./mem.txt" } ' free100.txt 提取提取每三行中的第二行,输出到新文件中。awk中间执行的程序用单引号,里面文件什么的用双引号,并且记得{后面接空格,>>代表追加,>单纯重定向。

  • image.png
  • awk获取字符串所在行号 awk '/MGYA00425288/ {print NR}' analysis_URL.txt
  • awk提取时间戳cat test | grep "INFO" | awk 'BEGIN{t=0} {if(NF==3){t+=1;if(t==3){time=$2}else if(t==4){split(time,t1,":");split($2,t2,":");print t2[1]*3600+t2[2]*60+t2[3]-(t1[1]*3600+t1[2]*60+t1[3])};if(t==12){t=0}}}'
  • awk先匹配再{} input=ls ~/test100 | awk ‘ /.fasta$/ {c=c” -i ~/test100/“$0}END{print c}’`` #匹配.fasta结尾的文件名并输出到input,c=c就是最后会有很多个-i
  • 提取文件大小信息 ll part2_3 |awk '{print $9"\t"$5 >> "inputinfo"}'
  • 文件去重 sort filename |uniq
  • [ls](https://link.zhihu.com/?target=https%3A//www.baidu.com/s%3Fwd%3Dls%26tn%3DSE_PcZhidaonwhc_ngpagmjz%26rsv_dl%3Dgh_pc_zhidao) [-l](https://link.zhihu.com/?target=https%3A//www.baidu.com/s%3Fwd%3D-l%26tn%3DSE_PcZhidaonwhc_ngpagmjz%26rsv_dl%3Dgh_pc_zhidao)t | head -n 10 显示最新十个文件
  1. kill -9 $(ps -ef | grep ssh | grep -v grep | awk ‘{print $2}’) #杀死所有ssh进程,例如wget脚本就是这个。杀死bash只是杀掉shell交互壳
  2. mkdir -p runoob2/test,-p就是确保runoob2目录存在,不存在就会建一个,没有-p会报错。
  3. cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c查看cpu型号 链接
  4. pbs批量提交作业,用py和sh联用 链接
  5. 对vimrc文件进行注释 话前面加”就可以
  6. 命令行用for for i inls; do echo **"$i\n"**; done
  7. 文件权限,除rwx还有s/t,t可以使一个目录既能够让任何用户写入文档,又不让用户删除这个目录下他人的文档。s即(SUID,Set UID)设置使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份. 典型的文件是passwd. chmod a+s filename,设置t是chmod 1777 directoryname,a是追加权限,i是锁定权限不能改,除非去掉i。Link
  8. less直接跳到100行,less +100g xx.log
  9. ls忽略某些文件或文件夹 ls /path/to/dir -I "*.jpg" -I "*.avi",-i后面的就忽略Link
  10. create -n protein_bert_bak —clone protein_bert 复制环境,将protein_bert复制一份到protein_bert_bak,跨计算机也可以只要把环境的文件包拷过去 Link
  11. 读某一行数据 head -n 2 filename | tail -n 1就是显示前面两行的最后一行,就是第二行。Link
  12. 将屏幕输出到日志,续写 ls -l | tee -a ./t.log
  13. vim 自动写开头 链接