目录
重要!常用!!易忘!!!
ls | wc -l #查看当前目录下文件数量
ls XXX | wc -l #查看XXX目录下文件数量
dos2unix w999.txt #Windows系统下编写的txt会存在一些字符,linux识别不了,要转换一下
一、序列大小写转换
$ sed '/>/!s/[a-z]/\u&/g' Umbilicaria_muehlenbergii_genomic.fna > Umbilicaria_muehlenbergii_genomic_AZ.fna
#将序列里面的小写字母改成大写字母
$ sed '/>/!s/[A-Z]/\&/g' Umbilicaria_muehlenbergii_genomic.fna > Umbilicaria_muehlenbergii_genomic_az.fna
#将序列里面的大写字母改成小写字母
二、压缩解压、查看内存
$ quota -uvs
# 查看一下当前内存还够不
$ tar -cvf - corrected | pigz -p 8 > corrected.tgz
# 快速对文件进行压缩,节约空间 甚至可以把多个文件夹压缩到一个里面
$ tar -xzvf file.tgz #解压tgz文件
$ du -sh
# 查看当前目录的大小
$ du -sh *
# 查看当前目录和子目录文件大小
# !!!每天(次)运行结束后,看看不必要的文件就可以删除了(比如中间文件、比如nohup文件)
三、随机取序列
$ seqtk sample -s100 input.fasta 100 > output.fasta
# -s参数指定随机数种子(可以自行设定),input.fasta为原始文件,100为抽取数量,output.fasta为输出文件名
$ seqtk sample -s100 bin.0.fasta 100 > bin0.random100.fasta
法二:打乱了取前几行,当作随机取~
$ sort -R Burkholderia_accession.txt |head -800|less>>Burkholderia.txt
#随机打乱文件,然后提取前800行(相当于随机抽取800行了)
四、挂载U盘
!!!打开虚拟机,插入U盘并让其识别
$ fdisk -l #查找一下磁盘,找到sdb,就是我们的U盘啦
$ mount /dev/sdb2 /mnt #将U盘挂载到/mnt目录下使用,U盘不能直接打开,只能先挂载再打开
$ df -h #查看设备挂载情况,后面显示在/mnt下即表示挂载成功
$ umount /dev/sdb2 #卸载已经挂载上去的U盘
五、统计文件,获取表头
#统计文件夹下有多少个文件
$ ls -l | grep "^-" | wc -l
$ head -1 Burkholderia_accession.txt|less>Burkholderia.txt #获取文件的表头信息(第一行写入新的文件)
$ head -n 5 Bacillus.txt>test.txt #将前5行写入新文件
六、批量下载基因组数据
$ ncbi-genome-download -g "Saccharopolyspora" bacteria -l "complete,chromosome" -F fasta,gff,protein-fasta,cds-fasta,rna-fasta --flat-output -o Saccharopolyspora
$ ncbi-genome-download -g "Saccharopolyspora" bacteria -F fasta,gff,protein-fasta,cds-fasta,rna-fasta --flat-output -o Saccharopolyspora --parallel 28
$ ncbi-genome-download --assembly-accessions GCF_list1 bacteria -F fasta,gff,protein-fasta,cds-fasta,rna-fasta --flat-output -o Streptomyces1 --parallel 28
$ ncbi-genome-download --assembly-accessions z130 bacteria --section genbank --formats fasta --flat-output --parallel 28
-s:选择数据库(genbank,refseq),默认是refseq数据库
-F:需要下载基因组的格式,可以多种格式同时下载,用逗号隔开,默认是genbank格式
-l:序列组装程度,可以多种格式同时下载,用逗号隔开
-g:需要下载序列的属,后面要指定类群,比如bacteria
-S:下载的具体的菌种名称,用逗号隔开,也可以写入一个文件中,一行一个菌种名称
-o:输出的文件名称
-r:失败时重新连接的次数,默认是0次
--flat-output:将下载的文件输入到一个目录中,不创建新的子文件
--output-folder
指定下载目录,后面可接你想要存放的下载目录,如--output-folder ~/Downloads(下载到当前用户的下载文件夹中)
--parallel 指定线程数
--section 指定下载的数据库,可选['refseq', 'genbank'],默认refseq
--formats 指定下载的文件格式,可选['genbank', 'fasta', 'rm', 'features', 'gff', 'protein-fasta', 'genpept', 'wgs', 'cds-fasta', 'rna-fna', 'rna-fasta', 'assembly-report', 'assembly-stats', 'all'],默认genbank
--assembly-levels 指定下载的基因组组装水平,可选['all', 'complete', 'chromosome', 'scaffold', 'contig'],默认all
--genera 根据菌种名下载,后面可接想要下载的菌种名,如--genera 'Rhizobium alamii'
--taxids 根据NCBI taxonomy ID下载,后面可接想要下载的菌种的taxonomy ID,如--taxids '492774'
--assembly-accessions 根据assembly accession下载,后面可接想要下载的菌种的assembly accession,如--assembly-accessions ‘GCF_000799895.1’
如一些示例用法:
$ ncbi-genome-download -g "Trebouxia" plant -l "all" -F fasta --flat-output -o Trebouxia_down --parallel 20
$ ncbi-genome-download --assembly-accessions test.txt bacteria --section genbank -l "all" -F fasta --flat-output -o Bacillus_down --parallel 20
$ ncbi-genome-download --taxids '293388' bacteria -l "all" -F fasta --flat-output -o Bacillus_down --parallel 20
七、激活环境/退出环境、创建环境、删除环境
$ conda activate funannotate #激活环境
~/anaconda3/envs/funannotate/bin 这个里面有超多脚本
$ conda deactivate #退出该虚拟环境
$ conda create -n antismash antismash
#创建一个名叫antimash的环境
$ nohup conda create -y -n antismash antismash &
#使用nohup将创建环境的操作挂后台运行,加入-y参数表示安装过程中遇到选项全部选择yes
#可以通过nohup文件查看软件安装进行
$ conda remove --name antimash --all
#删除安装包
#也可以去/ifs1/User/wuqi/miniconda3/envs下面查找一下,如果还要该软件目录,直接删掉
八、统计行数
wc -l XX.txt
#后面跟要统计的文件名称就行,比如.fasta .txt等等
grep -c "^@" file.fastq #这个可以统计测序文件.fastq有多少条
同理
grep -c ">" XX.fasta #可以统计fasta文件有多少条序列
lsof | wc -l #查看当前打开了多少文件
ulimit -n 65535 #使用此命令设置一下文件数量
ls -l | grep "^-" | wc -l #统计当前目录下文件的个数(不包括目录)
ls -lR| grep "^-" | wc -l #统计当前目录下文件的个数(包括子目录)
ls -lR | grep "^d" | wc -l #查看某目录下文件夹(目录)的个数(包括子目录)
find . -name filename | wc -l #统计当前文件夹下叫某某的文件的数量
find -name "*.js" | wc -l #统计当前文件夹下指定类型的文件的数量
awk '{i++} END {print FILENAME, i, NF}' test.txt #统计文件的行数和列数
九、杀死进程
[1]+ Stopped vim test.txt
有这种停止的,赖着不动的,就输fg将其调到前台,然后直接ctrl+c退出,就结束啦
一般自己挂后台跑的,记一下进程号PID号XXX
然后直接kill XXX 就把进程杀死了
补充 kill -9 杀的更充分一些-_-
$ ps -p 123456 -o cmd #该指令可以查看某项目进程号所执行的命令是什么
十、vim编辑
":q! <ENTER>": 退出并丢弃所有的更改
":wq <ENTER>": 退出并保存所有的更改
"x": 删除光标所在的字符
"dw": 删除光标位置到下一个单词开头之前内容
"de": 删除光标位置到上一个单词结尾之后内容
"d$": 删除光标位置到该行的结尾的内容
"dd": 删除整行的内容
"u": 撤销上次操作
"U": 撤销整行的上次操作
"CTRL-R": 取消撤销动作
"y": 复制选中内容(可以用"v"选中的内容,也可以是"w"、"e"等指定范围内容
"yy": 复制整行内容
"p":在光标之后粘贴被删除的文本内容
":r FILENAME": 将文件名为FILENAME的文件内容粘贴到光标处
":r !command": 将执行外部命令的输出粘贴到光标处
"/word"或"?word": 搜索word所在的位置,通过"n"或者"N"跳转下一个位置或上一个位置
十一、删除文件
$ find ~/Qxy/knowngenome/gongxianxing -not -iname '*.fna' -delete
#删除非*.fna格式的文件,虽然会报问题,不用管
十二、目录下按时间排序
$ ls -lrt #按时间升序排列,最早的在最前面
$ ls -lt #按降序排列
十三、从一个列表中得到(去除)匹配项
首先要有一个list,如每行一个基因名称的gene.list
接着有背景内容,如总的fasta文件all.fasta
然后用grep命令进行匹配(或不匹配)
grep -f gene.list all.fasta > output.fasta #从all中输出list中的基因序列
grep -vf gene.list all.fasta > reoutput.fasta #从all中删除list中的基因序列
十四、度分秒转换,EXCEL表中
=TEXT(ABS(INT(A2)),"0")&"°"&TEXT(INT((ABS(A2)-INT(ABS(A2)))*60),"00")&"'"&TEXT((ABS(A2)*3600-INT(ABS(A2)*3600)-INT((ABS(A2)-INT(ABS(A2)))*60)*60),"00")&"''"
在Excel中粘入这个公式,要改一下A2,指表格,然后注意中英文符号
这个是把117.6563转变成XX°XX′XX″
如果想把A°B′C″换算成数字,公式没跑通,我一般都是把数字分列,然后用A+B/60+C/3600
十五、查找出目录下对应文件
如:目录下有多个基因文件、多个步骤等等,想查找一下其中的脚本文件
查看当前目录,没有涵盖递归目录下的
find ./ -maxdepth 1 -type f \( -name "*.sh" -o -name "*.py" \)
十六、python2代码转换为python3代码
2to3 -w ~/Qxy/qxyjiaoben/XX.py
该代码能把Python2中的语法转换为Python3中的,结果文件为XX.py和XX.py.bak,其中.bak为原始文件,而.py为改过的
十七、vim编辑删除
1.删除单个字符
在正常模式下linux 常用命令,按下x键即可删除光标所在位置的一个字符。如果要删除光标后面的n个字符,可以使用nx命令。如果要删除光标前面的n个字符linux命令vim删除操作,则可以使用nX命令。
2.删除整行
在正常模式下,按下dd键即可删除整行。如果要删除光标所在行及其后面的n行,可以使用ndd命令。
3.删除单词
在正常模式下,按下dw键即可删除光标所在位置到下一个单词开头之间的所有字符。如果要删除光标所在位置到上一个单词结尾之间的所有字符,则可以使用dW命令。
4.删除到行末
在正常模式下,按下D键即可删除光标所在位置到行末之间的所有字符。如果要删除光标所在位置及其后面n个字符到行末之间的所有字符,则可以使用ndD命令。
5.删除到行首
在正常模式下linux命令vim删除操作,按下d0键即可删除光标所在位置到行首之间的所有字符。如果要删除光标所在位置及其前面n个字符到行首之间的所有字符,则可以使用nd0命令。
6.删除括号内的内容
在正常模式下,将光标移动到括号内,然后按下%键即可跳转到括号匹配的另一个位置。如果要删除括号内的所有内容,可以使用d%命令。
7.撤销删除
在Vim中,撤销删除操作是非常方便的。只需要按下u键即可撤销最近一次的操作。如果要撤销多次删除操作,则可以按下多次u键。
8.恢复删除
如果误删了一些内容,可以使用恢复删除操作来恢复被删除的内容。在正常模式下,按下p键即可将最近一次删除的内容粘贴到光标所在位置。
十八、序列处理
18.1序列不换行,一行一条序列
~/Qxy/qxyjiaoben/fasta_no_blank.pl XX.fasta > XX_noblank.fasta
18.2 序列名字取前几位
如从>KY972582.1 Umbilicaria pulvinaria isolate acpED018 DNA-dependent RNA polymerase II second largest subunit gene, partial cds
变成>KY972582.1 Umbilicaria pulvinaria
vim make_seq3.py #意思是获取序列前三个名字,重新给序列命名
import re
def change_fasta_header(input_file, output_file):
with open(input_file) as f:
lines = f.readlines()
with open(output_file, 'w') as f_out:
for line in lines:
if line.startswith('>'):
header = line.strip()
# 使用正则表达式匹配前三个单词
match = re.search(r'^>[^ ]+ [^ ]+ [^ ]+', header) #关键是这一步
if match:
new_header = match.group(0)
else:
new_header = header
f_out.write(new_header + '\n')
else:
f_out.write(line)
input_file = "input.fasta" #这里要更改一下输入文件和输出文件的名字
output_file = "output.fasta"
change_fasta_header(input_file, output_file)
注!上述代码也可以灵活使用,匹配前一个、两个等等字符~