cat选项分析

选项解析:

-A, --show-all 等价于 -vET -b, --number-nonblank 对非空输出行(包括仅仅有空格的行)编号,空输出行,指的是该行没有任何内容,即连续2次敲击回车按钮。 -e 等价于 -vE -E, --show-ends 在每行结束处显示 $ -n, --number 对输出的所有行编号,包括空行(连续敲击2次回车键的情况)和非空行。即所有行。 -s, --squeeze-blank 不输出多行空行,注意这里指的是如果有多个连续的空行,那么仅仅输出一个空行(空行指的是没有任何内容的行,实际上该行可能仅仅有1个换行符,如果是最后一行,那么连换行符也没有),注意空格不属于空行。 -t 与 -vT 等价 -T, --show-tabs 将跳 字符显示为 ^I -u (被忽略) -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外,显示非打印字符。打印出非打印字符,如window编辑文档的\r\n,显示为^M

 案例:查看当前目录下test.txt的文件的全部内容
[root@iZ25ja2kaemZ ~]# cat ./test.txt
1
2
3
4
5
$$$$
6
78
8
9$
over

案例:-b  --number-nonblank 对非空输出行(非空行包括仅仅有空格的行)编号,注意:空行指的是该行没有任何内容,即连续2次敲击回车按钮形成的行。(即空行指的是没有任何内容的行,实际上该行仅仅有1个换行符(连续敲击2次回车形成),或者如果是最后一行,那么连换行符也没有(通过上一行敲击回车))
[root@iZ25ja2kaemZ ~]# cat -b  ./test.txt
     1  1
     2  2
     3  3
     4  4
     5  5
     6  $$$$
     7  6
     8  78
     9  8
    10  9$
    11  over

12  222
    13  333
    14
    15  333

案例:-n   cat 加参数-n ,文件内容输出的同时,都会在所有行(包括空行和非空行)前面加上行号;
[root@iZ25ja2kaemZ ~]# cat -n  ./test.txt
     1  1
     2  2
     3  3
     4  4
     5  5
     6  $$$$
     7  6
     8  78
     9  8
    10  9$
    11  over
    12
    13  222
    14  333
    15
    16  333

案例:查看./test.txt内容,并且在每行的结尾处附加$符号;

[root@iZ25ja2kaemZ ~]# cat -E  ./test.txt
1$
2$
3$
4$
5$
$$$$$
6$
78$
8$
9$$
over$
$
222$
333$
   $
333$

案例:cat 可以同时显示多个文件(即同时显示2,3,4,5等多个文件)的内容,比如我们可以在一个cat命令上同时显示两个文件test.txt,test1.txt的内容;

[root@iZ25ja2kaemZ ~]# cat ./test.txt  ./test1.txt    //亚强:注意第1-16行尾test.txt,第17行之后为test1.txt内容
1
2
3
4
5
$$$$
6
78
8
9$
over

222
333

333
a11
a22
a33
a44
案例:[root@iZ25ja2kaemZ ~]# cat -n ./test.txt ./test1.txt //亚强:注意第1-16行尾test.txt,第17行之后为test1.txt内容,可见cat会连续对2个或更多内容的文件进行编号。
     1  1
     2  2
     3  3
     4  4
     5  5
     6  $$$$
     7  6
     8  78
     9  8
    10  9$
    11  over
    12
    13  222
    14  333
    15
    16  333
    17  a11
    18  a22
    19  a33
    20  a44

案例:-s命令, --squeeze-blank 不输出多行空行,注意这里指的是如果有多个连续的空行,那么仅仅输出一个空行(空行指的是没有任何内容的行,实际上该仅仅有1个换行符,或者如果是最后一行,那么连换行符也没有),注意有空格不属于空行
 [root@iZ25ja2kaemZ ~]# cat -n ./ test5.txt //亚强:文件设计的时候4-6行仅仅存在空格符,10-13是空行。
cat: ./: Is a directory
     1  1
     2  2
     3  3
     4
     5
     6
     7  a
     8  b
     9  c
    10
    11
    12
    13
    14  d
    15  e
    16  f
[root@iZ25ja2kaemZ ~]# cat -ns ./ test5.txt//亚强:文件设计的时候4-6行仅仅存在空格符,10-13是空行。可见10-13行仅仅显示了一个空行。
cat: ./: Is a directory
     1  1
     2  2
     3  3
     4
     5
     6
     7  a
     8  b
     9  c
    10
    11  d
    12  e
    13  f
[root@iZ25ja2kaemZ ~]#

案例:cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看,即首先显示一页(当前可视范围)内容,然后按下一次enter就显示后面1行数据,注意这里一行指的是当前可是窗口显示一行,不是文件内容用换行符分割的行;

[root@iZ25ja2kaemZ ~]# cat  ./test1.txt | more
d54-a91a-6b8038852fce(2270):0.60"
string(154) "insert into questions (ques_id,papers_id,degree,type) values ('e2ebec82-c962-4d54-a91a-6b8038852fce','89',0.60,'解答题(共5小题,满分46分)');"
resource(5) of type (mysql link)
string(15) "试题id:2271"
string(245) "初中数学试卷(1):华师大版(16):七年级上(129)::期末试题(14):页数-1:2011-2012学年四川省资阳市简阳市七年级(上)期末数学试卷(89,100,0.63):与几何语言训练:e6c275e0-3b1c-47aa-83c1-4671
b1132dcb(2271):0.67"
string(136) "insert into questions (ques_id,papers_id,degree,type) values ('e6c275e0-3b1c-47aa-83c1-4671b1132dcb','89',0.67,'与几何语言训练');"
resource(5) of type (mysql link)
string(15) "试题id:2272"
string(269) "初中数学试卷(1):华师大版(16):七年级上(129)::期末试题(14):页数-1:2011-2012学年四川省资阳市简阳市七年级(上)期末数学试卷(89,100,0.63):填空,并在括号内注明说理依据.:b0500f0f-1d8
b-478d-98ba-b2dd5d550ce1(2272):0.50"
string(160) "insert into questions (ques_id,papers_id,degree,type) values ('b0500f0f-1d8b-478d-98ba-b2dd5d550ce1','89',0.50,'填空,并在括号内注明说理依据.');"
resource(5) of type (mysql link)
float(1.5851311683655)
有一个符合题意,请把你认为符
合题意的一项选出来,并把其番号填在题后的括号内,每题3分,共30分)');"
resource(5) of type (mysql link)
string(15) "试题id:2280"
string(434) "初中数学试卷(1):华师大版(16):七年级上(129)::期末试题(14):页数-1:201
4-2015学年四川省遂宁市蓬溪县大石中学七年级(上)期末数学模拟试卷(90,150,0.76):选
择题(下列各题给出的四个选项
,只有一个符合题意,请把你认为符合题意的一项选出来,并把其番号填在题后的括号内,
--more--

案例:[root@iZ25ja2kaemZ ~]# cat ./test3.txt ./test1.txt | more  //这里用管道显示多个文件,效果为显示完test3.txt后继续显示text1.txt
综合案例:用管道显示2个文件,并给内容按照换行符进行分割,输出行号。注意more所谓的输出行是按照输出屏幕可视范围的一行,与文件内容的一行数据不同(文件内容一行是按照回车符\n分割的)。

[root@iZ25ja2kaemZ ~]# cat -n ./test3.txt ./test1.txt | more
     1  d54-a91a-6b8038852fce(2270):0.60"
     2  string(154) "insert into questions (ques_id,papers_id,degree,type) values ('e2ebec82-c962-4d54-a91a-6b8038852fce','89',0.60,'解答题(共5小题,满分46分)');"
     3  resource(5) of type (mysql link)
     4  string(15) "试题id:2271"
     5  string(245) "初中数学试卷(1):华师大版(16):七年级上(129)::期末试题(14):页数-1:2011-2012学年四川省资阳市简阳市七年级(上)期末数学试卷(89,100,0.63):与几何语言训练:e6c275e0-3b1c-47aa-8
3c1-4671
     6  b1132dcb(2271):0.67"
     7  string(136) "insert into questions (ques_id,papers_id,degree,type) values ('e6c275e0-3b1c-47aa-83c1-4671b1132dcb','89',0.67,'与几何语言训练');"
     8  resource(5) of type (mysql link)
     9  string(15) "试题id:2272"
    10  string(269) "初中数学试卷(1):华师大版(16):七年级上(129)::期末试题(14):页数-1:2011-2012学年四川省资阳市简阳市七年级(上)期末数学试卷(89,100,0.63):填空,并在括号内注明说理依据.:b050
0f0f-1d8
    11  b-478d-98ba-b2dd5d550ce1(2272):0.50"
    12  string(160) "insert into questions (ques_id,papers_id,degree,type) values ('b0500f0f-1d8b-478d-98ba-b2dd5d550ce1','89',0.50,'填空,并在括号内注明说理依据.');"
    13  resource(5) of type (mysql link)
    14  float(1.5851311683655)
    15  string(76) "http://www.jyeoo.com/math/report/detail/f87560d6-f422-466f-8309-2c49d68c63ba"
    16  string(18) "试卷分数:150"
    17  string(25) "试卷难度系数:0.76"
--more--
案例:cat有创建文件的功能,创建文件(>)后,要以EOF结束(好像也可以使用STOP结束,亚强测试不行),特别注意:如果创建的文件名在目的目录有重名文件,那么会重写该文件,覆盖掉源文件;

de>[root@localhost ~]# cat >  linuxsir.txt  << EOF        //创建文件linuxsir.txt,并进入编辑状态,<<EOF是进入编辑该文件的状态,方便使用EOF命令来保存并退出编辑状态。如果不用<<EOF,也会自动进入编辑状态,此时可以使用ctry+c来保存并退出该编辑状态。

> 我来测试 cat 创建文件,并且为文件输入内容;      // 注:这是为linuxsir.org.txt文件输入内容;
> 北南南北 测试;                   //注:这是为linuxsir.org.txt文件输入内容;
> EOF  // 注:保存并退出编辑状态;
[root@localhost ~]# cat linuxsirtxt  //注:我们查看一下linuxsir.org.txt文件的内容;
我来测试 cat 创建文件,并且为文件输入内容;
北南南北 测试;

案例:重写文件测试(即如果新建的目的文件已经存在于目的目录,那么会覆盖掉那个已经存在的文件内容):

[root@iZ25ja2kaemZ ~]# cat test5.txt
i love china!
i also like china!
and also like you!
[root@iZ25ja2kaemZ ~]# cat >test5.txt <<EOF
> HE
> EOF
[root@iZ25ja2kaemZ ~]# cat test5.txt  //可见,源文件被覆盖,然后被重写了。
HE
[root@iZ25ja2kaemZ ~]#

案例:cat 还有向已存在的文件追加(>>)内容的功能;

[root@iZ25ja2kaemZ ~]# cat > test5.txt <<EOF//新建文件内容
> i love china!
> EOF
[root@iZ25ja2kaemZ ~]# cat >> test5.txt <<EOF //查看给源文件追加内容,可以看到追加的内容会从源文件的基础上另起一行。
> i also like china!
> and also like you!
> EOF
[root@iZ25ja2kaemZ ~]# cat test5.txt  //查看源文件,可以看到追加了内容。
i love china!
i also like china!
and also like you!
[root@iZ25ja2kaemZ ~]#
案例:cat 连接多个文件的内容并且输出到一个新文件中,特别注意:如果目的文件(如此案例的ceshi4.txt)在目的目录已经存在该重名文件,那么该语句会重写该文件,即会覆盖掉源文件,这里亚强不再给出覆盖文件的测试案例。

[root@iZ25ja2kaemZ ~]# cat ceshi1.txt
hello china!
[root@iZ25ja2kaemZ ~]# cat ceshi2.txt
hello beijing!
[root@iZ25ja2kaemZ ~]# cat ceshi3.txt
hello chaoyang!
[root@iZ25ja2kaemZ ~]# cat ceshi1.txt ceshi2.txt ceshi3.txt > ceshi4.txt //将 ceshi1.txt ceshi2.txt ceshi3.txt 这3个文件链接起来并写入到文件ceshi4.txt,注意如果目的目录已经处在ceshi4.txt,那么ceshi4.txt文件会被重写。
[root@iZ25ja2kaemZ ~]# cat ceshi4.txt
hello china!
hello beijing!
hello chaoyang!

cat 把一个或多个已存在的文件内容,追加(>>)到一个已存在的文件中

[root@iZ25ja2kaemZ ~]# cat ceshi1.txt
hello china!
[root@iZ25ja2kaemZ ~]# cat ceshi2.txt
hello beijing!
[root@iZ25ja2kaemZ ~]# cat ceshi3.txt
love you!
[root@iZ25ja2kaemZ ~]# cat ceshi1.txt ceshi2.txt >>ceshi3.txt //亚强:这里讲ceshi1.txt,ceshi2.txt的内容追加到ceshi3.txt文件中。
[root@iZ25ja2kaemZ ~]# cat ceshi3.txt
love you!
hello china!
hello beijing!
案例:打印出非打印字符,如window编辑文档的\r\n,显示为^M

[root@iZ25sngm7hfZ wyq]# cat -v root.sh
#!/bin/bash^M
girl2='wd';^M
echo "see ${girl2}";^M
[root@iZ25sngm7hfZ wyq]# cat root.sh
#!/bin/bash
girl2='wd';
echo "see ${girl2}";
[root@iZ25sngm7hfZ wyq]#

Linux之cat的使用介绍的更多相关文章

  1. Linux 文件内容查看工具介绍-cat,less,more,tail,head

    Linux 文件内容查看工具介绍 作者:北南南北来自:LinuxSir.Org摘要: 本文讲述几种常用文件内容的查看工具,比如cat.more.less.head.tail等,把这些工具最常用的参数. ...

  2. Linux常见目录及命令介绍

    一.Linux中常用的目录介绍:     /        -根目录     /bin    -命令保存目录(普通用户亦可读取的命令)     /boot    -启动目录,启动相关文件     /d ...

  3. Rsync,Linux日志及Screen工具介绍

    第十六次课 Rsync,Linux日志及Screen工具介绍 目录 一.rsync工具介绍 二.rsync常用选项 三.rsync通过ssh同步 四. rsync通过服务同步 五.linux系统日志 ...

  4. Linux培训教程 linux中nl命令使用介绍

    nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...

  5. linux中ldconfig的使用介绍

    linux中ldconfig的使用介绍 ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享. ldconfig的主要用途: 默认搜寻/lilb和/usr/lib,以及配置文件 ...

  6. [转] - Linux网络编程 -- 网络知识介绍

    (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...

  7. Window VNC远程控制LINUX:VNC详细配置介绍

    Window VNC远程控制LINUX:VNC详细配置介绍 //---------------------------------------vnc linux下的详细配置 1.VNC的启动/停止/重 ...

  8. 13 Basic Cat Command Examples in Linux(转) Linux中cat命令的13中基本用法

    Cat (串联) 命令是Linux/Unix开源系统中比较常用的一个命令.我们可以通过Cat命令创建一个或多个文件,查看文件内容,串联文件并将内容输出到终端设备或新的文件当中,这篇文章我们将会以实例的 ...

  9. Linux显示cat帮助信息并退出

    Linux显示cat帮助信息并退出 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ cat --help 用法:cat [选项]... [文件]... 将[文件 ...

随机推荐

  1. HTML+CSS教程(一)简介及其基本标签的使用方法

    一.前端 HTML(结构):HyPer TEXT Markup LanguageCSS(样式): 样式就是对于结构的一种美化JavaScript(js: 行为/ 提供了用户和界面的交互方式)jQuer ...

  2. alfred workflow 开发

    alfred python demo

  3. JUC并发编程基石AQS之主流程源码解析

    前言 由于AQS的源码太过凝练,而且有很多分支比如取消排队.等待条件等,如果把所有的分支在一篇文章的写完可能会看懵,所以这篇文章主要是从正常流程先走一遍,重点不在取消排队等分支,之后会专门写一篇取消排 ...

  4. 1、flink介绍,反压原理

    一.flink介绍  Apache Flink是一个分布式大数据处理引擎,可对有界数据流和无界数据流进行有状态计算. 可部署在各种集群环境,对各种大小的数据规模进行快速计算. 1.1.有界数据流和无界 ...

  5. JS面向对象编程之封装

    来源:https://segmentfault.com/a/1190000015843072 我们所熟知的面向对象语言如 C++.Java 都有类的的概念,类是实例的类型模板,比如Student表示学 ...

  6. serialize和json_encode 区别

    (1)serialize主要用于php的序列化,存储到文件或者数据库中,json_encode 也是序列化,但是 主要用于与其他语言比如js进行交互使用,对于传输来说,json有许多优点. (2)在显 ...

  7. 关于小程序中textarea内的字体浮动问题

    因为map.canvas.video.textarea 是由客户端创建的原生组件,原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上. 原生组件暂时还无 ...

  8. 2019-2020-1 20199329《Linux内核原理与分析》第十三周作业

    <Linux内核原理与分析>第十三周作业 一.本周内容概述 通过重现缓冲区溢出攻击来理解漏洞 二.本周学习内容 1.实验简介 注意:实验中命令在 xfce 终端中输入,前面有 $ 的内容为 ...

  9. 团队一致性的PHP开发环境之Docker

    docker php环境模型 docker 简介 Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现 ...

  10. 谈谈JavaScript中的变量、指针和引用

    1.变量 我们可能产生这样一个疑问:编程语言中的变量到底是什么意思呢? 事实上,当我们定义了一个变量a时,就是在存储器中指定了一组存储单元,并将这组存储单元命名为a.变量a的值实际上描述的是这组存储单 ...