【Linux 基础】二、基础命令和软件安装

这一版本是重制版,完善了基础命令并增加了conda部分。

这里是佳奥。

跟随生信技能树的公开课程,我们开始正式的学习!

首先修改命令行配色:

echo  'export PS1="\[\033]2;\h:\u \w\007\033[33;1m\]\u \033[35;1m\t\033[0m \[\033[36;1m\]\w\[\033[0m\]\n\[\e[32;1m\]$ \[\e[0m\]"' >> ~/.bashrc

source  ~/.bashrc
image.png

再修改一下终端的复制沾粘快捷键,在MobaXterm里面,左上角Settings-Keyboad里面


image.png

修改为我们常用的Ctrl + V就好

鼠标选中命令,右键即可复制。

MobaXterm上传文件:


image.png

1 系统认知

命令格式: 命令 + 选项 + 文件

查看帮助文档:

命令 --help
命令 -h

查看磁盘空间:

df -h

查看内存:

free -g

切换用户:从root到普通账户

su 用户名

退出账户:

exit

2 文件夹与文件管理命令

休眠指令:

sleep 秒数

后台休眠
sleep 10 &

文件目录 bin存储所有可以执行的命令

 ls /bin

文件夹与文件管理的十个命令:

工作目录:
pwd 打印工作目录
ls 列出
cd 切换目录

创建:
mkdir 新建目录
touch 新建文件

操作文件:
mv 移动和重命名
rm 删除
cp 拷贝粘贴

压缩:
tar 压缩或解压缩

链接:
lm 链接文件

场景一:

$ pwd
/home/kaoku

$ cd biosoft/

$ ls
bowtie2  histlib  samtools

快捷键:

Tab 补全
Ctrl + C 终止任务
Ctrl + L 清屏
Ctrl + U 剪切光标到行首

查看当前文件夹:

展示目录 ls
$ ls
bowtie2  histlib  samtools

展示全部信息(包括隐藏文件) -a
展示容量 -h
以文件大小排序 -S
以时间排序 -t

展示详细信息 -l
$ ls -l
total 12
drwxr-xr-x 3 root root 4096 Jul 14 15:03 bowtie2
drwxr-xr-x 3 root root 4096 Jul 14 18:08 histlib
drwxr-xr-x 3 root root 4096 Jul 14 18:20 samtools

详细信息+大小 -lh
$ ls -lh
total 12K
drwxr-xr-x 3 root root 4.0K Jul 14 15:03 bowtie2
drwxr-xr-x 3 root root 4.0K Jul 14 18:08 histlib
drwxr-xr-x 3 root root 4.0K Jul 14 18:20 samtools

回到上一目录:

cd ../

回到home目录:
cd ~

查看进程:

ps -ef |grep 进程名

ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 16:53 ?        00:00:00 /init

创建目录:

mkdir name

如果name存在便不创建,name不存在就创建。
mkdir -p name

还可以创造多级目录:
mkdir -p name1/name2/name3

创建十个文件夹
mkdir folder{1..10}
 ls
folder1  folder10  folder2  folder3  folder4  folder5  folder6  folder7  folder8  folder9  

tree命令:

$ tree
.
├── bowtie2
│   ├── bowtie2-2.4.5-linux-x86_64
│   │   ├── AUTHORS
│   │   ├── BOWTIE2_VERSION
以下略

显示当前目录层级:
tree -L 1

$ tree -L 1
.
├── bowtie2
├── histlib
├── my_first_test_file
└── samtools

创建文件:

touch name.txt

移动文件:

mv 待移动文件 移动到哪个目录

mv file file1 重命名

复制文件到目录:

cp 文件 目录

删除:

rm 删除文件
rm -r 删除目录
rm -rf 不显示警告,删除目录

软连接:

ln -s TARGET*(绝对路径) DIRECTORY

将内容打印到屏幕:

echo

显示路径:
echo $PATH

给文件写入内容:
$ echo "hallo">file2
$ cat file2
hallo

查看历史命令:

history

处理压缩文件:

tar 

压缩:
tar -zcvf Data.tar.gz压缩后文件名 Data待压缩文件
c:创建压缩文件

解压:
tar -zxvf Data.tar.gz
x:解压缩
z:解压gzip文件

其他压缩命令:
zip unzip: .zip
gzip gunzip: .gz
bzip2 bunzip2: .bz2

3 文本处理

管道:|

cat 查看

head 文件前10行
head -100 前100行

tail 文件尾10行

less 
less -N 显示行号
less -S 单行显示,空格翻页,q退出
less -zless 查看压缩文件

more 逐页查看,空格翻页,q推出

tac 逆向查看

cat 修改.txt文件内容:

$ cat > tmp.txt
hello
nihao

结束编辑按Ctrl V
^C

查看被编辑后的tmp.txt
$ cat tmp.txt
hello
nihao

wc 统计文本:

wc
-l:统计行数
-w:统计字符串数
-c:统计字节数

$ wc -lwc test.bed
  10   88 3099 test.bed
  10行

cut文本切割:

cut
-d 指定分隔符,默认\t
-f 输出哪几列

输出第一列:
cut -f 1 test.bed
track name="His (@ Brs) 50" url="http://chip-atlas.org/view?id=$$" gffTags="on"
chr1
chr1
chr1

提取前三列的数据:
 cut -f 1-3 test.bed
track name="His (@ Brs) 50" url="http://chip-atlas.org/view?id=$$" gffTags="on"
chr1    9769    10673
chr1    9776    10481
chr1    9788    10497

输出第一,三到五,七列:
cut -f 1,3-5,7

sort排序:

sort
-n:按照数值大小从小到大
-v:字符串中含有数值,从小到大
-r:逆向排序
-k:指定区域
-t:指定分隔符

打开text.bed文件,选取第二列,显示前十行,按数字顺序排列
$ cat test.bed | cut -f 2 | head | sort -n
9769
9776
9788
9795
9799
9805
9810
9811
9825

uniq去除重复行:(相邻)

uniq
-c:统计每个字符串连续出现行数

一般sort+uniq连着用

paste文本合并:

paste
-d:指定分隔符
-s:按行合并

纵向拼接文件:
cat file1 file2 > file3

paste用法:
$ seq 20
1
2
3
...

18
19
20

$ seq 20 | paste - -
1       2
3       4
5       6
7       8
9       10
11      12
13      14
15      16
17      18
19      20

tr字符替换:

tr
-d:删除指定字符
-s:缩减连续重复字符

wget从指定的URL下载文件:

wget
从指定URL下载文件
# wget http://www.biotrainee.com/jmzeng/igv/test.bed

查看文件大小
# ls -lh
total 4.0K
-rw-r--r-- 1 root root 3.1K May 18  2017 test.bed

查看test.bed内容
# cat test.bed

4 生信常见数据格式

fasta 基于文本的,表示核酸/多肽序列。

特征:2行,id行(>开头)和序列行(一个字母表示一个碱基/氨基酸)。

fastaq 存储生物序列以及质量评价。

特征:4行,id行(@开头,记录必要信息),序列行,附加信息行(+),碱基质量行(PHRED值,用一个字符来表示碱基质量好坏)。

gff 记录序列转录起始位点、基因、外显子、内含子等元件在染色体中的位置信息。9列的文件。

gtf 可以用cufflinks里的gffread相互转换格式。

5 三驾马车之grep sed awk

grep 文本搜索:

grep [options] pattern file 
-w 只匹配单词
-v 输出没有匹配的行
-n 显示行号
-r 从目录里查找
-e 匹配多个 grep -e 'gene' -e 'UTR'
-f 从文件内容中匹配 grep -f file 

grep "查询的文字" "目标文件"

# grep H3K4me1 test.bed
image.png

结果会橙色标出

想知道在第几行,加一个-n
# grep -n H3K4me1 test.bed
4:chr1  9788    10497   

在第四行。

把每一行的数字标注添加到一个新的文件new中
# cat -n test.bed > new

查看目录发现新的文件new
# ls
new  test.bed

查看新文件new,仅使用-s参数,整理文件,但是结果也可以看到每一行的数字标注。
# cat -s new
     1  track name="His (@ Brs) 50" url="http://chip-atlas.org/view?id=$$" gffTags="on"
     2  chr1    9769    10673   ID=SRX539644;Name=H3K27ac%20(@%20HMEC);Title=GSM1383853:%20HMEC%20H3K27ac%20ChIP-
     
直接在test.bed搜索H3K4me1
# cat -n test.bed |grep H3K4me1
image.png

正则表达式:

补充 -E 表示正则表达式

^ 行首 cat file.txt | grep '^T'
$ 行尾
. 换行符之外的任意单个字符 cat file.txt | grep 'f.ee' 匹配到free
? 匹配?前项0次或1次 cat file.txt | grep 'f\?ee' 匹配ee或者fee
+ 匹配1次或多次 cat file.txt | grep 're\+' 匹配re或ree
* 匹配0次或多次 grep 'f*ee' 匹配fee或ee
{n} 匹配n次 grep 'fe\{2\}l' 匹配到feel
{n,} 匹配至少n次
{m,n} 匹配至少m,最多n次
[] 匹配任意一个
[^]排除字符 相当于反选
| 或

演示例子:

打开染色体文件,选择第三列,去除最开头“#” 符号,查找gene,查看前十行
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | cut -f 3 | grep -v '#' | grep 'gene'| head
pseudogene
ncRNA_gene
gene

只查看gene
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | cut -f 3 | grep -v '#' | grep '^gene'| head

查看有多少个gene
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | cut -f 3 | grep -v '#' | grep '^gene'| sort | uniq -c
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | grep -v '#'| cut -f 3 | grep -w -c 'gene'
     45 gene

查看最开头注释文件
 $ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | grep '#' | head

不显示最开头的#
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | grep -v '#'| head

查看Y染色体有哪些东西:
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | grep -v '#'| cut -f 3 | sort | uniq -c
   1549 CDS
    290 biological_region
      1 chromosome
   4395 exon
    216 five_prime_UTR

按照数字大小:
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | grep -v '#'| cut -f 3 | sort | uniq -c | sort -n
      1 chromosome
      3 snoRNA
      7 ncRNA
     17 snRNA
     45 gene
     94 ncRNA_gene
    146 mRNA
    190 three_prime_UTR
    216 five_prime_UTR
    283 lnc_RNA
    290 biological_region
    386 pseudogenic_transcript
    387 pseudogene
   1549 CDS
   4395 exon

反选exon输出,过滤掉含有exon的行:
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | grep -v '#' | grep -v 'exon' | less -SN

只输出含有CDS、UTR行:
因为UTR包含3'和5',所以直接搜索,不加-w
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | grep -e 'CDS' -e 'UTR' | less -SN
或者:
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | grep -E 'CDS' 'UTR' | less -SN
又或者:|管道符改为正则表达式,表示或:
$ cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | grep  'CDS\|UTR' | less -SN

查看fastaq文件@开头行数并统计:
$ cat hcc1395_normal_rep1_r1.fastq | grep '@' | wc -l
331958
或者:
$ cat hcc1395_normal_rep1_r1.fastq | grep -c  '@'

sed 流编辑器:

对文本进行增删改查

sed [-options] 'script' file(s)

参数
-n:只显示sed处理的行
-e:直接在命令模式上进行sed编辑
-i:修改读取文件内容,不输出

常见script
2 第2行
2,4 第2行到第4行
2,$ 第2行到最后一行 
2~3 第2行开始,每隔3行取一行
2,+4 第2行到2+4行
/pattern/ 匹配上pattern的行
[!] 表示否定,取反

a:指定行后增加一行,内容为a后面的字串
i:指定行前增加一行,内容为i后面的字串
d:删除某一行或某几行
c:改变指定行内容
s:替换 's/pattern/nem/[flags]'把pattern替换成new,可以指定flags
y:转换,字符一对一转换 'y/inchars/outchars/'
p:把匹配、修改的行打印出来,与-n参数合用

一些例子:

$ cat readme.txt
Welcome to Biotrainee()
This is your personal account in our Cloud
Have a fun with it
Please feel free to contact with me

在第1行后面增加1行:
$ cat readme.txt | sed ' 1a Welcome to Biotrainee()'
Welcome to Biotrainee()
Welcome to Biotrainee()
This is your personal account in our Cloud
Have a fun with it
Please feel free to contact with me

用sed匹配到一个空行:
$ cat test.txt
1
2
3
4
(这里是空行)

$ cat test.txt | sed '/^$/d' 删除开头^ 结尾$ 是空的 的行
1
2
3
4

把所有is替换为IS,g是全部替换,s换成1~3s就是替换1到3行
$ cat readme.txt | sed 's/is/IS/g'
Welcome to Biotrainee()
ThIS IS your personal account in our Cloud
Have a fun with it
Please feel free to contact with me

匹配有www的行,把ee替换为EE
$ cat readme.txt | sed '/www/ s/ee/EE/'

awk行处理:

对文本、数据进行行处理

awk [options] '{script}' file

常见参数:
-F 设置字段分隔符
-v 定义awk程序中的一个变量及其默认值

基础结构:'{script}' 
匹配结构:'/pattern/{script}' 
扩展结构:'BEGIN{script}{script}END{script}' 

awk读取文本时,会划分每个数据字段,并分配给一个变量。
$0整个文本行
$1文本行第1个数据字段
$NF文本行最后一个数据字段

awk内置变量,通过-v自定义:
FS:定义输入字段分隔符
OFS:定义输出字段分隔符
RS:定义输入记录分隔符
ORS:定义输出记录分隔符
NF:数据文件列数
NR:数据行数

一些例子:

cat Homo_sapiens.GRCh38.107.chromosome.Y.gff3 | awk '{print$9}' | less -S
ID=gene:ENSG00000288686;Name=XGY2;biotype=transcribed_unprocessed_pseudogene;description=XG
ID=transcript:ENST00000680285;Parent=gene:ENSG00000288686;Name=XGY2-204;biotype=processed_transcript;tag=basic;transcript_id=ENST00000680285;version>
Parent=transcript:ENST00000680285;Name=ENSE00003911762;constitutive=0;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=ENSE00003911762;rank=1;version=1
Parent=transcript:ENST00000680285;Name=ENSE00003911362;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=ENSE00003911362;rank=2;version=1

选取第一列
cut -f 1-3 test.bed |awk '{print $1}'

# cut -f 1-3 test.bed |awk '{print $1 }'
track
chr1
chr1
chr1
chr1
chr1
chr1
chr1
chr1
chr1

修改格式
# cut -f 1-3 test.bed |awk '{print $1":"$2","$3 }'
track:name="His,(@
chr1:9769,10673
chr1:9776,10481
chr1:9788,10497
chr1:9795,10434
chr1:9799,10446
chr1:9805,10419
chr1:9810,10438
chr1:9811,10465
chr1:9825,10306

倒序
# sort -k2,2nr test.bed |cut -f 1-3
chr1    9825    10306
chr1    9811    10465
chr1    9810    10438
chr1    9805    10419
chr1    9799    10446
chr1    9795    10434
chr1    9788    10497
chr1    9776    10481
chr1    9769    10673
track name="His (@ Brs) 50" url="http://chip-atlas.org/view?id=$$" gffTags="on"

2(第二列排序)n(数字)r(反过来)

4 软件安装-普通安装

安装软件:bowtie2
先下载Bowtie Files文件:https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.4.5/

查看目录,发现上传的zip文件
# ls
biosoft  bowtie2-2.4.5-linux-x86_64.zip

移动到bowtie2目录内
# cd bowtie2/
# ls
bowtie2-2.4.5-linux-x86_64.zip

解压压缩包
# unzip bowtie2-2.4.5-linux-x86_64.zip

可以看到添加了许多新的命令(绿色显示):

image.png
调用程序bowtie2
# /home/kaoku/biosoft/bowtie2/bowtie2-2.4.5-linux-x86_64/bowtie2

看到弹出帮助文档即调用成功
No index, query, or output file specified!
Bowtie 2 version 2.4.5 by Ben Langmead (langmea@cs.jhu.edu, www.cs.jhu.edu/~langmea)
Usage:
  bowtie2 [options]* -x <bt2-idx> {-1 <m1> -2 <m2> | -U <r> | --interleaved <i> | -b <bam>} [-S <sam>]

  <bt2-idx>  Index filename prefix (minus trailing .X.bt2).
             NOTE: Bowtie 1 and Bowtie 2 indexes are not compatible.
  <m1>       Files with #1 mates, paired with files in <m2>.
             Could be gzip'ed (extension: .gz) or bzip2'ed (extension: .bz2).
以下略

安装软件:samtools

先在biosoft目录下新建samtools目录,并进入该目录
cd ~/biosoft
mkdir samtools && cd samtools

获取软件在Github上面的下载URL
# wget https://github.com/samtools/samtools/releases/download/1.15.1/samtools-1.15.1.tar.bz2

--2022-07-14 15:35:14--  https://github.com/samtools/samtools/releases/download/1.15.1/samtools-1.15.1.tar.bz2
以下略

查看.bz2压缩包
# ls
samtools-1.15.1.tar.bz2

解压命令 tar xvfj
# tar xvfj samtools-1.15.1.tar.bz2

x(解压)v(显示)fj

解压后我们需要make一下文件,但在这之前要按照make和gcc以防报错

make安装:apt-get install make (也可以根据系统提示代码安装)
gcc安装:
sudo apt update
sudo apt install build-essential

安装完成后我们开始make刚刚安装的目录
# make

重要补充

安装samtools过程相当曲折,但是结果是好的,我来梳理一下注意点:

1 安装make,gcc

sudo apt update
sudo apt install make##安装make
sudo apt install build-essential##安装gcc

2 samtools安装过程中依赖于lzma、htslib两个包:

lzma:

apt-get install lzma

htslib:

第一步:

sudo apt-get update
sudo apt-get install gcc
sudo apt-get install make
sudo apt-get install libbz2-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libncurses5-dev 
sudo apt-get install libncursesw5-dev
sudo apt-get install liblzma-dev

第二步:

cd /usr/bin
wget https://github.com/samtools/htslib/releases/download/1.9/htslib-1.9.tar.bz2
tar -vxjf htslib-1.9.tar.bz2
cd htslib-1.9
make

3 更新curl.h

sudo apt-get install libcurl4-openssl-dev

4 回到samtools文件,make

顺利运行后,看到如下绿色的samtools说明安装成功


image.png

至于conda的安装和配置放在下一篇。

我们下一篇再见!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容