找回密码
 注册
关于网站域名变更的通知
查看: 357|回复: 1
打印 上一主题 下一主题

linux下cat命令详解

[复制链接]
  • TA的每日心情

    2019-11-19 15:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-12-4 09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x

    ! U. i. @/ ?3 l简略版:4 g( B" y, Y! x9 T5 W

    / B6 S# m+ ?- ^! r2 y( \2 [cat主要有三大功能:1 q) a6 d" @% {; U1 x8 I: N0 R
    1.一次显示整个文件。$ cat filename
    / ^& N' }0 j8 y6 a/ O+ m2.从键盘创建一个文件。$ cat > filename  8 O8 Q) P% y* ~. e
       只能创建新文件,不能编辑已有文件.
    3 Q; V+ x; u" d6 r; ^& a3.将几个文件合并为一个文件: $cat file1 file2 > file
    " x2 Y4 O4 ?+ W3 c, ^! }: X" W2 u参数:7 f  U8 i5 H1 E* P: x
    -n 或 --number 由 1 开始对所有输出的行数编号
      V( f- `8 M, P/ W% ]7 Q' h-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号; x) {$ `0 h9 `" p
    -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行1 }2 D9 i# G& G' F
    -v 或 --show-nonprinting
    ; n( i4 h" t# C例:
    ' G: @( {/ }9 \' D* ~把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
    & d; o3 \0 r! |% vcat -n textfile1 > textfile27 I0 p2 p& w+ {8 z4 Q
    : [9 j. R: P, ~: _9 H) t/ r/ Q
    把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。6 _5 |$ p" w: D5 d8 ?
    cat -b textfile1 textfile2 >> textfile3
    / n! p9 f, n6 i6 m9 {0 T2 x* ^3 G
      h/ `1 m+ y- l( l1 |2 f( r8 o把test.txt文件扔进垃圾箱,赋空值test.txt
      Q; k) W: `: P# Xcat /dev/null > /etc/test.txt  
    * |5 x* ~7 q! M; L! R+ Y
    # t$ a8 Y% @. b) t# e
    6 I! s/ D6 p2 o  G& |' ~* zcat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名。( e9 \; u" \2 X# K3 E: Z
    ( G' |3 X# c1 I& U) ~, _
    比如:
    9 N' k4 Z' I+ {6 F: d- T9 f  e) {5 }
    de>[root@localhost ~]# cat /etc/fstabde>/ K  Z/ F2 n; @  I4 C$ r9 S
    为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数;/ L8 t+ A( f6 b& R# r1 p* B

    1 l' v) \& ^; ], j4 D' M
    + y$ T4 ^. T5 l0 L8 J/ M- \' h1.0 cat 语法结构;
    / A  P( T8 r0 p- }' @6 j2 [
    : q2 {8 r! c5 t: C$ ~de>cat [选项] [文件]...de>
    $ e7 W9 Y* p# `; F; n选项" T: Q% p" t6 ]* ^: C
    -A, --show-all 等价于 -vET
    6 D9 W+ J9 v9 U/ E/ x  s, c-b, --number-nonblank 对非空输出行编号. D" _! |0 D8 A6 b, \9 K
    -e 等价于 -vE
    ' E) w* D4 V. n7 }: l9 x-E, --show-ends 在每行结束处显示 $
    0 ]$ O" r1 }1 l  R: r-n, --number 对输出的所有行编号9 i# k2 H2 P9 X
    -s, --squeeze-blank 不输出多行空行. {' O; w* ~0 @; E  O  c* x
    -t 与 -vT 等价- T4 [# Y. Q6 V+ g7 ~% H
    -T, --show-tabs 将跳 字符显示为 ^I
    ; `) q% q7 ?4 d-u (被忽略)
    + L, g) H2 _6 ]-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
    2 Q0 w3 r! @% w! Q, v3 M$ J/ @- c--help 显示此帮助信息并离开4 d' _- u0 n, _2 H6 u+ f5 R' B

    . @1 i. b2 t" n  f7 ]  v" P; r1.1 cat 查看文件内容实例;
    # ]/ D7 m' q' J( o, V- d* B
    ! z5 A4 L1 B, w- s3 r0 T9 zde>[root@localhost ~]# cat /etc/profile    注:查看/etc/目录下的profile文件内容;
    4 L4 ^7 {5 D: C: I% r% d) o[root@localhost ~]# cat -b /etc/fstab   注:查看/etc/目录下的profile内容,并且对非空白行进行编号,行号从1开始;
    2 _. {  H, w8 K- p. B[root@localhost ~]# cat -n /etc/profile    注:对/etc目录中的profile的所有的行(包括空白行)进行编号输出显示;
    2 P  |& k" _7 V% W! |, D$ ~3 _[root@localhost ~]# cat  -E /etc/profile     注:查看/etc/下的profile内容,并且在每行的结尾处附加$符号;de>
    9 U8 B  s" ?. `) d% m- G3 S9 Q. g9 ~9 jcat 加参数-n 和nl工具差不多,文件内容输出的同时,都会在每行前面加上行号;+ n2 X7 }; Y% B. L( o, [

    9 Y# }% v$ a* ]4 \/ \- |de>[root@localhost ~]# cat -n /etc/profile
    - H& {& L; l, Y; W& s5 j[root@localhost ~]# nl  /etc/profilede>
    6 {, {" n# m8 U% U7 hcat 可以同时显示多个文件的内容,比如我们可以在一个cat命令上同时显示两个文件的内容;
    ' i: o, x, c9 e1 \4 s" n7 M( m9 g8 J( J& k- n' B4 s) `- `) W
    de>[root@localhost ~]# cat /etc/fstab /etc/profilede>8 ?9 N, c8 l4 w# F6 c. C  `
    cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;
    - x/ r% b% f% i( t2 z" I7 I( [" D: W% K0 C0 I1 U: P
    de>[root@localhost ~]# cat /etc/fstab /etc/profile | morede>
    * g% P! D  K; O2 h: [! O
    ) ?) ~0 {% V0 V7 L5 N( q& \$ {: n1 Z3 ~1.2 cat 的创建、连接文件功能实例;
    0 l0 C1 n! l+ t3 z" p$ h
    % L+ y% S( S& u, o. P* c+ R3 c5 w! C: d6 X5 f3 u2 s. e* u8 V
    cat 有创建文件的功能,创建文件后,要以EOF或STOP结束;, S4 B. y9 o7 o" l2 `  c/ C

    " y) Y) Y; M6 Y# s5 Vde>[root@localhost ~]# cat >  linuxsir.org.txt  << EOF  注:创建linuxsir.org.txt文件;
    # ?5 u9 V# G: P' |9 M) x" A5 X> 我来测试 cat 创建文件,并且为文件输入内容;       注:这是为linuxsir.org.txt文件输入内容;: M  E+ Y2 P, V# m2 P( l
    > 北南南北 测试;                   注:这是为linuxsir.org.txt文件输入内容;4 M5 Q0 Z* O+ R9 z6 @
    > EOF   注:退出编辑状态;1 o5 s8 P* ?- T
    # L9 F5 g% R8 a, a* Y, i9 D1 |/ Z
    [root@localhost ~]# cat linuxsir.org.txt  注:我们查看一下linuxsir.org.txt文件的内容;1 e/ ~/ a5 K. ?1 [

    . Q$ E) O- g- k7 \: d, D我来测试 cat 创建文件,并且为文件输入内容;
      T& _# w5 ~$ d  p北南南北 测试;de>; x* n( v: ^6 u
    cat 还有向已存在的文件追加内容的功能;9 @& e  z3 P' m0 Q
    & q) C" r# R7 J  |0 S
    de>[root@localhost ~]# cat  linuxsir.txt 注:查看已存在的文件linuxsir.txt 内容;% K; U3 [* }5 h  n/ I3 w8 B+ }8 F
    I am BeiNanNanBei From LinuxSir.Org .    注:内容行
    6 I4 A& W) G- }' c6 P& c5 j我正在为cat命令写文档4 M$ G$ L7 W$ b: l+ Q9 Q
    & x" E: g9 R, X( i. Q
    ( z4 i# U8 ^* ^  s5 Q/ h
    [root@localhost ~]# cat >> linuxsir.txt << EOF   注:我们向linuxsir.txt文件追加内容;
    , q4 x, g# ]5 E* O8 H> 我来测试cat向文档追加内容的功能;       注:这是追回的内容: y# U4 o* V" |" N9 p1 b6 z, Q
    > OK?* ?& |5 l% ^" M0 Q8 o) y
    > OK~% u* p+ V/ u' l6 _: R3 O
    > 北南 呈上' `! t. j  M) F! I4 i( {
    > EOF   注:以EOF退出;
    # i/ m6 J1 B) P9 e& R6 w% ]/ i. f* R' o3 \+ I

    7 K- f- h  ~2 ]) @4 q/ F- o' }[root@localhost ~]# cat linuxsir.txt  注:查看文件内容,看是否追回成功。' J- L' |- _  u$ z: S) ~
    I am BeiNanNanBei From LinuxSir.Org .0 M. k( f3 g$ e. W% E
    我正在为cat命令写文档
    7 z% s7 d5 I% Y, Q6 O9 q/ z) K5 j
    # _  R- j! p& Z$ T  g我来测试cat向文档追加内容的功能;  
    / D* b5 Y! t( U# I2 T( B, m8 }OK?
    : ?" s4 k! @, E/ S) N, j# TOK~
    9 r; \5 i+ }3 ]* u北南 呈上de>; \5 x+ V' i2 F) L4 I* L' G

    - I, o' X) C( T+ K
    3 Y9 J! q8 l9 F# l& B+ t: b& q6 ~% X& V
    cat 连接多个文件的内容并且输出到一个新文件中;
    6 ?$ W* f4 q9 y) @+ T7 D) Z
    ' B6 J  F2 G; m) o假设我们有sir01.txt、sir02.tx和sir03.txt ,并且内容如下;( q0 c' Z4 q# \$ Y0 d& N

    / e0 `; x0 C3 [# @de>[root@localhost ~]# cat sir01.txt  
    2 ]3 o1 k. L5 e- F, x/ e4 X123456
    7 N6 F9 l( e* o; V0 g# j  J8 ri am testing9 x  @* ]/ P  j+ w+ v$ p
    . F; V# r* k3 ]8 {0 r1 F
    [root@localhost ~]# cat sir02.txt
    3 Y. h) O3 q1 m56789
    $ E- ], g: U% N' u: d$ ^0 F) R2 vBeiNan Tested
    ( C6 v' F6 }& @" w7 j7 `# z* [0 }  l3 I, a  D
    [root@localhost ~]# cat sir03.txt0 h9 q- @1 q5 w, ~7 z3 f) f, {+ [
    098761 l2 y# z) A/ J5 i0 g, u& Q
    linuxsir.org testingde>
    9 _1 W% K% b4 F- s1 O; V! |. k& z我想通过cat 把sir01.txt、sir02.txt及sir03.txt 三个文件连接在一起(也就是说把这三个文件的内容都接在一起)并输出到一个新的文件sir04.txt 中。
    8 Z: O4 _; \6 Z* g( z2 y+ S2 a) T5 t1 J& x
    注意:其原理是把三个文件的内容连接起来,然后创建sir04.txt文件,并且把几个文件的内容同时写入sir04.txt中。特别值得一提的是,如果您输入到一个已经存在的sir04.txt 文件,会把sir04.txt内容清空。
    " v- A( m# E! G1 h- B/ W* p, ]/ h1 p1 O( b! c
    de>[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt > sir04.txt
    + l% e( _, d' F( `# }
    1 v( B( c. S+ N[root@localhost ~]# more sir04.txt6 ^' E$ b/ e2 j: `1 N& N2 m$ d  O+ G
    123456" y- e" P8 v! Y& a& x6 [; E" A$ |
    i am testing2 R+ b% L' V$ Y& }
    56789! h) k( ?1 |4 R% a% q
    BeiNan Tested) k, d" H' Y0 m& p
    09876
    + B9 f, ]1 C5 S8 w- i$ b5 b5 Ilinuxsir.org testingde>
    ; {4 {( y# {+ z- ]5 U" M/ a: S* g! fcat 把一个或多个已存在的文件内容,追加到一个已存在的文件中
    * w' \6 G3 W3 I) a8 D& {6 n0 i4 W; h! x+ |/ b
    de>[root@localhost ~]# cat sir00.txt1 }6 I5 f- H) P9 k; d) C7 j% J
    linuxsir.org forever+ c* t/ ?* a: g7 \: r
    2 |* u2 ]1 m6 q6 `) h8 L' l! \
    [root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir00.txt2 U  L6 _& z# \3 M3 F

    7 ^9 z( h& v: _[root@localhost ~]# cat sir00.txt
    ) h3 [; n3 P& a* flinuxsir.org forever1 e# V, q% s- g* l; y/ v: R
    123456# ]1 E  b% w$ \; k
    i am testing4 @0 M) _9 I9 }$ r# m0 V
    56789
      [4 w: U' |3 D7 }/ |BeiNan Tested
    / t7 z$ \! J! i' Z09876+ E  D) r# d9 P3 Q4 \, o
    linuxsir.org testingde>
    ' U3 j& {. ^0 n& a8 B. h  y/ X警告:我们要知道>意思是创建,>>是追加。千万不要弄混了。造成失误可不是闹着玩的;. b9 K( v3 T  ~4 b8 @  D0 Z! y
  • TA的每日心情
    慵懒
    2020-6-13 15:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-12-4 10:28 | 只看该作者
    linux下cat命令详解
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 19:41 , Processed in 0.171875 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表