一、学习内容:
- 什么是linux,什么是服务器?
- 为什么学生信要用linux?
- 怎样召唤linux--阿里云服务器
- 怎样登录服务器--putty和terminal
- linux有哪些最基本的操作?
1.linux是什么?
linux是个操作系统(OS)。
- 应用场景
- 权限控制
- 命令行模式
- 目录结构
2. 为什么学生信的要用linux?
这是因为生物软件基于linux,系统开源免费,不需要图形界面,有效节约资源。命令行模式可以批量、高效地处理文件,满足数据分析的要求。当你需要跑几十、几百G数据的时候,用windows,电脑立刻就挂了。
3. 怎样召唤linux?
3.1. Windows10上的linux
(1)设置-更新和安全-针对开发人员-启用开发人员模式
(2)控制面板-控制面板-程序-启用或关闭windows功能-适用于Linux的windows子系统
(3)重启
(4)下载ubuntu。microsoft store里有
(5)启动ubuntu 和用户设置
正在安装-安装成功,设置用户名和密码,相当于注册,这里输入密码是没有任何提示的,一次性打完。
(6)更新
输入 sudo apt update
完成后输入 sudo apt upgrade
sudo 代表管理员,apt相当于install(安装),下载和安装了更新,就可以投入使用啦。
3.2. Windows7 上的linux
如果电脑配置不是很好的话,不推荐安装虚拟机,会很耗内存;一般的电脑配置(i3、i5CPU + 4G内存)推荐使用git bash ,有32位和64位选择https://git-scm.com/download/win
一路默认安装即可。
3.3. Mac上的linux
不需要安装任何东西,自带terminal,直接使用
3.4. 云服务器上的linux
注册阿里云免费服务器
https://free.aliyun.com/ntms/free/personal.html?handle=true
点免费领取=》登陆=》最下面支付宝图标(点击使用支付宝扫码登陆)=》实名认证=》返回领取
弹出的窗口是这样:需要选择操作系统(我们这里选择CentOS/7.4 64位系统)
【关于Linux系统,最常见的是CentOS和Ubuntu,二者大致相同】
点击控制台=》选三个杠=》选云服务器ECS
需要进行修改,实例id会在你登录服务器后显示,总不希望是一串乱码吧~然后登录密码肯定要自己设置的。
修改登录名
需要重启! 必须重启!!!
重启后,就可以远程登录了。
首次登陆的用户名是root用户,也就是管理员用户登陆。
我们可以用Windows的putty或者Mac的terminal登陆。
4.1. 如何使用putty远程登录服务器?
一开始注册的用户名是root,登陆密码就是你自定义的,但是输入密码是没有任何显示的(连星星符号都没有),你只管一次性打完,不要怀疑键盘坏了,输对了就能进去,输错了会给你三次重试的机会。
练习的时候使用云服务器的这个root用户是可以的,因为不管你出了什么差错,都可以重置恢复,但是实际运行项目肯定不能使用root用户,一般都是需要服务器管理员给你一个账号密码,让你远程登录。
4.2. 如何使用terminal远程登录服务器?
mac terminal使用 ssh 用户名@IP地址 进行登录
5. linux有哪些最基本的操作?
目录管理
-
pwd : print working directory,也就是打印当前路径,
/root 就是当前路径【路径就是你的位置】
/boot:系统启动相关文件,如内核,initrd,以及grub(BootLoader)
/dev:设备文件 — 体现了LInux的“一切皆文件”思想
/etc : 配置文件。大多数为纯文本文件
/home:用户的家目录
/root:管理员的家目录
/lib:公共库文件(不能单独执行, 只能被调用)
/lib/modeles:内核模块文件。
/media:挂载点目录,挂载移动设备(如U盘)
/mnt: 挂载额外的临时文件(如第二块硬盘)
/opt:可选目录(现在基本没用)
/proc:伪文件系统,内核映射文件,系统启动后才出现文件, 关机就空
/sys:伪文件系统,跟硬件设备相关的属性映射文件,关机就空
/tmp:临时文件,/var/tmp是另一个临时文件目录
【所有用户都可以操作,但只能删自己的,不能删别人的】
/var:可变化的文件
/bin:(binary) 可执行文件,用户命令
/sbin:管理命令
/bin、/sbin都是可执行程序,运行时依赖的库都放在/lib下,配置文件放在/etc
/usr:(universal shared readonly,只读文件)
/usr下也有/bin,/sbin,/lib,与系统提供基本功能相关;
根目录下的/bin,/sbin,/lib与系统启动相关,必需的;
/usr/local:/bin,/sbin,/lib,第三方软件存放路径,非必需
- ls 显示列表,不管是文件夹还是文件,都能显示
ls -l使用ls的长格式,可以显示更多的信息,包括文件的权限、所有者、大小、最后更改日期等。
ls -a查看包含以.开头的隐藏文件
ls -lh显示文件大小
- cd 接一个目录名,进入该目录
cd -或cd .. 返回刚才的目录
cd . "."表示当前目录
cd / "/"表示根目录
主目录(家目录):直接cd 或者cd ~(波浪线)
练习:进入tmp目录,然后查看当前路径,然后返回主目录
- mkdir :make directory-- 创建你的空目录
mkdir -p ~/MM/NN :建立主目录下的MM包含的子目录NN
mkdir -p mnt/test/{x/m,y} 在mnt/test/文件夹下创建x和y文件夹,x文件夹下创建m文件
mkdir biosoft ##存放生信软件
mkdir project ##存放生信项目
mkdir tmp ##存放一些杂七杂八
mkdir src ##存放源代码
mkdir del ##过会要用
‘#’后面是注释,就是解释代码的文字。是不参与运行的
文件管理
- rm 删除操作
rm file删除文件直接
rmdir删除空文件夹
rm -r删除有内容的文件夹,逐级删除目录下的子目录
rm * 删除当前目录下所有文件
rm –f 强制删除文件,删除时,不提出任何警告讯息。
rm –i 删除文件前均会询问是否删除,y/n指示下一步。
rmdir dirname 删除空目录。
练习:删除刚才的del空目录
- touch通过改时间戳来创建新的空文件,可连续创建。
-
vi 新建脚本或者文本文档(vi是linux中的文本编辑器)
- stat 用于显示文件的属性/状态信息。能看到那三个时间戳 [访问、更改、改变]。
-
cp 复制文件
使用:cp file1 file2
多个文件到一个目录
使用:cp {file1, 2,3} /dir/ --> 花括号展开机制
cp –i 覆盖相同名称文件前先询问用户
cp –R 递归拷贝,即拷贝时将所有目录一并拷贝
cp -p 保留源文件或目录的属性
cp -d 当复制链接文件时,把指向的文件一并复制。简而言之,保持链接
cp -a(= -dpR) 保留所有原始属性,比-p保留的更多,常用于备份目录或文件
练习:将刚才新建的文件复制一个,叫做new_file.txt
-
mv 将文件移入文件夹,或者重命名
使用:mv file 路径
练习:将新文件new_file.txt,重命名为home.txt ,移动到主目录下(路径是~)
文本查看【只用于文本!不要用来打开二进制文件】
- cat 查看并直接将内容输出到屏幕
cat > file.txt
.....(输入内容)【按Ctrl+c 可结束输入】
cat –n file.txt 在显示内容前加上行号
cat -ns file1 > file2 将1文件拷贝到2中,并加上行号(-n),遇到多行空格只显示一行(-s)
nl -n ln -b t file : file中的每行最前边显示行号(-n ln),并且空格不加行号
(-b t), 如果想在空格处加上,用-b a
- tac 反向显示cat
- head 默认输出前10行
- tail 默认输出后10行
tail -n 自定义输出几行
例如:head -n 3 hello_world.txt
【注意-n与head之间有空格,-n和3之间空格可有可无】
练习: 查看刚才自己的文件
tail -f 查看文件尾部,不退出,等待显示后续追加至此文件的新内容
【用途:监控web服务器中哪个用户正在访问哪个网页】
- less 逐页显示文本
less -S 规则输出
less -N 显示行号
文本处理
- cut 用来分割字段
cut -d (delimiter)指定分隔符, 默认tab。【不需要空格,直接加分隔符即可】
cut -f 显示第几个字段
cut -f 1,3 显示第1和第3个
cut -f 1-3 显示第1-3个
例如cut -d: -f1 /etc/passwd
就抽取了这个文件的第一列
- sort 默认根据ASCII表中的顺序升序排序
sort -n 按照数值大小排序,而非字母
sort -r (reverse) 降序排序
sort -t 指定字段分隔符 【等同于cut -d
】
sort -k 指定字段【等同于cut -f
】
sort -u 不管是否相邻,只要重复,行就显示一次
sort -f 排序时忽略字符大小写
-
uniq
【与sort不同。在它看来,只有相邻的重复行才算做重复行。所以常与sort连用】
uniq -c 每列旁边显示该行重复出现的次数
uniq -d 仅显示重复出现的行列 (一个代表)
uniq -D 显示所有的重复行列 (全部)
-
wc word count 文本统计
结果依次显示为:行数、单词数、字节数
wc -l 只显示行数
wc -w 只显示单词数
wc -c 显示字节
wc -L 最长的一行包含了多少个字符
统计/bin目录下命令个数:
ls /bin | wc -l
- tr 字符转换或删除 translate or delete characters
例如: tr 'ab' 'AB' 引号中的叫做字符集
这样就把包含字符集a、b的文件对应替换为A、B
但是tr不能直接加文件,如果想对一个文件中字符进行替换
使用输入重定向<
tr 'ab' 'AB' < /etc/passwd
将所有小写都换成大写:tr 'a-z' 'A-Z'
tr -d 删除出现在字符集中的所有字符
如: tr -d 'ab'
- sed 编辑工具
sed -s 替换
sed 's/A/B/'
A替换成B
sed -a 行下添加
sed 'a X'
在每一行下面添加X
sed ‘1,2a A\nB\nC’
在1-2行的下边分别添加3行,3行内容分别是A、B、C,\n是换行
sed -i 行上添加
sed 'i X'
在每一行上面添加X
sed -c 行替换
sed ‘c A’
所有的行内容都分别替换为A
sed ‘1,2c A’
1-2行作为整体替换为A
sed ‘1,2c A\nA’
1-2行分别替换为A
sed -d 行删除
sed -y 字符替换
sed 'y/a:/f@/' a.txt
a替换为f,:替换为@
删除前7行没用的,并输出至txt文件中
sed '1,7d' *.gff3 > test.txt
-
grep 查找文件里符合条件的字符串
主要有两种,一种基础模式就是grep,一种拓展模式叫做egrep。
egrep的特点就是支持更多的元字符
正则表达式:
它的语法结构有两套系统组成,元字符(metacharacters) + 普通字符
元字符主要由以下字符组成:
^ $ . [] {} - ? + () | \
grep -n 输出包含匹配字符串的行数。
grep -c 显示有多少行被匹配到(count)
grep -i 忽略匹配字段和匹配内容的大小写
grep -o 只打印匹配到的内容
grep -A/B n 显示搜索内容后面n行/显示搜索内容的前面n行
grep -v 反转查找。即显示出没有 '搜寻字符串' 内容的那一行。
grep --color=always 始终高亮显示搜索字段
【~/.bashrc 内加上这行:alias grep='grep --color=auto
再以source ~/.bashrc
来立即生效即可,这样每次运行grep都会自动加上颜色显示。】
grep -E 将范本样式为延伸的普通表示法来使用。(即使用扩展正则表达式)
行首字节 ^
行尾字节 $
^[0-9] 以数字开始的行,[]内可列举字母
^[124ab] 以1,2,4,a,或b开头的行
grep \'^.\' myfile.txt
列出所有以句点开头的行
ls -l | grep '^a'
通过管道过滤ls -l输出的内容,只显示以a开头的行。
grep '[a-z]{5}' aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
grep \'w(es)t.*1\' aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(1),找到就显示该行。
- awk 目前只会提取符合要求的列,默认分隔符是空格
awk {’print $1‘} test.txt 提取第一列
awk -F : '{print $2}' 以‘:’为分隔符 提取第二列
- echo 打印到终端
echo -e "Hello world\nI love bioinformatics" > test.txt
-e 内容中有特殊字符就需要加(比如换行符\n)处理特殊字符
""中就是打印的内容
>字符输出到哪里(覆盖原文件)
>> (添加到原文件底部)
解压
tar结尾
tar -xvf
gz 结尾gunzip
tar.gz结尾tar -xzvf
bz2结尾tar -jxvf
zip结尾unzip
rar结尾unrar e
- 附加
- ls输出的是横向的列表,怎样输出长格式列表(提示:搜索ls)
ls -l - 如何查看长格式列表中文件的大小?(提示:ls)
ls -lh
- 查看Linux系统版本、内存与硬盘空间?(提示:分别是三个命令)
lsb_release -a
free -m
df -lm
- 怎样建立类似/tmp/tmp1/tmp1.1 这样的层级目录(提示:搜索mkdir)
mkdir -p tmp/tmp1/tmp1.1
- 怎样删除这些层级目录(提示:搜索rm)
rm -r tmp*
切记
rm -rf tmp* 不要使用
实用小技能
tree
下载安装:
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.tgz && make install
记得将安装完的程序导入自己的环境变量
那么如何设置自己的环境变量呢,简单说一下:
mkdir -p /place you like/soft
(这里命名和存放位置自定义)
echo export PATH=/your install environment path/bin:$PATH >> ~/.bashrc
source ~/.bashrc
设置好后,将软件copy到环境变量
cp tree /your environment PATH/
使用就很简单啦:tree -h dir
(-h 意思是-human-readable,很方便地将文件大小表示出来)
常用Linux查看配置tip
- df : disk free 显示磁盘空余
- du: disk usage 是对文件和目录磁盘使用的空间的查看
du -ch file1 file2 显示几个文件大小并count总和
du -h | sort -nr | head -10 列出前10个占空间最大的文件,降序排列
cat /proc/cpuinfo | grep process | wc -l 查看cpu个数,方便以后跑程序设置线程数
uname -a 查看linux 内核/操作系统/CPU信息
grep练习
1. 搜索特定信息
搜索基因组注释文件.gff中特定基因信息
grep "AT1G01680" *.gff | head -n5
2. 排除特定信息
搜索AT1G01680这个基因,但排除其中feature项的protein
grep "AT1G01680" *.gff | grep -v "protein" | head -n5
3. 查找特定序列并计算出现了几次
grep -c "CAAATTGAATTAAG" *.fas
或者: grep "CAAATTGAATTAAG" *.fas | wc -l
如果单纯输出 就用grep -o
4. 精准匹配某个基因
搭配正则表达式。要匹配开头为AT1G250,结尾为3的基因名
grep "AT1G250.*3$" *.gff
- 非空行计数
grep -c "[^ \\n\\t]"
grep并非完美
查找TAIR10_chr_all.fas 中95-100之内的‘CCACT’碱基
- 先查看一下
tail -n100 TAIR10_chr_all.fas | head -n5
- 用肉眼就能看到'CCACT',但是如果用grep搜索 是没有结果的
tail -n100 TAIR10_chr_all.fas | head -n5 | egrep 'CCACT'
- 用grep还是能实现,就是不那么优雅:
tail -n100 TAIR10_chr_all.fas | head -n5 | tr -d '\n' | egrep 'CCACT'
【tr -d(delete) 是删除特定字段】
更快捷的办法
可以使用emboss套件下的dreg, 它是针对核酸;如果是氨基酸序列和翻译后的蛋白序列,使用preg
tail -n 1000 chr22.fa | head -n 5 | dreg -filter -pattern 'TAATA'
网友评论