【Linux 笔记】Linux 基本操作 - 01. 系统认知-文本处理-软件安装-环境变量

1. 生信入门环境

常用工具推荐:

  • xshell/ Xmanager /putty:终端模拟管理软件,连接Linux终端。

  • WinSCP/FileZilla:连接服务器上传下载文件。

  • Everything:全盘搜索文件的工具。

  • 幕布/MindManager/XMind:思维导图。

  • Typora/Rmarkdown:markdown的编辑器。

  • Notepad++:超级文本编辑器。

  • git:快速高效的处理project,类似于DOS界面。

  • R/Rstudio/Rstudio Server:统计分析+可视化。

2. 学习资源介绍

  • Linux基础学习:马哥Linux教学视频、《Linux命令行与shell脚本编程大全》等。

  • 生信技能树公众号推文:#Linux#一文就够 等。

3. 系统认知

开源、多用户、多任务、稳定性、高效性和安全性。

查看当前服务器信息的常用命令:

ssh hucy@172.31.110.34 # Linux系统登陆服务器/切换用户
sudo adduser user1 # 开通用户,一般都没有sudo权限
passwd user1 # 修改密码
su user1 # 切换登录用户
exit # 退出用户登录或使用Ctrl+D

lsb_release -a # 查看Linux系统是CentOS还是Ubuntu
uname -a # 查看内核/操作系统/CPU信息的linux系统信息
cat /proc/cpuinfo # 查看CPU信息的linux系统信息命令

free -h # 查看内存情况
df -Th # 查看磁盘系统情况
df -h ./ # 查看当前磁盘使用情况
du -sh ./ # 查看指定目录(文件夹)的大小

cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组

id # 查看当前用户信息
env # 查看环境变量资源

top # 实时显示进程状态用户
w # 查看活动用户
uptime # 查看系统运行时间、用户数、负载
ps -aux | grep hucy # 查看用户hucy的所有进程
last | grep hucy # 查看用户hucy的登录日志

4. 去可视化的命令行

命令行:批量、高效、多用户;生物信息软件的运行环境。

路径相关介绍:

~:home目录
/:根目录
../:当前目录
../:当前目录的父目录,即上级目录
../../:上级目录的上级目录

常用命令:

cd - # 返回上次的目录
ls / # 根目录
ls # 当前目录, 即 ls ./

echo #内容打印到屏幕
echo $PATH
echo {1..10} #{}起扩展作用
mkdir #创建目录
mkdir folder{1..10}

touch hucy.txt #创建空白文件
cat > hucy.txt #创建并写入文件,Ctrl+C退出

总结:

练习网址: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 进行练习,挺好用的。

5. 文本处理

文本处理主要是实战awkgrepsedpastecatdiffwcvim命令,处理fastq、fasta、sam、bam、vcf、gff、gtf、bed、MAF等格式的数据。

下载练习数据: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 -SN test.bed # -N标记行号,-S不换行显示 # q退出,space翻页
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}'

cut提取1到3列,默认空格分隔:

awk构造特定输出样式:

awk批量生成网址:

  • 如:http://genome.ucsc.edu/cgi-bin/das/hg38/dna?segment=chr1:9769,10673

  • 其实,可以通过bedtools等其他工具直接获取序列信息。

排序

sort -k2,2nr test.bed | cut -f 1-3 #k:key; n:numeric; r:reverse即按照第二列降序排列

去掉注释行:cat -n test.bed # 注释行共1行
cat test.bed | wc -l # 测试文件一共10行
cat -n test.bed | tail -9 # 取后9行
cat test.bed | grep -v "^track" # 排除以track开头的行;-v选项排除匹配到的, -w进行完全匹配。

AWK实操:

wget https://www.mothur.org/w/images/d/d6/MiSeqSOPData.zip
unzip MiSeqSOPData.zip
cat MiSeq_SOP/stability.files
ls 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:输出分隔符

linux命令行文本操作参考:linux命令行文本操作一文就够

6. 软件安装

没有root权限可以自己新建一个文件夹进行安装。如不借助conda等环境安装软件,可参考 生物信息学常见1000个软件的安装代码!

软件安装大致分成3类:

(1) 二进制可执行程序,直接下载软件包解压后即可全路径调用。
(2) 常用语言编写的软件,比如perl, R, python, java, matlab, ruby, C等等。

  • C源码就是./configure,make,make install,也有的只用make,取决于readme,这个是报错最多的,一般就是没有权限,缺库。

  • perl和python软件,主要就是模块依赖的问题。

  • R,java 软件非常简单。

  • matlab软件,你要是在windows界面用到还好,想去linux用,也挺折腾。

  • ruby等其他。

(3) 系统或者语言自带的各种软件中心安装器,apt-get,yum,bioconda,cpan,cran,pip等等。

# 二进制可执行程序
cd ~/biosoft
mkdir picardtools && cd picardtools
wget http://ncu.dl.sourceforge.net/project/picard/picard-tools/1.119/picard-tools-1.119.zip
unzip picard-tools-1.119.zip

# C语言源码
cd ~/biosoft
mkdir samtools && cd samtools
wget https://github.com/samtools/samtools/releases/download/1.3.1/samtools-1.3.1.tar.bz2
tar xvfj samtools-1.3.1.tar.bz2
cd samtools-1.3.1
./configure --prefix=/home/hucy/biosoft/myBin
make
make install

cd ~/biosoft
mkdir bcftools && cd bcftools
wget https://github.com/samtools/bcftools/releases/download/1.3.1/bcftools-1.3.1.tar.bz2
tar xvfj bcftools-1.3.1.tar.bz2
cd bcftools-1.3.1
make
cp bcftools /home/hucy/biosoft/myBin
~/biosoft/myBin/bin/bcftools --help

# perl源码
## Download and install homer (Hypergeometric Optimization of Motif EnRichment)
## // http://homer.salk.edu/homer/
## // http://blog.qiubio.com:8080/archives/3024
## The commands gs, seqlogo, blat, and samtools should now work from the command line
cd ~/biosoft
mkdir homer && cd homer
wget http://homer.salk.edu/homer/configureHomer.pl
perl configureHomer.pl -install
perl configureHomer.pl -install hg19

# JAVA源码
cd ~/biosoft
## http://www.usadellab.org/cms/?page=trimmomatic
## http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/TrimmomaticManual_V0.32.pdf
mkdir Trimmomatic && cd Trimmomatic
wget http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.36.zip
unzip Trimmomatic-0.36.zip
java -jar ~/biosoft/Trimmomatic/Trimmomatic-0.36/trimmomatic-0.36.jar -h

常用解压命令:

unzip *.zip

tar xvfj *.tar.bz2
tar xvfz *.tar.bz

7. 环境变量

Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。环境变量是全局的,设置好的环境变量可以被所有当前用户所运行的程序所使用。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。实践案例可学习 linux系统环境变量一文就够

查看环境变量:

echo $PATH | tr ':' '\n'
echo $PATH | tr ':' '\n' | xargs ls -lh
which bwa

ls
cat ~/.bashrc | grep ls
alias ls='ls --color=auto'

常用环境变量:

PATH:决定了shell将到哪些目录中寻找命令或程序。
ROOTPATH:这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录。
HOME:当前用户主目录。
USER:查看当前的用户。
LOGNAME:查看当前用户的登录名。
UID:当前用户的识别字,取值是由数位构成的字串。
SHELL:是指当前用户用的是哪种Shell。
TERM :终端的类型。
PWD 当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。
MAIL:是指当前用户的邮件存放目录。
HISTSIZE:是指保存历史命令记录的条数.
HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
PS1:shell命令行界面主提示符,对于root用户是#,对于普通用户是$,也可以使用一些更复杂的值。
PS2:shell命令行界面次提示符。
IFS:输入域分隔符。当shell读取输入时,用来分隔单词的一组字符,它们通常是空格、制表符和换行符。

设置环境变量:

(1) 环境变量有很多,需要重点理解的就是PATH

#----1) 设置变量或使用alias----
bowtie2=~/biosoft/bowtie2/bowtie2-2.3.4.3-linux-x86_64/bowtie2 #每次打开终端都需要重新设置
$bowtie2
alias bowtie2='~/biosoft/bowtie2/bowtie2-2.3.4.3-linux-x86_64/bowtie2'
#----2) 修改配置文件中的环境变量----
vim ~/.bashrc
export PATH="~/biosoft/bowtie2/bowtie2-2.3.4.3-linux-x86_64:$PATH" #打开文本编辑工具vim进行编辑
# or
alias bowtie2='~/biosoft/bowtie2/bowtie2-2.3.4.3-linux-x86_64/bowtie2'
source ~/.bashrc #永久生效
#----3) 利用cat 和重定向符>> ----
cat >> ~/.bashrc
# 修改用户名字符串
PS1="\[\e[32;1m\]\u \[\e[33;1m\]\t \[\e[35;1m\]\w \n\[\e[0;40m\]$" #命令行输入
Ctrl+C #结束输入
source ~/.bashrc
cat ~/.bashrc | tail

用户名字符串的参数解释详见:PS1 PROMPT EXPLAINED FOR LINUX/UNIX

(2) 命令行历史环境变量HISTFILE

Linux中,bash输入的历史记录,会存在.bash_history(或者说root/bash_history)。通过history可查看既往输入命令,不仅可以输出正确的命令,还可以输入错误的(如abc),而且输出的是history之前所有的命令(including history),bash_history不是缓存文件,关机不会清除,文件会保存最近的N条命令,N=$HISTFILESIZE

history N #显示最近的N条命令,例如history 5
history -d N #删除第N条命令,这个N就是前面的编号,例如history -d 990
history -c #清空命令历史
history -a #将当前会话中的命令历史写入指定文件
echo $HISTFILE #使用此命令查看环境变量
echo $HISTFILESIZE #查看最大保存数目
export HISTTIMEFORMAT='%F %T ' #让history可以有时间戳显示
history

history和bash_histroy区别:

  • history查看输入的命令;

  • bash_history保存之前输入命令的文件(通常在用户目录下,如/home/user),通过cat .bash_history 或者vim 查看。

  • history是实时的,会查看之前输入的所有命令;在bash输入的命令会在关闭terminal后存在bash_history中。

  • 可以通过history -c删除bash历史, 但是.bash_history里仍会有历史记录 。

(3) 软件下载安装并设置环境变量

可用 --help和–version查看软件使用方法,一般软件都会带上示例数据。利用which查看所有安装过的版本位置。

# 下载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"
^C

# 查看示例数据
which bowtie2
cd ~/biosoft/bowtie2/bowtie2-2.3.4.3-linux-x86_64/example
tree -h

更多内容见后续。

(0)

相关推荐