生信星球转录组培训第一期Day2——卖萌哥

今天的主要任务是练习linux基础命令,然后结合实例练习一下三个重要的命令awk、sed、grep

基础命令:

  • pwd

显示当前目录。print word directory

  • ls

我一般常用的是llll=ls -l mac下是没有这个的噢,要自己手动添加的. 添加方法参考这个: https://blog.csdn.net/sway_wu/article/details/82992359
后来经常用ll -th
-l 列出详细信息
-t 按修改时间排序
-h 文件大小按照适合人阅读的方式显示
其他可考虑参数:
-r 倒序排序 reverse
--color=auto根据输出结果类型上色

  • cd

常用的是:
cd ~ 因为~代表家目录,这条命令能快速回到家目录(如果是root的话就是到 /root,如果是普通用户的话就到/home/用户名
cd - 回到刚才那一层目录,就像电视机遥控器上的返回按钮,能在固定的两个台之间左右横跳
cd .. 切换到上一级目录

  • mkdir

今天新学会了一个命令:
mkdir $(date +%F) 可以创建以今天日期为名称的目录

$ mkdir $(date +%F)
$ ll
drwxrwxr-x.  2 n1806171b n1806171b   0 Jun  4 18:10 2019-06-04

太酷了!谢谢豆花!

  • rmdir

这是个我不常用的命令。
如何一次性删掉当前目录下的所有空文件夹:
find . -type d -empty -print | xargs rmdir

这条命令说了啥呢?
find . 查找当前目录下的所有文件。
那接下来的问题就是,按照什么条件来查找呢?
-type d d就是directory,就是文件夹啦。那是什么样的文件夹呢?
-empty 空的文件夹噢。找到之后呢
-print 打印出来。不打印就没有东西可以输出出来,输出不出来就不能通过|管道符交给后面的命令咯
| xargs 就是把前面的输出当作后面的命令的输入。输入到哪里去呢?
rmdir 删除掉空的文件夹。相当于执行了rmdir ManyEmptyDir这样的命令。
看懵了吗?懵了也没关系噢,多用就会啦,不难哒。

  • rm

啊哈。删库警告⚠️!
rm -rf / 千万别用这个噢,特别是当你有root权限的时候,除非你决定要删库跑路了 ( •̀ ω •́ )✧
-r recursive, 就是会把文件夹下的内容一起递归删除
-f force, 强制删除。

  • touch

“摸”一个文件出来

  • mv

这个命令有两个功能:一个是移动,一个是重命名。那啥时候是移动啥时候是重命名呢?

视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

参考自: https://blog.csdn.net/mosesmo1989/article/details/51094378/

I hope I make myself clear enough.

  • cat

把文件内容在标准输出(即屏幕上)全部打印出来。
今天新学会一个功能:重定向输出文件

$ cat > test.txt
Moran, can you hear me?
loving you~

在这个模式下,如果打错了字想要删掉,按backspace是不够的,你会发现不但要删的东西没删掉,反而还多了一些奇怪的字符

$ cat > test.txt
I made a typo heree^H^H^H^H^H

那个^H就是按退格产生的,这时候不要慌,按住Ctrl再按退格就能正常删除啦。

  • less

less -SN
-S --chop-long-lines Chop (truncate) long lines rather than wrapping.
-N 加上行号

  • head & tail

望文生义,这俩命令一个是看文件的头,一个是看文件的尾的。
一般会加一个 -n参数来设定看头(尾)的多少行,默认是10行。
也可以更偷懒一些, 直接把-n 12合并成-12, 例如:

head -n 12 <MYFILE>
head -12 <MYFILE>
tail -20 <MYFILE>
  • |

管道符。这个特有意思,特别是结合xargs的时候。管道呢,就是把前一个命令的结果当作后一段命令的输入,例如
ls *.bam | xargs -l -I {} echo samtools flagstat {} \> {}.stat > flagstat.sh
这个一大串的命令说了啥呢?首先,ls *.bam是显示出了当前目录下所有以.bam为结尾的文件,把它交给下面这一段命令作为它的输入。
下面这个xargs -l是把输入变成一行一个文件的格式,之后-I {}是用{}这个作为符号,代替输入的文件。echo到后面的内容则是输出命令。

练习题

  1. 在主目录下面创建/tmp文件夹,并且使其中包含 1/2/3/4/5 格式的文件夹系列
  2. 在创建好的文件夹下面,比如我的是 /home/u1239/tmp/1/2/3/4/5 ,里面创建文本文件 xi.txt,并输入内容,例如Hello world, Welcome to bioinfoplanet, Nice to see you。三句话分行显示
  3. 在tmp/下创建 1~5这5个文件夹,然后每个文件夹下面继续创建 1~5这5个文件夹, 并查看
  4. 增加一点难度:我想在练习三的每个目录中都放进去一个文件xi.txt,内容还是练习二的内容
  5. 下载 http://www.biotrainee.com/jmzeng/igv/test.bed 文件,统计该文件总共有几行,含有 H3K4me3 的是第几行
  6. 下载 http://www.biotrainee.com/jmzeng/rmDuplicate.zip 文件,并且解压,查看里面的文件夹结构 (提示:了解tree命令)
  1. 考察的是mkdir的-p参数
    (怎么查看参数呢?敲mkdir --help或者man mkdir就好啦,man是manual,也可以理解成有困难找男人来帮忙( •̀ ω •́ )✧)
    -p --parents no error if existing, make parent directories as needed
$ mkdir -p tmp/1/2/3/4/5
$ tree tmp/
tmp/
└── 1
    └── 2
        └── 3
            └── 4
                └── 5

5 directories, 0 files
  1. 考察的就是今天新学的cat > xi.txt 命令啦。
$ cat > tmp/1/2/3/4/5/xi.txt
Hello world
Welcome to bioinfoplanet
Nice to see you
^C
$ cat tmp/1/2/3/4/5/xi.txt
Hello world
Welcome to bioinfoplanet
Nice to see you
  1. 这道题考察的是批量创建,关键是用{1..5}来一次性批量生成文件夹。文件夹得一级一级来创建,否则会报错噢。
$ mkdir tmp
$ mkdir tmp/{1..5}
$ mkdir tmp/{1..5}/{1..5}
$ tree tmp/
tmp/
├── 1
│   ├── 1
│   ├── 2
│   ├── 3
│   ├── 4
│   └── 5
├── 2
│   ├── 1
│   ├── 2
│   ├── 3
│   ├── 4
│   └── 5
├── 3
│   ├── 1
│   ├── 2
│   ├── 3
│   ├── 4
│   └── 5
├── 4
│   ├── 1
│   ├── 2
│   ├── 3
│   ├── 4
│   └── 5
└── 5
    ├── 1
    ├── 2
    ├── 3
    ├── 4
    └── 5

30 directories, 0 files
  1. 这个问题确实有点点难,查了一下才找到思路。
    就是借助管道符,把本来要做25次的命令一次性生成好。
    把要移动的文件夹作为管道符的输入,输入的内容会被补充到最命令的后面。
    所以其实最基础的命令就是cp xi.txt tmp/1/1这样的模式,只是借助管道符一次全部做完而已。看起来有点难,想清楚就不难。用tree查看的时候,增加一个-h参数能够显示出文件的大小,可以看到确实是把生成的xi.txt文件放进去了(大小为53字节的文件),而不是在每个文件夹下面创建一个空的xi.txt
$ ll xi.txt
-rw-rw-r--. 1 n1806171b n1806171b 53 Jun  4 22:08 xi.txt
$ cat xi.txt
Hello world
Welcome to bioinfoplanet
Nice to see you
$ echo tmp/*/* | xargs -n 1 cp xi.txt
$ tree -h tmp/
tmp/
├── [  95]  1
│   ├── [  24]  1
│   │   └── [  53]  xi.txt
│   ├── [  24]  2
│   │   └── [  53]  xi.txt
│   ├── [  24]  3
│   │   └── [  53]  xi.txt
│   ├── [  24]  4
│   │   └── [  53]  xi.txt
│   └── [  24]  5
│       └── [  53]  xi.txt
├── [  95]  2
│   ├── [  24]  1
│   │   └── [  53]  xi.txt
│   ├── [  24]  2
│   │   └── [  53]  xi.txt
│   ├── [  24]  3
│   │   └── [  53]  xi.txt
│   ├── [  24]  4
│   │   └── [  53]  xi.txt
│   └── [  24]  5
│       └── [  53]  xi.txt
├── [  95]  3
│   ├── [  24]  1
│   │   └── [  53]  xi.txt
│   ├── [  24]  2
│   │   └── [  53]  xi.txt
│   ├── [  24]  3
│   │   └── [  53]  xi.txt
│   ├── [  24]  4
│   │   └── [  53]  xi.txt
│   └── [  24]  5
│       └── [  53]  xi.txt
├── [  95]  4
│   ├── [  24]  1
│   │   └── [  53]  xi.txt
│   ├── [  24]  2
│   │   └── [  53]  xi.txt
│   ├── [  24]  3
│   │   └── [  53]  xi.txt
│   ├── [  24]  4
│   │   └── [  53]  xi.txt
│   └── [  24]  5
│       └── [  53]  xi.txt
└── [  95]  5
    ├── [  24]  1
    │   └── [  53]  xi.txt
    ├── [  24]  2
    │   └── [  53]  xi.txt
    ├── [  24]  3
    │   └── [  53]  xi.txt
    ├── [  24]  4
    │   └── [  53]  xi.txt
    └── [  24]  5
        └── [  53]  xi.txt

30 directories, 25 files
  1. 考察下载的wget命令,统计行数的wc命令,还有查找的grep命令。
    wc -l 统计行数
    grep 查找,-n 显示行号。
$ wget http://www.biotrainee.com/jmzeng/igv/test.bed
$ cat test.bed | wc -l
10
$ grep -n 'H3K4me3' test.bed
8:chr1  9810    10438   ID=SRX387603;Name=H3K4me3%20(@%20HMLE);Title=GSM1280527:%20HMLE%20Twist3D%20H3K4me3%20rep2%3B%20Homo%20sapiens%3B%20ChIP-Seq;Cell%20group=Breast;<br>source_name=HMLE_Twist3D_H3K4me3;cell%20type=human%20mammary%20epithelial%20cells;transfected%20with=Twist1;culture%20type=sphere;chip%20antibody=H3K4me3;chip%20antibody%20vendor=Millipore;  222 .   9810    10438   0,226,255
  1. 考察wget,unzip和tree
$ wget http://www.biotrainee.com/jmzeng/rmDuplicate.zip
$ unzip rmDuplicate.zip
$ tree -pghD rmDuplicate
rmDuplicate
├── [drwxrwxr-x n1806171b   48 Nov 12  2016]  picard
│   ├── [drwxrwxr-x n1806171b  244 Nov 12  2016]  paired
│   │   ├── [-rw-rw-r-- n1806171b  351 Nov 12  2016]  readme.txt
│   │   ├── [-rw-rw-r-- n1806171b 3.0K Nov 12  2016]  tmp.header
│   │   ├── [-rw-rw-r-- n1806171b 2.7K Nov 12  2016]  tmp.MarkDuplicates.log
│   │   ├── [-rw-rw-r-- n1806171b 2.0K Nov 12  2016]  tmp.metrics
│   │   ├── [-rw-rw-r-- n1806171b  952 Nov 12  2016]  tmp.rmdup.bai
│   │   ├── [-rw-rw-r-- n1806171b 4.8K Nov 12  2016]  tmp.rmdup.bam
│   │   ├── [-rw-rw-r-- n1806171b  11K Nov 12  2016]  tmp.sam
│   │   └── [-rw-rw-r-- n1806171b 4.4K Nov 12  2016]  tmp.sorted.bam
│   └── [drwxrwxr-x n1806171b  281 Nov 12  2016]  single
│       ├── [-rw-rw-r-- n1806171b  351 Nov 12  2016]  readme.txt
│       ├── [-rw-rw-r-- n1806171b  16K Nov 12  2016]  tmp.header
│       ├── [-rw-rw-r-- n1806171b 3.1K Nov 12  2016]  tmp.MarkDuplicates.log
│       ├── [-rw-rw-r-- n1806171b  969 Nov 12  2016]  tmp.metrics
│       ├── [-rw-rw-r-- n1806171b 3.9K Nov 12  2016]  tmp.rmdup.bai
│       ├── [-rw-rw-r-- n1806171b 9.5K Nov 12  2016]  tmp.rmdup.bam
│       ├── [-rw-rw-r-- n1806171b  11K Nov 12  2016]  tmp.sam
│       └── [-rw-rw-r-- n1806171b  10K Nov 12  2016]  tmp.sorted.bam
└── [drwxrwxr-x n1806171b   48 Nov 12  2016]  samtools
    ├── [drwxrwxr-x n1806171b  213 Nov 12  2016]  paired
    │   ├── [-rw-rw-r-- n1806171b  354 Nov 12  2016]  readme.txt
    │   ├── [-rw-rw-r-- n1806171b 3.0K Nov 12  2016]  tmp.header
    │   ├── [-rw-rw-r-- n1806171b 4.3K Nov 12  2016]  tmp.rmdup.bam
    │   ├── [-rw-rw-r-- n1806171b 1.8K Nov 12  2016]  tmp.rmdup.vcf.gz
    │   ├── [-rw-rw-r-- n1806171b  11K Nov 12  2016]  tmp.sam
    │   ├── [-rw-rw-r-- n1806171b 4.4K Nov 12  2016]  tmp.sorted.bam
    │   └── [-rw-rw-r-- n1806171b 1.8K Nov 12  2016]  tmp.sorted.vcf.gz
    └── [drwxrwxr-x n1806171b  213 Nov 12  2016]  single
        ├── [-rw-rw-r-- n1806171b  355 Nov 12  2016]  readme.txt
        ├── [-rw-rw-r-- n1806171b  16K Nov 12  2016]  tmp.header
        ├── [-rw-rw-r-- n1806171b 8.8K Nov 12  2016]  tmp.rmdup.bam
        ├── [-rw-rw-r-- n1806171b 4.8K Nov 12  2016]  tmp.rmdup.vcf.gz
        ├── [-rw-rw-r-- n1806171b  11K Nov 12  2016]  tmp.sam
        ├── [-rw-rw-r-- n1806171b  10K Nov 12  2016]  tmp.sorted.bam
        └── [-rw-rw-r-- n1806171b 4.8K Nov 12  2016]  tmp.sorted.vcf.gz

6 directories, 30 files

顺便查了一下unzip和gunzip的区别

zip 压缩的后文件是 *.zip ,而 gzip 压缩后的文件 *.gz

附录:

tree命令行参数:
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
参考自:https://www.jianshu.com/p/15a96c1de695

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容