生信人应该这样学linux视频总结

  • 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 : 排序
    awk : https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

  • Linux-5 软件安装:
    1、tr:将一组字符变成另一组字符。
    2、安装软件步骤:
    mkdir 软件名
    cd 软件名
    wget 安装包下载地址
    解压安装包(unzip/tar....)
    cd 解压后的目录
    make

  • Linux-7 环境变量:
    1、方便调用命令(bowtie2)的使用方法:
    第一种方法:首先赋值: bowtie2=bowtie2命令所在路径 使用时: $bowtie2
    第二种方法: 使用 alias bowtie2=bowtie2命令所在路径 使用时:bowtie2
    第三种方法: 修改环境变量 echo $PATH,
    export PATH=bowtie2命令所在路径/bin:$PATH' >>~/.bashrc
    source ~/.bashrc
    2、bowtie2的使用:
    建立索引:bowtie2-build .fa文件 索引的前缀
    比对:
    bowtie2 -x 索引文件前缀 -1 短序列文件(.fq文件) -2 短序列文件(.fq文件) -S 输出的.sam文件
    bowtie2 -x 索引文件前缀 -U 长序列文件(.fq文件) -S 输出的.sam文件

  • Linux-8 shell脚本编程:
    1、变量:讲解环境变量
    2、参数:$0 :Shell本身的文件名 $1-$n : 添加到Shell的各参数值
    拓展:https://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html

#创建一个小脚本,内容为echo $0,并运行。
vip41@VM-0-15-ubuntu:~/tmp$ vi tmp.sh
vip41@VM-0-15-ubuntu:~/tmp$ cat tmp.sh 
echo $0
vip41@VM-0-15-ubuntu:~/tmp$ bash tmp.sh 
tmp.sh
#往脚本添加$1 $2 $3,并运行脚本(后面再添加三个任意参数如12 23 34)
vip41@VM-0-15-ubuntu:~/tmp$ vi tmp.sh 
vip41@VM-0-15-ubuntu:~/tmp$ cat tmp.sh 
echo $0 $1 $2 $3
vip41@VM-0-15-ubuntu:~/tmp$ 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

vip41@VM-0-15-ubuntu:~/tmp$ ls
2.3  a.1  a.txt  b.txt  s.1  tmp.sh
vip41@VM-0-15-ubuntu:~/tmp$ echo *.txt
a.txt b.txt
vip41@VM-0-15-ubuntu:~/tmp$ echo *.1
a.1 s.1
vip41@VM-0-15-ubuntu:~/tmp$ echo [a-z].1
a.1 s.1

4、标准头文件(有待进一步理解):
#!/bin/bash
set -e
# Function for script description and usage
usage()
{
cat <&2
usage:
。。。。
}
5、循环:for(``:捕获待了解)、while

#for循环
vip41@VM-0-15-ubuntu:~/tmp$ 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
vip41@VM-0-15-ubuntu:~/tmp$ for i in {3..9};do echo z${i}.txt;done
z3.txt
z4.txt
z5.txt
z6.txt
z7.txt
z8.txt
z9.txt
#捕获
vip41@VM-0-15-ubuntu:~/tmp$ for i in `ls *.txt`;do echo $i;done
s{i}.txt
z10.txt
z1.txt
z2.txt
z3.txt
z4.txt
z5.txt
z6.txt
z7.txt
z8.txt
z9.txt
a.txt:
b.txt:

6、建立软链接:

vip41@VM-0-15-ubuntu:~/tmp1$ ls ~/tmp/*.txt | while read id;do echo $id;done
/home/vip41/tmp/s{i}.txt
/home/vip41/tmp/z10.txt
/home/vip41/tmp/z1.txt
/home/vip41/tmp/z2.txt
/home/vip41/tmp/z3.txt
/home/vip41/tmp/z4.txt
/home/vip41/tmp/z5.txt
/home/vip41/tmp/z6.txt
/home/vip41/tmp/z7.txt
/home/vip41/tmp/z8.txt
/home/vip41/tmp/z9.txt
vip41@VM-0-15-ubuntu:~/tmp1$ ls ~/tmp/*.txt | while read id;do echo $(basename $id);done
s{i}.txt
z10.txt
z1.txt
z2.txt
z3.txt
z4.txt
z5.txt
z6.txt
z7.txt
z8.txt
z9.txt
vip41@VM-0-15-ubuntu:~/tmp1$ ls ~/tmp/*.txt | while read id;do ln -s $id $(basename $id);done
vip41@VM-0-15-ubuntu:~/tmp1$ ls -lh
total 0
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 a.txt: -> /home/vip41/tmp/a.txt:
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 b.txt: -> /home/vip41/tmp/b.txt:
lrwxrwxrwx 1 vip41 vip41 24 Dec 18 22:18 s{i}.txt -> /home/vip41/tmp/s{i}.txt
lrwxrwxrwx 1 vip41 vip41 23 Dec 18 22:18 z10.txt -> /home/vip41/tmp/z10.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z1.txt -> /home/vip41/tmp/z1.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z2.txt -> /home/vip41/tmp/z2.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z3.txt -> /home/vip41/tmp/z3.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z4.txt -> /home/vip41/tmp/z4.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z5.txt -> /home/vip41/tmp/z5.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z6.txt -> /home/vip41/tmp/z6.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z7.txt -> /home/vip41/tmp/z7.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z8.txt -> /home/vip41/tmp/z8.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z9.txt -> /home/vip41/tmp/z9.txt

附:shell十三问:http://wiki.jikexueyuan.com/project/13-questions-of-shell/what-shell.html
7、文件 文件描述符
输入文件—标准输入(默认输入来自键盘) 0
输出文件—标准输出(默认输出到屏幕) 1
错误输出文件—标准错误(默认输出到屏幕) 2

vip41@VM-0-15-ubuntu:~/tmp1$ vi tmp.sh
vip41@VM-0-15-ubuntu:~/tmp1$ cat tmp.sh
cd ghkyu
vip41@VM-0-15-ubuntu:~/tmp1$ bash tmp.sh
tmp.sh: line 1: cd: ghkyu: No such file or directory
vip41@VM-0-15-ubuntu:~/tmp1$ bash tmp.sh 2>result.txt
vip41@VM-0-15-ubuntu:~/tmp1$ cat result.txt 
tmp.sh: line 1: cd: ghkyu: No such file or directory

8、命令替换:
1 ).``(反引号,电脑键盘Esc下面的那个键)
2 ).$()命令

vip41@VM-0-15-ubuntu:~/tmp1$ vi tmp.sh
vip41@VM-0-15-ubuntu:~/tmp1$ cat tmp.sh 
export bed=afaf
echo $bed
echo `date`
echo $(date)

vip41@VM-0-15-ubuntu:~/tmp1$ bash tmp.sh 
afaf
Tue Dec 18 23:18:27 CST 2018
Tue Dec 18 23:18:27 CST 2018

9.进程替换:http://wiki.jikexueyuan.com/project/13-questions-of-shell/what-shell.html

  • Linux-9 脚本要学好:
    1、整体思路:
    配置文件出现问题(左端测序文件和右端测序文件不匹配)-->查看已比对好的.bam文件(正常大小以G为单位),发现出现几k的文件-->由于两个样本的FQ双端文件匹配错误,导致.bam文件生成失败(几k的.bam文件)-->将错误的fq配置文件正常排序,重新配置文件(24个),再重新进行比对。
图片发自App

图片发自App

2、命令解析:
1)grep 'NT-2' config.mapping | cut -f 1 | cut -d "-" -f 1 | sort | uniq -c | grep -w 1 | awk '{print $2}' > onceid : 从config.mapping提取含NT-2的文件,在对其切割(cut),指定第一列显示(-f 1),再对第一列以-切割(-d"-")显示第一列,再排序(sort),去除重复出现的行(uniq)在行前显示重复次数(-c)匹配只有重复出现一次的文件(grep -w 1)并输出( awk '{print $2}' ),导入到onceid文件中。(出现过一次的文件需要剔除,因为一个比对需要两个fq文件)
2、grep -v -f onceid wrong.sampleid | wc: 从wrong.sampleid文件中查找onceid文件中的内容(-f onceid wrong.sampleid),再反选(-v)即不是onceid的内容,再统计个数,结果为24个需要重新比对的文件(实际比对12次)
3、

grep -v -f onceid wrong.sampleid > tmp
mv tmp wrong.samlieid

: 将需要比对的文件导入到tmp并重命名为wrong.samlieid。
4、sort -t "_" -k 1,1 fq2 : 以下划线分割,第一个下划线前为第一列,下划线后的内容为下一列。指定排序为分割后的第一列,1,1:指定起始列和终止列都为第一列(第一列和第二列长度可能不同,所以需要指定起始列和终止列)。

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 : 打印出第一列

linux-12 数据格 : http://www.jianshu.com/p/b000a2f0679f

友情阅读推荐:

  • 强烈推荐参加生信技能树(爆款入门培训课)全国巡讲 ,课程详情见:https://mp.weixin.qq.com/s/Z9sdxgvFj0XJjYaW_5yHXg 各大城市均有开课,随时随地报名。
  • 生信技能树公益视频合辑:学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!
    B站链接:https://m.bilibili.com/space/338686099
  • 学徒培养详见:https://mp.weixin.qq.com/s/3jw3_PgZXYd7FomxEMxFmw

你可能感兴趣的:(生信人应该这样学linux视频总结)