首页 >> 学习 >> Linux常用命令 >> cat
cat命令

本节重要性:★★★★★    本节难度:★★★★☆

这里的cat不是猫的意思,而是英文catenate(连接)的缩写,它可以用来把几个文件连接起来。除此之外,我们还经常用cat来显示小文件的内容(内容不超过一屏),为什么大文件(超过一屏)不用呢?因为cat不会逐屏显示,而是一次性的把所有内容输出到标准输出(屏幕),所以如果文件超过一屏,你只能看到文件最后的部分。当然cat还有一些其他的用法。

命令用途

一次性显示文件内容、连接文件

命令格式

cat [option] [file(s)]

常用选项

-n	显示行号。

常见用法

cat主要有四种用法:

1. 显示小文件内容。

[peter@ibi98 ~]$ ls /home/pub/seq/
at_LEC1_CDS.fa  at_protein.fa.gz  cr_HAP3_CDS.fa  TAIR9_cds_20090619  TAIR9_pep_20090619.gz
[peter@ibi98 ~]$ cat /home/pub/seq/at_LEC1_CDS.fa
>AT1G21970 At_NM_102046 gi|42562231:47-763 Arabidopsis thaliana LEC1 (LEAFY COTYLEDON 1);
transcription factor AT1G21970 (LEC1) mRNA, complete cds
ATGGAACGTGGAGCTCCCTTCTCTCACTATCAGCTACCAAAATCCATCTCTGAATTGAACTTGGACCAGC
ACAGCAACAACCCAACCCCAATGACCAGCTCAGTCGTAGTAGCCGGCGCCGGTGACAAGAACAATGGTAT
CGTGGTCCAGCAGCAACCACCATGTGTGGCTCGTGAGCAAGACCAATACATGCCAATCGCAAACGTCATA
AGAATCATGCGTAAAACCTTACCGTCTCACGCCAAAATCTCTGACGACGCCAAAGAAACGATTCAAGAAT
GTGTCTCCGAGTACATCAGCTTCGTGACCGGTGAAGCCAACGAGCGTTGCCAACGTGAGCAACGTAAGAC
CATAACTGCTGAAGATATCCTTTGGGCTATGAGCAAGCTTGGGTTCGATAACTACGTGGACCCCCTCACC
GTGTTCATTAACCGGTACCGTGAGATAGAGACCGATCGTGGTTCTGCACTTAGAGGTGAGCCACCGTCGT
TGAGACAAACCTATGGAGGAAATGGTATTGGGTTTCACGGCCCATCTCATGGCCTACCTCCTCCGGGTCC
TTATGGTTATGGTATGTTGGACCAATCCATGGTTATGGGAGGTGGTCGGTACTACCAAAACGGGTCGTCG
GGTCAAGATGAATCCAGTGTTGGTGGTGGCTCTTCGTCTTCCATTAACGGAATGCCGGCTTTTGACCATT
ATGGTCAGTATAAGTGA
[peter@ibi98 ~]$ cat -n /home/pub/seq/cr_HAP3_CDS.fa
     1  >CrHAP3 CDS
     2  ATGAGCGGGGACGAGGGCGACGGTCGAGATGGCAACAGCAATGCGCGTGA
     3  GCAGGACAGGTTCCTGCCCATCGCCAACATCAGCAGAATTATGAAGAAGG
     4  CGCTCCCGAACAACGCGAAAATAGCCAAGGATGCAAAGGAGACGGTCCAG
     5  GAGTGCGTCTCGGAGTTCATTAGCTTCATCACGTCGGAGGCTAGTGACAA
     6  GTGCCAGCGGGAGAAGCGGAAAACAATTAACGGCGACGACCTGCTGTGGG
     7  CCATGACGACGTTGGGCTTTGAGGAGTACCTGGAGCCGCTCAAACTCTAC
     8  TTAGCCAAGTTCAGAGAGGCTGAGGCGGCGACATCCAATAAGCCAGGGGG
     9  CGGCTCAGGTGCCAACGCGGAGGCAAAGCGTGAGGCGGCCGCGGCGGCTG
    10  CGGCTGCGGCCGCAGCTGCGGCTGCAGTTTCGCAGCAACAGGCGGCGCAG
    11  CAGCAGATGGCGGCGCAGCTGCAAGCTGGCATGGCGTTCCCGGGGCTCAT
    12  GCCGGCGCAGTTCCAGGGGCTACCGCCCGGCATGATTCCCGCTGGCTTCC
    13  CCGGACTGCCGCTGCCTCCGGGCGTGCCGGGCCTGATGATGCCAGGTGGC
    14  GTTGTGCCCAAGCAGGAGCCCCCCAAGTAG

2. 连接文件。

[peter@ibi98 ~]$ cat /home/pub/seq/at_LEC1_CDS.fa /home/pub/seq/cr_HAP3_CDS.fa
>AT1G21970 At_NM_102046 gi|42562231:47-763 Arabidopsis thaliana LEC1 (LEAFY COTYLEDON 1);
transcription factor AT1G21970 (LEC1) mRNA, complete cds
ATGGAACGTGGAGCTCCCTTCTCTCACTATCAGCTACCAAAATCCATCTCTGAATTGAACTTGGACCAGC
ACAGCAACAACCCAACCCCAATGACCAGCTCAGTCGTAGTAGCCGGCGCCGGTGACAAGAACAATGGTAT
CGTGGTCCAGCAGCAACCACCATGTGTGGCTCGTGAGCAAGACCAATACATGCCAATCGCAAACGTCATA
AGAATCATGCGTAAAACCTTACCGTCTCACGCCAAAATCTCTGACGACGCCAAAGAAACGATTCAAGAAT
GTGTCTCCGAGTACATCAGCTTCGTGACCGGTGAAGCCAACGAGCGTTGCCAACGTGAGCAACGTAAGAC
CATAACTGCTGAAGATATCCTTTGGGCTATGAGCAAGCTTGGGTTCGATAACTACGTGGACCCCCTCACC
GTGTTCATTAACCGGTACCGTGAGATAGAGACCGATCGTGGTTCTGCACTTAGAGGTGAGCCACCGTCGT
TGAGACAAACCTATGGAGGAAATGGTATTGGGTTTCACGGCCCATCTCATGGCCTACCTCCTCCGGGTCC
TTATGGTTATGGTATGTTGGACCAATCCATGGTTATGGGAGGTGGTCGGTACTACCAAAACGGGTCGTCG
GGTCAAGATGAATCCAGTGTTGGTGGTGGCTCTTCGTCTTCCATTAACGGAATGCCGGCTTTTGACCATT
ATGGTCAGTATAAGTGA
>CrHAP3 CDS
ATGAGCGGGGACGAGGGCGACGGTCGAGATGGCAACAGCAATGCGCGTGA
GCAGGACAGGTTCCTGCCCATCGCCAACATCAGCAGAATTATGAAGAAGG
CGCTCCCGAACAACGCGAAAATAGCCAAGGATGCAAAGGAGACGGTCCAG
GAGTGCGTCTCGGAGTTCATTAGCTTCATCACGTCGGAGGCTAGTGACAA
GTGCCAGCGGGAGAAGCGGAAAACAATTAACGGCGACGACCTGCTGTGGG
CCATGACGACGTTGGGCTTTGAGGAGTACCTGGAGCCGCTCAAACTCTAC
TTAGCCAAGTTCAGAGAGGCTGAGGCGGCGACATCCAATAAGCCAGGGGG
CGGCTCAGGTGCCAACGCGGAGGCAAAGCGTGAGGCGGCCGCGGCGGCTG
CGGCTGCGGCCGCAGCTGCGGCTGCAGTTTCGCAGCAACAGGCGGCGCAG
CAGCAGATGGCGGCGCAGCTGCAAGCTGGCATGGCGTTCCCGGGGCTCAT
GCCGGCGCAGTTCCAGGGGCTACCGCCCGGCATGATTCCCGCTGGCTTCC
CCGGACTGCCGCTGCCTCCGGGCGTGCCGGGCCTGATGATGCCAGGTGGC
GTTGTGCCCAAGCAGGAGCCCCCCAAGTAG

如果要保存合并的结果,使用输出重定向保存到文件即可,关于输入输出重定向(简称重定向)我们在后面还要详细讲。

下面的内容在学习了重定向管道的概念后,会有更好的理解。

3. 利用cat和输出重定向,从键盘创建一个文件。

[peter@ibi98 ~]$ cat >test
This is a test
using cat to create a file.

输入完成后,按Ctrl+d退出。ls会发现当前目录下多了一个test文件,用cat查看文件内容,就是刚才输入的内容。

[peter@ibi98 ~]$ ls
flower  lily  prac  test
[peter@ibi98 ~]$ cat test
This is a test
using cat to create a file.

或者使用即时文件重定向(<<)终止输入:

[peter@ibi98 ~]$ cat <<eof >test_eof
> This is another test
> using cat and eof to create a file.
> eof
[peter@ibi98 ~]$ ls
flower  lily  prac  test  test_eof
[peter@ibi98 ~]$ cat test_eof
This is another test
using cat and eof to create a file.

eof是End of File的意思,当然您也可以换成别的不常见字符串,输入的时候一旦输入了这个字符串,就会终止输入。(思考一下,为什么常见的字符串不行呢?)

4. 放在管道的开头,给后面的命令提供数据,如:

[peter@ibi98 ~]$ cat /home/pub/seq/at_LEC1_CDS.fa |grep '>'
>AT1G21970 At_NM_102046 gi|42562231:47-763 Arabidopsis thaliana LEC1 (LEAFY COTYLEDON 1);
 transcription factor AT1G21970 (LEC1) mRNA, complete cds

grep命令的作用是打印包含某个模式的行,这里是打印包含大于号的行。这个Fasta格式的文件里只有注释行里有一个大于号,所以就是打印出注释行。

<<上一节  下一节>>