3个学生的linux视频学习笔记
【生信技能树】生信人应该这样学linux
———— / PART 1 / ————
工欲善其事必先利其器,这一节课主要以Windows系统为例,介绍了用Linux编程之前需要下载并安装的软件:Xshell,git,markdown,Winscp,幕布以及notepad++。介绍了如何下载并安装R及R的操作软件Rstudio,在Rstudio里进行了简单的命令演示以及如何安装并调用包,需要注意的是,所有软件推荐从官网进行下载,并且在安装的时候默认进行,基本不需要改动任何选项。对于Windows用户要把所有软件装在C盘,对于Mac用户则默认安装,安装软件时勿出现中文路径。
视频介绍了学习linux需要用到的学习资料,包括一本书:Linux命令行与shell脚本编程大全,以及以前的学员写的很详细的学习经验。学习linux这种系统的知识很有效的是记笔记,如果要很系统的学下来可以读书辅助视频,而对于常用到的命令,最好的方法就是背下来。
Linux属于交互式,与Windows以及Mac的可视化程度、可操作性都不同,最大的特点是可以进行批处理。视频介绍了初初接触Linux时如何登陆、如何切换用户以及如何查看电脑内存及硬盘等命令。
Linux的特点是批量、高效、多用户,而其缺点则是不同于通常使用习惯的Windows或者Mac系统的鼠标可视化操作。因此需要熟知一些常用的命令,视频从history、ls、以及sleep等常见命令引入,与鼠标可视化操作做对比以及举例,介绍了Linux去可视化的常用命令,例如ls:查看当前文件夹、pwd:查看当前位置、mkdir:新建文件夹、cd ~:回到home、df-dh:磁盘整体使用情况、cat > :写入文本,等等这些命令是需要背下来的,熟能生巧。
Linux中的指令格式为命令+参数+文件/目录,但在实际使用过程中并非严格如此。视频以实际应用为基础,介绍了从下载文件到查看文件再到对文件内容进行索引、排序等一系列命令。例如用wget从指定URL下载文件,用wc查看文件列数,用head/tail查看文件前/后十行内容,以及用grep、awk、sort命令来检索文件内容。
熟悉了Linux中常用命令之后就需要安装一些软件来实际应用了,Linux中软件安装是怎样的呢?视频以bowtie2这一比对软件为例,首先搜索到软件的下载地址,选择对应自己系统的软件版本,最好是选择二进制下载方式,这样下载好之后解压就相当于安装好了,可以直接使用了,若非二进制格式,则需要先解压(unzip或者tar命令)然后安装(make),最后,若看到帮助文档则表示安装成功。
软件安装好之后就要使用了,而有时候直接输入软件名称却找不到,这时就有三种方法来调用刚刚安装好的软件:一是以命名的方式赋值变量,此时使用软件时名称前面需加$符号;二是使用alias方法后可直接使用软件;三是设置环境变量echo $PATH添加export PATH后可使用软件,调用成功后可以用version命令来查看软件版本。视频仍以bowtie2为例,讲解了如何调用这一软件,之后如何用这一软件进行查看索引、建立索引以及进行比对。
视频通过几个方面讲解了Linux中脚本编程,一是变量,变量是指代码中的可变部分,可以赋值可以索引;二是参数,在程序运行时变换参数会得到不同的结果;三是通配符, 像ls、rm就是一种通配符,最常用通配符是“*”,表示可替换部分;接着是标准头文件,里面包含的信息有作者、联系方式等等,不是脚本所必须;四是循环,由于Linux中经常批量处理,对于类似命令就可以写成循环代码,常用for、while等等;五是输入输出,运行的脚本可以输出到终端,也可以输出到文件夹,看自己需要了
测序结果通常不止一个样本,因此在处理时要写好脚本进行批处理,但是有时由于样本命名的问题,导致fq文件匹配错误,bam文件生成失败。因此本节课介绍如何检查配置文件、如何将有问题的样本挑出以及如何重做配置文件。需要注意的是为了避免数据处理出现问题,样本不要以数字开头命名以及出现不同类型的杠号。
Linux命令在实际应用过程中会有各种各样的组合去得到需要的结果,这是一个融会贯通的过程。本视频详细讲解了grep、cut、awk以及sed等待命令的各种用法,这些命令加上不同参数会有不同的结果。视频还展示了在实际处理GNS数据时常用数据排序,直观的看到命令的使用频率,学习起来做到有的放矢。
———— / PART 2 / ————
讲解安装生信入门的必要软件(Git、x-manager、typora\notepad++、R-studio)及一些R-studio的基本使用。
讲解入门Linux的一些开始步骤和经验。
讲解Linux系统的一些特点(交互式、多用户)和基本命令(grep、管道、history、su切换用户、登录 : ssh 用户名@ip地址 )
top: 实时动态地查看系统的整体运行情况。
sleep 10 :睡眠10秒、
&:任务在后台运行
ps -ef : 标准格式显示进程
ifconfig : 显示或配置网络设备
ls 、cd - :回到上一个目录
tab : 补全
pwd、*通配符、mkdir、touch
echo:内容打印到屏幕
rm、mv、cp、cat、head
> :重定向
Ctrl +c :终止命令
批量、高效、多用户 (Linux特点)
相对路径和绝对路径
df -dh : 磁盘整体使用量
wget:从指定的URL下载文件
wc : word count, 文件的Byte数、字数或是列数
head、tail、more(q退出)、cat、less(-s:单行过长超出部分不显示 - N :显示每行行号)
grep :查找符合模式的行 -n :列出行号
cut :选择每行指定位置输出
sort : 排序
tr:将一组字符变成另一组字符。
安装软件步骤👇
mkdir 软件名
cd 软件名
wget 安装包下载地址
解压安装包(unzip/tar....)
cd 解压后的目录
make
1、方便调用命令(bowtie2)的使用方法:
第一种方法:
A. 首先赋值: bowtie2=bowtie2命令所在路径
B. 使用时: $bowtie2
第二种方法:
A. 使用 alias bowtie2=bowtie2命令所在路径
B. 使用时:bowtie2
第三种方法:
A. 修改环境变量 echo $PATH
export PATH="bowtie2命令所在路径/bin:$PATH" >>~/.bashrc
source ~/.bashrc
2、bowtie2的使用:
A. 建立索引:bowtie2-build .fa文件 索引的前缀
B. 比对:
bowtie2 -x 索引文件前缀 -1 短序列文件(.fq文件) -2 短序列文件(.fq文件) -S 输出的.sam文件
bowtie2 -x 索引文件前缀 -U 长序列文件(.fq文件) -S 输出的.sam文件
看了Linux-8 shell脚本编程,看到使用for和while创建软链接,并自己实践了一些
把以前和今天的收获记录简书上,https://www.jianshu.com/p/327e20b49b92
下面是今日收获:
1、变量:讲解环境变量
2、参数:
$0 :Shell本身的文件名
$1-$n : 添加到Shell的各参数值
拓展:https://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html
创建一个小脚本,内容为echo $0,并运行。
vi tmp.sh
cat tmp.sh
echo $0
bash tmp.sh
往脚本添加$1 $2 $3,并运行脚本(后面再添加三个任意参数如12 23 34)
vi tmp.sh
cat tmp.sh
echo $0 $1 $2 $3
bash tmp.sh 12 23 34
tmp.sh 12 23 34
注:12 23 34 参数传入$1 $2 $3,并被echo出来。
3、通配符 : "*":匹配任意长度任意字符 "[ ]":匹配一个单字符范围,如[a-z],[0-9]
拓展:https://abcfy2.gitbooks.io/linux_basic/content/first_sense_for_linux/command_learning/wildcard.html
ls
2.3 a.1 a.txt b.txts.1 tmp.sh
echo *.txt
a.txt b.txt
echo *.1
a.1 s.1
echo [a-z].1
a.1 s.1
4、标准头文件(有待进一步理解):
\#!/bin/bash
set -e
\# Function for script description and usage
usage()
{
cat <<EOF>&2
usage:
。。。。
}
5、循环:for、while
A. for循环
ls
2.3 a.txt s.1 tmp.sh z1.txt z3.txt z5.txt z7.txt z9.txt
a.1 b.txt s{i}.txt z10.txt z2.txt z4.txt z6.txt z8.txt
for i in {3..9};do echo z${i}.txt;done
B. 捕获
for i in "ls *.txt";do echo $i;done
配置文件出现问题(左端测序文件和右端测序文件不匹配)-->
查看已比对好的.bam文件(正常大小以G为单位),发现出现几k的文件-->
由于两个样本的FQ双端文件匹配错误,导致.bam文件生成失败(几k的.bam文件)-->
将错误的fq正常排序,重新配置文件(24个),再重新进行比对。
ls /home......../*_2.gz | sort -t "_" -k3,3 >fq2
先使用_符号对内容切割,再指定第三列进行排序,生成fq2文件,再对1.gz进行同样处理,
将两个paste一起,生成一个新的配置文件。再对其重新比对。
>grep
-f : 指定范本文件file,每一行是一个查找模式。空的file文件未指定查找模式。
-w : 只有完全符合该字的行才会被输出
-c : 统计与wc命令一样
-v : 匹配但是不打印出来
>tr : 装换文件中的字符
例:tr '\t' '\n' 把制表符换成换行符
>cut -f : 输出指定位置处的字节
如: cut -f 1, 31-32 , 40 info :
默认以制表符为分隔,分割并打印出info文件的 第一列 第31列到32列 第40列
-d ';’ :指定分隔符(;)
>sed 's///g' : 替换分隔符
如:sed 's/;/\t/g' : 将分隔符的分号换成\t
>paste -s -d + | bc
-s 将每个文件合并成行而不是按行粘贴
-d 指定不同于空格或tab键的域分隔符。
| bc : 在前面指定表达式就会帮助你算出来
>awk'{print $1}" tmp : 打印出第一列
———— / PART3 / ————
P1linux-0-生信入门环境
工具下载:
xshell/Xmanager /putty:终端模拟管理软件,连接Linux终端
Winscp/FileZilla:连接服务器上传下载文件
Everything:全盘搜索文件的工具
幕布:思维导图
Typora/Rmarkdown:markdown的编辑器
Notepad++:超级文本编辑器
git:快速高效的处理project,类似于DOS界面
R/Rstudio:统计分析+可视化
installed.packages()
.libpath()
R语言可以批量安装R包,如Jimmy老师自己写的R包:https://github.com/jmzeng1314/biotrainee
考虑到磁盘空间或者运行速度等问题,可以根据自身需求来安装各类软件和R包
注意:
1> 有一定基础的人,可以1.5倍速或者2倍速播放,虽然这个时候Jimmy老师的声音有点魔性。可以看两遍,一边看一边实际操作。
2> 到官网下载以免安装很多附带的东西;
3> 对于不熟悉的软件,按默认选项(直接下一步)安装即可;
4> R package安装速度慢,尝试换下载镜像(可用清华的镜像);
P2 linux-1-学习资源介绍
* 不要太沮丧,学习是需要时间的。
* Linux基础学习:马哥Linux教学视频、《Linux命令行与shell脚本编程大全》
P3 linux-2-系统认知
多用户
Linux系统登陆服务器/切换用户:ssh hucy@172.31.110.34
开通用户:sudo adduser s1 #一般都没有sudo权限
修改密码:passwd s1
开发网页
shiny基础的交互式网页
ls -lh /var/www/html
查看服务器信息
df -h #查看电脑配置
free -g #查看内存
w #查看用户登录情况
top #实时动态查看系统的整体运行情况
ps -ef | grep sleep #查看当前运行的进程,类似于wins的系统管理器
标准格式显示进程
su s1 #切换登录用户
exit #退出用户登录
P4 linux-3-去可视化的命令行
命令行
批量、高效、多用户;
生物信息软件的运行环境;
常用命令
ls / #根目录
ls 即 ls ./
mkdir #创建目录
touch #创建空白文件
echo #内容打印到屏幕
echo $PATH
echo {1..10} #{}起扩展作用
mkdir folder{1..10}
cat > jmzeng.txt #创建并写入文件,Ctrl+C退出
touch jmzeng.txt #创建文件
练习
练习网址:http://www.bio-info-trainee.com/2900.html
基础知识:cd-, cd .. , cd -, history, !5 , /home/ , /tmp/ , >,&,jobs,nohup 1,2,0
文件目录操作:ls,cd,pwd,mkdir,rm,mv,cp,touch,head,tail,less,more
系统管理:df,du,top,free,ps,ifconfig,netstat,ssh,scp,
用户权限:chown,chgrp,groups,ls
文本操作:awk,grep,sed,paste,cat,diff,wc,vi
* 使用腾讯云实验室的linux服务器:https://cloud.tencent.com/developer/labs/lab/10000进行练习,挺好用的。
注意:
1> 重要的命令多背多用,必须要记下来;
2> 实践往往才能理解的更深刻。
P5 linux-4-文本处理
下载练习数据:http://www.biotrainee.com/jmzeng/igv/test.bed
cat > test.bed#复制、保存、Ctrl+C退出,或
wget http://www.biotrainee.com/jmzeng/igv/test.bed
查看文件:
cat -n test.bed # -n显示行号
cat test.bed |wc #wc统计行
head -1 test.bed #显示第一行
tail -1 test.bed #显示最后一行
less -S test.bed #-S不换行显示 #q退出,space翻页
less -SN test.bed #-N标记行号
grep -n H3K4me1 test.bed #grep加文件名,-n显示行号
cut -f 1-3 test.bed #取test.bed文件的所有行的1-3列
若想要获得每行起止位置间的序列:
cut -f 1-3 test.bed | awk '{print $0}' # $0把所有东西都输出来
cut -f 1-3 test.bed | awk '{print $1":"$2","$3}'
cut -f 1-3 test.bed | awk '{print "http://genome.ucsc.edu/cgi-bin/das/hg38/dna?segment="$1":"$2","$3}'
如:http://genome.ucsc.edu/cgi-bin/das/hg38/dna?segment=chr1:9769,10673
其实,可以通过bedtools等其他工具直接获取序列信息。
排序
sort -k 2,2nr test.bed |cut -f 1-3 #k:key; n:numeric; r:reverse即按照第二列排序
linux命令行文本操作参考:
AWK实操:
wget https://www.mothur.org/w/images/d/d6/MiSeqSOPData.zip
unzip MiSeqSOPData.zip
cat MiSeq_SOP/stability.files
ls ~/Metagenomics/TestData/Miseq_SOP/MiSeq_SOP/*.fastq|awk 'NR%2==1{T=$0;next}{print T,"\t"$0}' |awk 'BEGIN{FS="_S";OFS="\t";}{print $1,$0}'
# NR:行号;FS:输入分隔符;OFS:输出分隔符
P6 linux-5-软件安装
没有root权限可以自己新建一个文件夹进行安装。
http://www.biotrainee.com/thread-856-1-1.html
没啥可说的,实操。
ls --color=auto
cat ~/.bashrc | grep ls
alias ls= 'ls --color=auto'
修改用户名字符串:
PS1="\[\e[32;1m\]\u\[\e[33;1m\]\t \[\e[35;1m\]\w \n\[\e[0;40m\]$"
解压:
tar xvfj *.tar.bz2
tar xvfz *.tar.bz
P7 linux-7-环境变量
查看环境变量:
echo $PATH|tr ':' '\n'
echo $PATH|tr ':' '\n'| xargs ls -lh
which bwa
history|grep "qiime"
设置环境变量:
1) 设置变量或使用alias
bowtie2=~/biosoft/bowtie2/bowtie2-2.3.4.3-linux-x86_64/bowtie2
#每次打开终端都需要重新设置
$bowtie2
2) 修改配置文件中的环境变量
vim ~/.barhrc
export PATH=":$PATH"#打开文本编辑工具vim进行编辑
source ~/.barhrc#永久生效
3) 利用cat 和重定向符>>
cat >>~/.barhrc
PS1="\[\e[32;1m\]\u\[\e[33;1m\]\t \[\e[35;1m\]\w \n\[\e[0;40m\]$"#命令行输入
Ctrl+C #结束输入
source ~/.barhrc
cat~/.barhrc |tail
注意:
这种情况下不知道软件的版本。
可以使用 --help和--version查看,利用which查看所有安装过的版本位置。
一般软件都会带上示例数据。
cd ~/biosoft/bowtie2/bowtie2-2.3.4.3-linux-x86_64/example
# 下载tree
wget http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz
tar zxvf tree-1.7.0.tgz
cd tree-1.7.0
make
cat >>~/.bashrc
export PATH="/home/hucy/biosoft/tree-1.7.0:$PATH"
# 查看示例数据
tree -h
less -S reads/longreads.fq #fastq格式有四行
比对需要参考基因组,参考基因组使用前需要先建立索引。
ls -lh index/
bowtie2-build reference/lambda_virus.fa temp #构建一个名为temp的索引
ls -lh
md5sum temp.1.bt2 #文档校验,看是否出错或者修改
md5sum index/lambda_virus.1.bt2
建立索引后便可进行比对:
bowtie2 -x temp -1 reads/reads_1.fq -2 reads/reads_2.fq -S temp.sam
less -S temp.sam
我其实比较不解的是为什么大家都没有完,可能是知识点实在是太多吧!
■ ■ ■