【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. 学习资源介绍
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. 文本处理
文本处理主要是实战awk
、grep
、sed
、paste
、cat
、diff
、wc
、vim
命令,处理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
更多内容见后续。