专栏名称: VG生信软件
国内首家从事Windows平台、可视化生物信息学桌面软件开发的公司。致力于提供领先的生物信息学软件产品和系统服务。产品和业务包括:微生物多样性分析软件、转录组分析软件、重测序分析软件、细菌基因组分析系统。
目录
相关文章推荐
Linux就该这么学  ·  运维老鸟私藏的 100 ... ·  昨天  
Linux就该这么学  ·  告别重复劳动!Ansible 带你玩转高效运维 ·  2 天前  
Linux就该这么学  ·  为什么说程序员是一个极度劳累的工作? ·  2 天前  
搜猪  ·  生猪现货日报|全国均价15.1元/公斤 ... ·  4 天前  
51好读  ›  专栏  ›  VG生信软件

学习专题:一些基础的shell脚本和服务器指令

VG生信软件  · 公众号  ·  · 2018-05-23 17:30

正文

shell进阶

写脚本需要记得模块化和可重复性

This is the Unix philosophy:  Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. —Doug McIlory

shell脚本模块化的特点:

  • 容易trouble shooting

  • 针对特定模块可以替换不同方法,比如找差异表达基因,简单的衡量标准就是foldchange,复杂的就有R包等等,灵活机动

  • 同样地,我们也可以用不同编程语言实现我们的目的

  • 模块化的代码可以复用

了解shell

1.可以使用 echo $0 / echo $SHELL 看看当前使用的shell脚本, 适合bioinformatics的shell是zshell


2.重定向:充满了美感和速度(Speed and Beauty in One)

  • 标准输出 > , 脚本后跟 2>list.strerr 重定向错误

  • 标准输入 < 一般被忽略,很多时候可以用 | 替换


3.脚本流程的交互和终止:hangup/kill

  • & 跟在脚本后面可以在后台挂起(background process),需要保持运行shell的开启。可以用 jobs 查看

  • 通过 ps 查看当前shell运行的程序,找到pid ,用 kill pid 终止挂起的程序

  • echo $? 查看上一脚本运行是否正常,脚本间可以用 && 或 || 连用,使短循环成立,感觉在脚本循环的时候特别有用

  • nohup: 可以用于长时间运行脚本或程序


4.通配符(wildcards)和括号在指令替换里的简单应用

  • echo"There are $(grep -c '^>' input.fasta) entries in my FASTA file." 这里$()获得了grep得到的信息,然后输出到echo的内容中

  • mkdir results-$(date+%F) 创建特定日期的目录


5.little tricks

  • alias 的妙用: aliastoday="date +%F" ,当前环境下today就可返回日期,用于各种文件和日志的命名,如 mkdir results-$(today)

Unix Data Tools(前部)

善用unix/linux内置函数(Unix staples)而不是大段代码(其实是一切从简的原则?),大段代码维护成本很高,传播也不容易。这一部分可以说是生信数据分析的核心。

那么何时使用,如何合适地使用pipeline呢,先以文本处理为例讲起(今后的学习其实也一直贯穿着这种思维)。

1.Text类型的数据

  • 在生物信息数据范围主要有 bed, gtf/gff. SAM, tabular BLAST, VCF 多数以tab键分隔

    • 查看类:head/tail/less

    • 提取类:grep提取某个字段/cut提取某列/awk结合前两者,有更强大的功能

    • 整合类:column整列/sort用于排序/join合并列

  • 简单例子

    用tab整理数据格式:

  • > before after







请到「今天看啥」查看全文