3个学生的linux视频学习笔记


耗费半年的时间精心制作了成套的生物信息学入门视频教程,并且在生信技能树联盟平台发布了这个长达74个小时全套生物信息学入门视频:生信技能树视频课程学习路径,这么好的视频还免费!
在B站看了看,大家学的热火朝天, 接下来我们就一个个知识点进行专题介绍,主要是一些优秀学生的笔记分享,希望大家在学习的过程中也能吸收到我传达的学习经验,人生感悟,只要你发给我笔记(邮箱 jmzeng1314@163.com),就有惊喜!

【生信技能树】生信人应该这样学linux

———— / PART 1 / ————

Linux-0-生信入门环境

工欲善其事必先利其器,这一节课主要以Windows系统为例,介绍了用Linux编程之前需要下载并安装的软件:Xshell,git,markdown,Winscp,幕布以及notepad++。介绍了如何下载并安装R及R的操作软件Rstudio,在Rstudio里进行了简单的命令演示以及如何安装并调用包,需要注意的是,所有软件推荐从官网进行下载,并且在安装的时候默认进行,基本不需要改动任何选项。对于Windows用户要把所有软件装在C盘,对于Mac用户则默认安装,安装软件时勿出现中文路径。

Linux 1 学习资源介绍

视频介绍了学习linux需要用到的学习资料,包括一本书:Linux命令行与shell脚本编程大全,以及以前的学员写的很详细的学习经验。学习linux这种系统的知识很有效的是记笔记,如果要很系统的学下来可以读书辅助视频,而对于常用到的命令,最好的方法就是背下来。

Linux 2 系统知识

Linux属于交互式,与Windows以及Mac的可视化程度、可操作性都不同,最大的特点是可以进行批处理。视频介绍了初初接触Linux时如何登陆、如何切换用户以及如何查看电脑内存及硬盘等命令。

Linux 3 去可视化的命令行

Linux的特点是批量、高效、多用户,而其缺点则是不同于通常使用习惯的Windows或者Mac系统的鼠标可视化操作。因此需要熟知一些常用的命令,视频从history、ls、以及sleep等常见命令引入,与鼠标可视化操作做对比以及举例,介绍了Linux去可视化的常用命令,例如ls:查看当前文件夹、pwd:查看当前位置、mkdir:新建文件夹、cd ~:回到home、df-dh:磁盘整体使用情况、cat > :写入文本,等等这些命令是需要背下来的,熟能生巧。

Linux 4 文本处理

Linux中的指令格式为命令+参数+文件/目录,但在实际使用过程中并非严格如此。视频以实际应用为基础,介绍了从下载文件到查看文件再到对文件内容进行索引、排序等一系列命令。例如用wget从指定URL下载文件,用wc查看文件列数,用head/tail查看文件前/后十行内容,以及用grep、awk、sort命令来检索文件内容。

Linux 5 软件安装

熟悉了Linux中常用命令之后就需要安装一些软件来实际应用了,Linux中软件安装是怎样的呢?视频以bowtie2这一比对软件为例,首先搜索到软件的下载地址,选择对应自己系统的软件版本,最好是选择二进制下载方式,这样下载好之后解压就相当于安装好了,可以直接使用了,若非二进制格式,则需要先解压(unzip或者tar命令)然后安装(make),最后,若看到帮助文档则表示安装成功。

Linux 6 环境变量

软件安装好之后就要使用了,而有时候直接输入软件名称却找不到,这时就有三种方法来调用刚刚安装好的软件:一是以命名的方式赋值变量,此时使用软件时名称前面需加$符号;二是使用alias方法后可直接使用软件;三是设置环境变量echo $PATH添加export PATH后可使用软件,调用成功后可以用version命令来查看软件版本。视频仍以bowtie2为例,讲解了如何调用这一软件,之后如何用这一软件进行查看索引、建立索引以及进行比对。

Linux 8 shell脚本编程

视频通过几个方面讲解了Linux中脚本编程,一是变量,变量是指代码中的可变部分,可以赋值可以索引;二是参数,在程序运行时变换参数会得到不同的结果;三是通配符, 像ls、rm就是一种通配符,最常用通配符是“*”,表示可替换部分;接着是标准头文件,里面包含的信息有作者、联系方式等等,不是脚本所必须;四是循环,由于Linux中经常批量处理,对于类似命令就可以写成循环代码,常用for、while等等;五是输入输出,运行的脚本可以输出到终端,也可以输出到文件夹,看自己需要了

Linux 9 shell脚本要学好(纠正配置文件)

测序结果通常不止一个样本,因此在处理时要写好脚本进行批处理,但是有时由于样本命名的问题,导致fq文件匹配错误,bam文件生成失败。因此本节课介绍如何检查配置文件、如何将有问题的样本挑出以及如何重做配置文件。需要注意的是为了避免数据处理出现问题,样本不要以数字开头命名以及出现不同类型的杠号。

Linux 10 文本处理(常见命令细讲)

Linux命令在实际应用过程中会有各种各样的组合去得到需要的结果,这是一个融会贯通的过程。本视频详细讲解了grep、cut、awk以及sed等待命令的各种用法,这些命令加上不同参数会有不同的结果。视频还展示了在实际处理GNS数据时常用数据排序,直观的看到命令的使用频率,学习起来做到有的放矢。

———— / PART 2 / ————

Linux-0 生信入门环境

讲解安装生信入门的必要软件(Git、x-manager、typora\notepad++、R-studio)及一些R-studio的基本使用。

Linux-1 学习资源介绍

讲解入门Linux的一些开始步骤和经验。

linux-2 系统认知

讲解Linux系统的一些特点(交互式、多用户)和基本命令(grep、管道、history、su切换用户、登录 : ssh 用户名@ip地址 )

Linux-3 去可视化的命令行

top: 实时动态地查看系统的整体运行情况。

sleep 10 :睡眠10秒、

&:任务在后台运行

ps -ef : 标准格式显示进程

ifconfig : 显示或配置网络设备

ls 、cd - :回到上一个目录

tab : 补全

pwd、*通配符、mkdir、touch

echo:内容打印到屏幕

rm、mv、cp、cat、head

> :重定向

Ctrl +c :终止命令

批量、高效、多用户 (Linux特点)

相对路径和绝对路径

df -dh : 磁盘整体使用量

Linux-4 文本处理

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

Linux-7 环境变量

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脚本编程

看了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

linux-9 脚本要学好

配置文件出现问题(左端测序文件和右端测序文件不匹配)-->

查看已比对好的.bam文件(正常大小以G为单位),发现出现几k的文件-->

由于两个样本的FQ双端文件匹配错误,导致.bam文件生成失败(几k的.bam文件)-->

将错误的fq正常排序,重新配置文件(24个),再重新进行比对。

ls /home......../*_2.gz  | sort -t "_" -k3,3  >fq2   

先使用_符号对内容切割,再指定第三列进行排序,生成fq2文件,再对1.gz进行同样处理,

将两个paste一起,生成一个新的配置文件。再对其重新比对。

Linux-10 文本处理

>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  #查看内存

#查看用户登录情况

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命令行文本操作参考:

https://mp.weixin.qq.com/s?__biz=MzAxMDkxODM1Ng==&mid=2247485539&idx=1&sn=cbb02d48ea5bb90ee5bdf35d501ee428&chksm=9b4848d8ac3fc1ce58b14128a138c100d305cb70c61180b523c21ad4859fdcc2cd7e96a75c99&scene=21#wechat_redirect

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

我其实比较不解的是为什么大家都没有完,可能是知识点实在是太多吧!

■   ■   ■

(0)

相关推荐