主要学习自Linux操作与生物信息_哔哩哔哩_bilibili
生信入门 linux实用基础1 2 3
生信入门 R实用基础1 2
1 命令协作管道 |
| 可将上条指令的结果输入到下条指令进行操作
echo -n "123456789" | wc -m 去除换行符后统计123456789字符数
ps -aux | less 将ps结果放在less中查看
head -5 a | tail -2 显示a文件4、5行
2 进阶文件操作
wc spilt cut sort uniq diff cmp md5sum
① 文件统计和切分
wc a.txt 字符统计, 依次列出文件的行数、字数、字节数、文件名
-l 统计行数(最常用
-w 统计字数(单词或汉字
-c 统计字节数
-m 统计字符数(英文1字符1字节,中文1字符2字节)
-L 统计最长行的长度
split -l/b 可按行、大小等切分文件
split -l 100 file test 将file内容按照每200行拆分成一个文件,命名为testa - test*
cut 选取命令,可按照列切分数据选取我们所要的数据
-b 1-28 a.txt 将a.txt文件的每行的1-28字节输出
-d "|" -f 4 a.txt 将|作为分隔域标志,选取第四个分隔域的内容输出, f表示file-separator
② 文本排序 sort 和 去重复uniq
直接输入sort
可进入排序页面,输入后按Ctrl +D
结束输入进行排序
sort -M 根据月份排序 (识别三个字母)
-n 根据数字排序(默认只按照第一位数字排序
-V, --version-sort 根据数字大小排序(常用
-h 根据人类可阅读数字排序如1K 3G
-r 按相反的顺序排序(常用
-c 检查文件是否已排序
-m 合并排序文件
-o 输出排列文件,默认输出桌面
-u 去掉重复内容
-k2 -k3 根据第2列值进行排序,若相同则根据第3列值排序
-t "|" <分隔字符> 指定排序时所用的栏位分隔字符为 |
sort -n -t ":" -k 2 a.txt 将文件内容根据:后的字符按数字大小排序
uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用,默认为去除重复行
uniq
-d repeated只显示有重复的行
-c count,在每列旁边显示该行重复出现的次数
-u uniq只显示无重复的行
综合应用:
cut -d ":" -f 2 a.txt | cut -d ";" -f 1 | sort -n | uniq -c 选取;和:之间内容并排序统计出现次数
③ 文件比较diff cmp ,若三个以上则用diff3命令
diff 1.fa 2.fa 比较两个文件差异 ,
diff 1.fa 2.fa -c 显示成上下文比较的格式,!表示发生变化
diff 1.fa 2.fa -u 显示合并比较的格式,—表示1文件删除行,+表示2文件新增行
cmp 1.fa 2.fa 标示出两个文件第一个不同之处的字符和列数编号
④ md5sum校验文件 .md5 可验证文件完整性,校验码由32位的16进制符号组成
md5sum 1.fa 生成1.fa文件的md5校验码,将校验码及文件名复制创建1.md5文件
md5sum -c 1.md5 验证校验码,检查文件完整性
3 对文件名的处理操作小技巧
basename
- 只将fq文件的文件名输出而去除文件路径,若
echo $i
则会带有路径
ls ~/wk/fq/clean/*fq | while read id ; do echo $(basename $id); done
- 只将fq文件的文件名输出 , 删除
.sam
的后缀
ls ~/wk/fq/clean/*fq | while read id ; do echo $(basename $id '.sam' ); done
-
%%
删除文件名.
之后的所有后缀, (如果是${id%.*}
则删除最后一个.
后的后缀)
ls raw/fq/* | while read id ; do echo $(basename ${id%%.*});done
-
##
删除文件名_
之前的所有前缀 , (如果是${id#*_}
则删除第一个_
前的前缀)
ls raw/fq/* | while read id ; do echo$(basename ${id##*_});done
4 命令的快捷方式: 添加PATH路径
在linux中下载软件后,用which可以搜寻到路径的命令可以在所有目录下执行,如果不能,则需要:
- 在bin或sbin目录下创建的命令软链接,命令一般位于软件的
bin
目录下; - 或在
.bashrc
文件中的添加软件bin
目录的路径PATH,如PATH=$PATH:~/soft/bin/
5 命令行界面的一些常用快捷操作
history 列出1000条历史命令,再用!数字 执行历史中对应数字的命令
!S 重新执行前面以S开头的命令
; 可按顺序从左向右完成多个命令操作,如cd ../ ; ls
Ctrl + C 终止当前操作,重新开命令行
Ctrl + L 进行清屏操作
Ctrl + Z 挂起命令(使用 bg 命令让其在后台继续运行;使用 fg 命令恢复到前台)
Ctrl + 左右键 在单词之间跳转
Ctrl + A 跳到本行的行首
Ctrl + E 跳到行尾
Ctrl + U 删除当前光标前面的所有文字(还有剪切功能)
Ctrl + K 删除当前光标后面的所有文字(还有剪切功能)
Ctrl + Y 粘贴Ctrl + U或Ctrl + K剪切的内容
Ctrl + W和Alt + D 对于当前的单词进行删除操作,W删除光标前面的单词的字符,D则删除后面的字符
Alt + Backsapce 删除当前光标后面的单词
\ 代码太长时利用 \ 可以将代码分成多段
bc 自带计算器,输入scale=4则保留4位小数
6 nohup 与 &
-
nohup
是 no hang up 的缩写,就是不挂断的意思,但没有后台运行,终端不能标准输入,该命令可以在你退出帐户/关闭终端之后继续运行相应的进程
默认情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,一般使用> /dev/null
进行丢弃到黑洞中或者导入到指定文件中作为log日志 -
&
( 表示“and”的符号)是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出。要 nohup 命令运行在后台中,添加 & 到命令的尾部
结合起来nohup
和&
使命令永久的在后台执行
nohup COMMAND > /dev/null &
nohup COMMAND >raw.log 2>&1 &
7 数据流重定向 >
cat 1 2 >a 将1,2文件的内容重定向到文件a中合并
cat 3 4 >>a 将3,4文件的内容追加到文件a中合并
comand 1>comand.log 2>&1 结合1.2可以将命令的结果保存在log文件
comand 1>/dev/null 2>&1 隐藏屏幕输出内容
-
tee
用于把命令结果打印在屏幕上并同时保存到文件中。
选项:
-a,--append: 不覆盖,而是追加输出到指定的文件中
-i,--ignore-interrupts: 忽略中断信息
ifconfig | tee ifconfig.log 将config命令的输出内容保存在log文件中, 同时保留屏幕输出
8 进程管理
① linux进程常用命令
uptime 显示系统时间、主机已运行时间、用户连接数、系统平均负载最后 1、5、10 分钟估算值,数值越大系统资源越紧张
w 显示当前用户及uptime信息
linux进程优先级分为-20到19共40级,默认优先级为0,数字越小优先级越高,
查看进程优先级可以使用命令 top
和 ps
,
nice -优先级 进程 更改进程优先级
jobs 查看后台运行的命令进程
fg 将后台进程切换到前台
Ctrl + Z 暂停当前任务,jobs查看后台进程,bg命令使其在后台继续运行,fg切换到前台
wait 等待上一进程结束后再执行下进程,通常用于&后
如果想要在后台循环进程结束后执行下一命令,则添加以下命令
(每隔10s检查一下指定任务运行情况,若无运行则结束检查)
while ps | grep 'fastp' >/dev/null ; do
sleep 10
continue
done
② 进程管理top
查看固定用户的进程信息 top -u 用户名
进入top
后可进行交互式操作
空格键 实时刷新top状态
c 显示完整路径信息
H 显示线程数信息
i 只显示在运行的进程
d + 数字 指定top刷新时间(默认为3秒
x 运行行显示高亮
u + 用户名 显示指定用户
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中
k + 数字 输入以下数字进行进程终止,杀死进程9/15最常用
kill -9 进程PID
杀死进程
③ 进程管理ps
pstree 该命令列出进程的树状关系图
ps -A 列出所有进程,按照进程ID排序
-a/e 显示终端所有进程,包括其他用户进程
-l 长格式输出类似top结果
-u 用户名 显示指定用户名进程
-x 显示无控制的终端的进程
-g 组名 显示一个组的使用情况
-H 列出树状结构,表示程序间相互关系
-f 显示完整格式
-ef 显示所有进程信息,连同命令行
常用组合
-aux -lax -fx -ef
ps 与grep 常用组合用法,查找特定用户进程命令:
ps -ef | grep gu
jobs -l 可以查看当前终端生效的进程
生信入门 linux实用基础1 2 3
生信入门 R实用基础1 2