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

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

由于平时的学习工作疏于整理,笔记本1T的磁盘再次被我塞满;因此,借机清理出一波古早的Linux学习笔记,进行分享。笔记大部分源于生信技能树的B站视频教程【生信技能树】生信人应该这样学linux(更新至第14集),如有需要,可去欣赏原汁原味的视频讲解。

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

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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hucy_Bioinfo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值