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

linux下cat命令详解

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x

    $ w+ A! ^, V8 `4 l2 e2 P简略版:
    9 [( R9 y* U) X7 E9 O1 d. ^! u( r0 y1 i5 r3 q
    cat主要有三大功能:
    5 m$ c3 U4 ?" H% Q- w' c1.一次显示整个文件。$ cat filename' ]: a/ h' Y% Z/ c
    2.从键盘创建一个文件。$ cat > filename  
    3 B" s7 r% X/ L$ i6 f7 t+ z   只能创建新文件,不能编辑已有文件.9 A9 V' }+ _$ k. P& o) m  B
    3.将几个文件合并为一个文件: $cat file1 file2 > file: t& |- ?" L9 J! ^
    参数:9 X8 h9 U) c( E' p+ C# O/ o
    -n 或 --number 由 1 开始对所有输出的行数编号
    3 T; G6 o  ?- R) }4 t5 F-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
    7 `3 M4 o8 A( y8 d. r-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行2 b; G# q* I3 ?( c5 O
    -v 或 --show-nonprinting
    / \/ U" @; x+ p; q. d; s% @例:
    * ~: {: `" `  M: Q# k, P把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里/ |1 P& E* K. A
    cat -n textfile1 > textfile2
    ; v8 b2 ?3 y* h  g; e0 r! n8 Y) Q; t2 ]( k! [6 t" [
    把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。9 h. X# J. z, G+ K8 t: @, q
    cat -b textfile1 textfile2 >> textfile3
    6 E+ O9 y3 s1 N& A- ?: }
    - p% z' V$ a6 s2 C4 Q" T. w把test.txt文件扔进垃圾箱,赋空值test.txt6 L& O1 u- m: `( o7 m, m. r/ M
    cat /dev/null > /etc/test.txt  
    & n; I& {7 T8 `4 L/ o
    8 |+ o; }  q3 g
    # F3 c8 C* G8 A1 ~cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名。4 J7 Z; B. w6 J% n! o* r

    7 n; a2 X' b$ [比如:1 e0 [2 _) V  k2 d  I

    + H6 b6 F" G6 y% `4 G+ ]de>[root@localhost ~]# cat /etc/fstabde>5 m* ^5 B% ]  A/ o$ ^1 R; U( ^, g
    为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数;7 h+ h0 ]+ j( ?
    & {+ Z3 P' Z) ~+ n' b: \
    0 `7 ^. `$ \0 a
    1.0 cat 语法结构;
      z- T4 S0 f3 }. t1 H' R! r( a/ N8 y" k  U6 U- W+ Q/ f4 L
    de>cat [选项] [文件]...de>
    2 k. j9 ?  j2 j% i$ I: @1 H选项
    - r& R- g7 ^( e; }5 Z! U& G9 m4 q9 I-A, --show-all 等价于 -vET
    1 X" `- C9 ]/ g; J8 I2 q7 k1 t% ?7 z-b, --number-nonblank 对非空输出行编号
      J/ p5 A3 Q) A2 ~-e 等价于 -vE% x- ~/ r% t' i- \3 e
    -E, --show-ends 在每行结束处显示 $5 L! E; i! ^# y7 {) G
    -n, --number 对输出的所有行编号
    " x- D1 L: E3 }-s, --squeeze-blank 不输出多行空行
    0 C. ]/ g7 q3 ]% }; o! G4 O  L3 }-t 与 -vT 等价5 C% ~. S( v) h" f
    -T, --show-tabs 将跳 字符显示为 ^I
    . |) o  E9 K1 d0 H-u (被忽略)
    $ \& M4 ]- ?' M, G+ t( y% V-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
    ( _' u, G5 ]& b* j) s--help 显示此帮助信息并离开1 r4 {# Z" \% ]  B% Z# _; M

    1 g  X- z9 h4 f/ d1.1 cat 查看文件内容实例;
    # b- m! m$ \2 k: s. x7 X9 c
    5 G1 `, R( |. Z* }  g) ]de>[root@localhost ~]# cat /etc/profile    注:查看/etc/目录下的profile文件内容;8 z1 G7 ^: ^8 l( [
    [root@localhost ~]# cat -b /etc/fstab   注:查看/etc/目录下的profile内容,并且对非空白行进行编号,行号从1开始;
    , U9 W) X% B' F, ^[root@localhost ~]# cat -n /etc/profile    注:对/etc目录中的profile的所有的行(包括空白行)进行编号输出显示;8 Q9 ^/ H* T9 J0 D: p. ?
    [root@localhost ~]# cat  -E /etc/profile     注:查看/etc/下的profile内容,并且在每行的结尾处附加$符号;de># u( V8 T4 L* Z+ P. T$ y
    cat 加参数-n 和nl工具差不多,文件内容输出的同时,都会在每行前面加上行号;' E; E, l5 i7 s* F
    0 }4 F& H9 k; `# U% s( h; R
    de>[root@localhost ~]# cat -n /etc/profile
    0 u, S8 z7 J& n+ T7 p2 N9 G[root@localhost ~]# nl  /etc/profilede>" |1 J5 [- p2 \- C
    cat 可以同时显示多个文件的内容,比如我们可以在一个cat命令上同时显示两个文件的内容;5 b8 k% S6 }) n  Z) ]& [
    ( f! N- `/ f( q* h/ F, L0 B' u
    de>[root@localhost ~]# cat /etc/fstab /etc/profilede>2 I6 e- u7 D+ i' _& s4 e
    cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;# E, }1 `' x' D: t# n
    0 l5 L5 X9 C& U- J, t
    de>[root@localhost ~]# cat /etc/fstab /etc/profile | morede>! J, R9 D$ ~" b  a9 A' e7 p% m

    % i" n2 q: V6 c. D1.2 cat 的创建、连接文件功能实例;: l1 W5 K4 o. B, p# U5 f0 X3 A

    ! b. Z: O: U7 j, f" a* M
    1 |- \4 r8 x, k, f# U' f+ i% Tcat 有创建文件的功能,创建文件后,要以EOF或STOP结束;/ Z7 j# ]& B. n) a! ]" k! y
    " _6 c& q% D0 o
    de>[root@localhost ~]# cat >  linuxsir.org.txt  << EOF  注:创建linuxsir.org.txt文件;2 z# H' N8 e" C; Y
    > 我来测试 cat 创建文件,并且为文件输入内容;       注:这是为linuxsir.org.txt文件输入内容;* S$ z* d% ?: j8 N
    > 北南南北 测试;                   注:这是为linuxsir.org.txt文件输入内容;
    ; d5 f7 M! h  A9 @* @# L> EOF   注:退出编辑状态;0 q# X4 p+ t# t- I' H
    " ^! z1 H* }- L4 f/ M# b# U
    [root@localhost ~]# cat linuxsir.org.txt  注:我们查看一下linuxsir.org.txt文件的内容;7 T* \9 a6 V0 c/ y, y( K+ f1 B

    , h9 s4 G: ]3 K% n' |6 G# K% g我来测试 cat 创建文件,并且为文件输入内容;
    : t7 }1 C5 w0 W; Z( [& l* R# _北南南北 测试;de>0 u% q8 e- u) M- a7 C
    cat 还有向已存在的文件追加内容的功能;" x# W, }0 ?, v* k" H. K

    ! B& Z% e0 g. z! W2 d, a9 Lde>[root@localhost ~]# cat  linuxsir.txt 注:查看已存在的文件linuxsir.txt 内容;
    " M6 K4 L# u2 j' V% hI am BeiNanNanBei From LinuxSir.Org .    注:内容行
    * c# A$ V3 D' |9 S9 q5 S( _我正在为cat命令写文档
    ! \- |& H2 |# H- i( ^* Y* R/ T$ D2 c5 {

    7 k! h( i9 ~1 u& S2 @[root@localhost ~]# cat >> linuxsir.txt << EOF   注:我们向linuxsir.txt文件追加内容;
    0 C6 x: W' s7 A" b. Z( E> 我来测试cat向文档追加内容的功能;       注:这是追回的内容
    ( H5 [- j, ^" t> OK?
    - r- n% P( L/ R( O9 W> OK~& y4 e! J' T& b
    > 北南 呈上% O% W7 C) H/ l6 }
    > EOF   注:以EOF退出;3 d; d; S. G( B- K. S
    1 Z6 s2 F5 ?% t$ w' m

    " t8 g3 y# ~( h" o! F1 H[root@localhost ~]# cat linuxsir.txt  注:查看文件内容,看是否追回成功。. w; _& ~$ f& N2 a% l3 d, @+ {5 r
    I am BeiNanNanBei From LinuxSir.Org ./ ^: g) d! r$ j  P' S
    我正在为cat命令写文档7 l8 B* T# F: Z. a9 M
    9 @2 {5 d( Z9 r1 b; E
    我来测试cat向文档追加内容的功能;  
    1 D+ ~( s# g% t8 c" SOK?
    2 G" F# T/ k. }2 g* T& B2 gOK~
    - j) J9 F, Y8 v; I( ]8 I) F北南 呈上de>
    4 Y8 \4 p8 y5 t9 j; K) m
    & P+ L0 w' Y' W
    8 Y* |  s3 l" w5 {6 T+ \
    $ _" t, T1 ~3 k, f1 P' mcat 连接多个文件的内容并且输出到一个新文件中;
    / [8 E' v! N8 d) u' K5 c
    ) ~) p3 b& h3 [' q5 G# [假设我们有sir01.txt、sir02.tx和sir03.txt ,并且内容如下;. d7 z4 Y! V; l6 Z

      x+ b, q% p! {: B8 W% {+ O2 @! pde>[root@localhost ~]# cat sir01.txt  $ V( `" b$ T) }" r% V4 U; Q+ Q
    123456  T+ Z% P+ e( E
    i am testing8 b! X" x1 k2 X0 c! l+ P, K

    0 b7 c4 ?( {  o& ?[root@localhost ~]# cat sir02.txt
    ' D6 t% m( p9 m. b56789& u) c# O9 c! p
    BeiNan Tested& e6 X6 l. ^" f2 e& Q8 {

    / m( [& e2 L4 Y6 k0 K/ L[root@localhost ~]# cat sir03.txt
    " {0 p# I/ z) i. ^% ^: O9 O6 T09876; S  Y: W& Z+ K7 I; l
    linuxsir.org testingde>8 R. E: c8 j) o; G
    我想通过cat 把sir01.txt、sir02.txt及sir03.txt 三个文件连接在一起(也就是说把这三个文件的内容都接在一起)并输出到一个新的文件sir04.txt 中。
    # _. k  V) E( J1 f$ y/ q  S) R6 ^9 v, y# b4 v, U( f" M
    注意:其原理是把三个文件的内容连接起来,然后创建sir04.txt文件,并且把几个文件的内容同时写入sir04.txt中。特别值得一提的是,如果您输入到一个已经存在的sir04.txt 文件,会把sir04.txt内容清空。4 B% Z8 y/ U# K: O% k

    $ g$ b; x' ^  s) @" k: O& y9 S  M. nde>[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt > sir04.txt7 K' I/ v$ A) F" N2 D9 W2 j0 J" b

    $ A/ H* U' f$ U! V$ p[root@localhost ~]# more sir04.txt
    ) j# T/ b" X  c1 u+ A( B7 ^123456& b$ @) ?1 E3 o; Z0 g/ B" `; X! z
    i am testing2 N, B0 o7 f( Z2 s- g! X$ E
    567890 _/ K4 [$ n9 N9 X" |* M
    BeiNan Tested. u) O# Y# n, N, e
    09876) f# g- z) E! o1 |9 |% [
    linuxsir.org testingde>' h, `+ @* }6 {( R0 t! ?
    cat 把一个或多个已存在的文件内容,追加到一个已存在的文件中
    1 J2 S6 @7 K0 Y" w9 _7 x
    . J- Y+ ?1 `3 Ade>[root@localhost ~]# cat sir00.txt
    ' M( w2 [8 X) n* a- E, Z; A- [- N$ ulinuxsir.org forever
    : {; g, m3 \3 F4 b3 _7 t) p  J$ Z/ e3 ~4 [$ K( k  o" t3 y! r  s
    [root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir00.txt+ C. o* _) H' v

    : d& c3 C" C) X0 C[root@localhost ~]# cat sir00.txt
    4 y6 S+ N2 ?( q6 Flinuxsir.org forever! C# G; Y0 Y- F
    123456( Z5 L& i4 C! u- }5 L
    i am testing+ H8 s  R) H1 z, J
    56789
    ) H$ h  E$ E; m3 q. p9 p% dBeiNan Tested0 T0 d/ S0 o7 |8 t
    09876- r% P. o6 z- ^' o; D& _
    linuxsir.org testingde>
    : z$ M* g* v7 p& K警告:我们要知道>意思是创建,>>是追加。千万不要弄混了。造成失误可不是闹着玩的;
    & E/ r7 j$ a$ b5 D1 ~
  • 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 23:03 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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