《学习小组Day2笔记--Hocchan_7》

作者: Hocchan_7 | 来源:发表于2018-08-21 23:56 被阅读39次

    一、学习内容:


    1. 什么是linux,什么是服务器?
    2. 为什么学生信要用linux?
    3. 怎样召唤linux--阿里云服务器
    4. 怎样登录服务器--putty和terminal
    5. 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用户,一般都是需要服务器管理员给你一个账号密码,让你远程登录。

    IP地址拷贝你的公网IP(用于远程登录) ,然后打开putty,操作流程:在主机名称(或IP地址)输入你的公网IP,点击打开 登陆后会弹出一个对话框,选择yes ,然后弹出一行字:login as ,在后面输入root(也就是你的用户名)【当然如果你自己有服务器的话,申请时管理员会告诉你用户名和密码】,接着他会让你输入密码,你只需要输入自己刚才在阿里云改好的密码就行!

    4.2. 如何使用terminal远程登录服务器?

    mac terminal使用 ssh 用户名@IP地址 进行登录

    5. linux有哪些最基本的操作?

    目录管理

    1. 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,第三方软件存放路径,非必需

    1. ls 显示列表,不管是文件夹还是文件,都能显示

    ls -l使用ls的长格式,可以显示更多的信息,包括文件的权限、所有者、大小、最后更改日期等。
    ls -a查看包含以.开头的隐藏文件
    ls -lh显示文件大小

    1. cd 接一个目录名,进入该目录

    cd -cd .. 返回刚才的目录
    cd . "."表示当前目录
    cd / "/"表示根目录
    主目录(家目录):直接cd 或者cd ~(波浪线)
    练习:进入tmp目录,然后查看当前路径,然后返回主目录

    1. 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 ##过会要用
    ‘#’后面是注释,就是解释代码的文字。是不参与运行的


    文件管理

    1. rm 删除操作

    rm file删除文件直接
    rmdir删除空文件夹
    rm -r删除有内容的文件夹,逐级删除目录下的子目录
    rm * 删除当前目录下所有文件
    rm –f 强制删除文件,删除时,不提出任何警告讯息。
    rm –i 删除文件前均会询问是否删除,y/n指示下一步。
    rmdir dirname 删除空目录。
    练习:删除刚才的del空目录

    1. touch通过改时间戳来创建新的空文件,可连续创建。
    2. vi 新建脚本或者文本文档(vi是linux中的文本编辑器)
    3. stat 用于显示文件的属性/状态信息。能看到那三个时间戳 [访问、更改、改变]。
    4. cp 复制文件
      使用:cp file1 file2
      多个文件到一个目录
      使用:cp {file1, 2,3} /dir/ --> 花括号展开机制

    cp –i 覆盖相同名称文件前先询问用户
    cp –R 递归拷贝,即拷贝时将所有目录一并拷贝
    cp -p 保留源文件或目录的属性
    cp -d 当复制链接文件时,把指向的文件一并复制。简而言之,保持链接
    cp -a(= -dpR) 保留所有原始属性,比-p保留的更多,常用于备份目录或文件
    练习:将刚才新建的文件复制一个,叫做new_file.txt

    1. mv 将文件移入文件夹,或者重命名
      使用:mv file 路径
      练习:将新文件new_file.txt,重命名为home.txt ,移动到主目录下(路径是~)

    文本查看【只用于文本!不要用来打开二进制文件】

    1. 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

    1. tac 反向显示cat
    2. head 默认输出前10行
    3. tail 默认输出后10行

    tail -n 自定义输出几行
    例如:head -n 3 hello_world.txt
    【注意-n与head之间有空格,-n和3之间空格可有可无】
    练习: 查看刚才自己的文件


    tail -f 查看文件尾部,不退出,等待显示后续追加至此文件的新内容
    【用途:监控web服务器中哪个用户正在访问哪个网页】
    1. less 逐页显示文本

    less -S 规则输出
    less -N 显示行号

    文本处理

    1. cut 用来分割字段

    cut -d (delimiter)指定分隔符, 默认tab。【不需要空格,直接加分隔符即可】
    cut -f 显示第几个字段
    cut -f 1,3 显示第1和第3个
    cut -f 1-3 显示第1-3个
    例如 cut -d: -f1 /etc/passwd 就抽取了这个文件的第一列

    1. sort 默认根据ASCII表中的顺序升序排序

    sort -n 按照数值大小排序,而非字母
    sort -r (reverse) 降序排序
    sort -t 指定字段分隔符 【等同于cut -d
    sort -k 指定字段【等同于cut -f
    sort -u 不管是否相邻,只要重复,行就显示一次
    sort -f 排序时忽略字符大小写

    1. uniq
      【与sort不同。在它看来,只有相邻的重复行才算做重复行。所以常与sort连用】

    uniq -c 每列旁边显示该行重复出现的次数
    uniq -d 仅显示重复出现的行列 (一个代表)
    uniq -D 显示所有的重复行列 (全部)

    1. wc word count 文本统计
      结果依次显示为:行数、单词数、字节数

    wc -l 只显示行数
    wc -w 只显示单词数
    wc -c 显示字节
    wc -L 最长的一行包含了多少个字符

    统计/bin目录下命令个数:ls /bin | wc -l

    1. 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'

    1. 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

    1. 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),找到就显示该行。

    1. awk 目前只会提取符合要求的列,默认分隔符是空格

    awk {’print $1‘} test.txt 提取第一列

    awk -F : '{print $2}' 以‘:’为分隔符 提取第二列

    1. 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


    • 附加
    1. ls输出的是横向的列表,怎样输出长格式列表(提示:搜索ls)
      ls -l
    2. 如何查看长格式列表中文件的大小?(提示:ls)
      ls -lh
    3. 查看Linux系统版本、内存与硬盘空间?(提示:分别是三个命令)
      lsb_release -a
      free -m
      df -lm
    4. 怎样建立类似/tmp/tmp1/tmp1.1 这样的层级目录(提示:搜索mkdir)
      mkdir -p tmp/tmp1/tmp1.1
    5. 怎样删除这些层级目录(提示:搜索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

    1. 非空行计数
      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'

    相关文章

      网友评论

        本文标题:《学习小组Day2笔记--Hocchan_7》

        本文链接:https://www.haomeiwen.com/subject/kjejiftx.html