EDA365电子论坛网

标题: linux cat [打印本页]

作者: ubeautqq    时间: 2020-11-18 15:16
标题: linux cat

5 N; n1 T" m8 H9 i* C* i' n1、cat 显示文件连接文件内容的工具;
- K0 q) t1 S4 u " z5 D: c4 l8 c+ c6 c/ L
1 d7 x! ?3 _. n- k' `! Y: Z
cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名。
2 [3 E' X. o+ P/ f0 U" {. r/ x% f0 f) ~1 R* }4 U
比如:6 e3 c1 q; ]+ G* [0 ^! P

$ H. P! l" c2 U9 Xde>[root@localhost ~]# cat /etc/fstabde># Y# F. Q0 T7 e3 o  H
为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数;
  l+ W1 F" b" c! H) g3 H0 U; b
- _9 s. }3 l9 P# q4 h5 n2 M$ G$ R+ F7 R* m3 U% H! _
1.0 cat 语法结构;# z" a: |" ~% l1 Y6 c

9 P$ K5 c) P% e$ ]9 k  {5 Xde>cat [选项] [文件]...de>1 R4 {8 z/ k9 j7 F! C$ s
选项' G: E  w+ U  A3 }: {, A- {6 V
-A, --show-all 等价于 -vET
% j7 {. [) R+ H$ E# M9 A! b2 z8 ~-b, --number-nonblank 对非空输出行编号  V4 b) z/ |" R: H
-e 等价于 -vE
6 f% I; {% e/ |+ m$ {1 C-E, --show-ends 在每行结束处显示 $
- J% j  k: m9 T5 H4 e-n, --number 对输出的所有行编号+ P2 w% O0 }; j* C9 F
-s, --squeeze-blank 不输出多行空行7 @9 B' V; O5 C" O, B% Z
-t 与 -vT 等价
3 u; t* c, _; n* I8 e-T, --show-tabs 将跳 字符显示为 ^I
* k/ t% J( F) @& z-u (被忽略)
! N! p! p  X2 l/ b) I0 i+ F& S5 _-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
& }1 {# v1 R' Y--help 显示此帮助信息并离开$ S! X$ ?$ G9 L' K2 _  o

; J; U8 {' s4 S! u% m1.1 cat 查看文件内容实例;
. A* ^9 ?* o# `7 e3 v2 f1 e! R* z( ~; C7 ^2 v- l
de>[root@localhost ~]# cat /etc/profile    注:查看/etc/目录下的profile文件内容;) K  G" P0 f9 P4 E
[root@localhost ~]# cat -b /etc/fstab   注:查看/etc/目录下的profile内容,并且对非空白行进行编号,行号从1开始;* P% I2 h2 C2 q& E. n
[root@localhost ~]# cat -n /etc/profile    注:对/etc目录中的profile的所有的行(包括空白行)进行编号输出显示;
/ T8 q0 c, L  F[root@localhost ~]# cat  -E /etc/profile     注:查看/etc/下的profile内容,并且在每行的结尾处附加$符号;de>' r) H# H& Y$ H2 y( k, h6 `
cat 加参数-n 和nl工具差不多,文件内容输出的同时,都会在每行前面加上行号;
7 G( L0 }9 N" k. s7 h- Q
: _% L; j8 t* E! b% ~de>[root@localhost ~]# cat -n /etc/profile
2 ~  C: w! e6 a3 a! o% K[root@localhost ~]# nl  /etc/profilede>
  m- @( q, v& q, b6 Lcat 可以同时显示多个文件的内容,比如我们可以在一个cat命令上同时显示两个文件的内容;
8 x) l- f& v' i) n5 M, W
( l- j. B, [( S9 n$ h  _/ k6 Ode>[root@localhost ~]# cat /etc/fstab /etc/profilede>( @# e9 z4 `* M, X  h
cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;
# i6 Y- u, `- r- o. B* {9 A0 E- g* z# O/ u# a, @6 \
de>[root@localhost ~]# cat /etc/fstab /etc/profile | morede>0 Y( I" G$ r* V  h* E/ ?( Q
& i0 ~# X7 u3 C& ?9 A# [( g
1.2 cat 的创建、连接文件功能实例;
/ j$ a  K9 [  X0 \0 o! _
  p; N% q1 V, h4 p: j; Z; u, ]- e
5 N( I5 ?# V  I( D4 |cat 有创建文件的功能,创建文件后,要以EOF或STOP结束;. y# z, H' i6 Z& ~& z
/ L, u; s  P: w8 }& x4 q
de>[root@localhost ~]# cat >  linuxsir.org.txt  << EOF  注:创建linuxsir.org.txt文件;
% D% _# ?8 u1 D> 我来测试 cat 创建文件,并且为文件输入内容;       注:这是为linuxsir.org.txt文件输入内容;" z4 }; ]8 p  u. q* v0 `
> 北南南北 测试;                   注:这是为linuxsir.org.txt文件输入内容;
: x5 t1 i3 f1 n" o) @: O4 |7 ^> EOF   注:退出编辑状态;
& Y% N/ G/ C7 U# P7 ?
" _- v+ F0 M4 w, E/ X[root@localhost ~]# cat linuxsir.org.txt  注:我们查看一下linuxsir.org.txt文件的内容;
- H$ B0 G2 z2 N) Q) P6 B& {
! M8 r9 z' V; f" D7 ~% z' p0 j+ Y我来测试 cat 创建文件,并且为文件输入内容;! J. _5 C, q* D
北南南北 测试;de>
/ v6 {6 G% j- G+ o& |; pcat 还有向已存在的文件追加内容的功能;
/ k$ s1 d9 C6 w) N; s" z0 Y: k. A: {5 B- h& l+ p: V
de>[root@localhost ~]# cat  linuxsir.txt 注:查看已存在的文件linuxsir.txt 内容;4 n0 X+ s% l2 t* X4 c5 E2 T
I am BeiNanNanBei From LinuxSir.Org .    注:内容行9 t; R6 g6 G8 _! Y$ j2 C+ ]
我正在为cat命令写文档
7 N# ?+ C, I4 ?7 [3 ]! Y" U
9 A9 z6 M9 s% @4 T# N# h% I+ A# f9 d9 U: o* {: w+ B
[root@localhost ~]# cat >> linuxsir.txt << EOF   注:我们向linuxsir.txt文件追加内容;
& G. N% t6 }$ k( `> 我来测试cat向文档追加内容的功能;       注:这是追回的内容$ L" K; q- h4 p- g9 |8 {
> OK?3 g! I; g: N# f. `
> OK~) G4 H, Q" i+ a: t! k  ]
> 北南 呈上
" k+ L  Q# D/ K" l4 Q! {( S- R> EOF   注:以EOF退出;, A% k* S2 Q3 C$ p% W: L6 s
$ P/ h! G9 ]) P% ]3 {( {3 z6 Z

' [0 v$ i+ I% m% x! B9 i. X[root@localhost ~]# cat linuxsir.txt  注:查看文件内容,看是否追回成功。
8 _# f# ~6 `5 ^$ x1 u$ VI am BeiNanNanBei From LinuxSir.Org .9 `3 b7 U, N9 Z; t' G  X& b9 \* {
我正在为cat命令写文档' d8 v+ T4 Y0 U0 u  t

7 ]4 h8 J) U5 R2 r% y我来测试cat向文档追加内容的功能;  ! C% d+ w" J5 P. }
OK?
/ K9 T& B" D! h( D/ qOK~8 @$ }" M; ~) v' R
北南 呈上de>( L* Y, r" Y1 f, j2 K
- ?2 T$ P% b3 l' {3 n
+ D6 N- y' p! o
8 t2 t6 L5 L' Z3 D6 a
cat 连接多个文件的内容并且输出到一个新文件中;
6 e. m- I$ b1 B假设我们有sir01.txt、sir02.tx和sir03.txt ,并且内容如下;
5 _" A& A' U& d& F0 o5 y4 x, F7 ]" I9 x  l& x( I& K4 X
de>[root@localhost ~]# cat sir01.txt  4 c: k6 D: \7 M: Z) W, K
123456
7 L5 J7 k6 i6 X. @% B  Si am testing
% q, S) w+ F  j/ N- d1 F5 G+ c& v" f; z# {1 n+ P
[root@localhost ~]# cat sir02.txt
$ r( [) C; O& k4 D56789# W& v& T; p/ A: I$ w
BeiNan Tested
+ I$ t1 M; k7 X: p
+ u$ j1 D* Y: r6 e[root@localhost ~]# cat sir03.txt
( K. J" Y% J1 T  U3 M09876- h/ k6 |3 ~! {3 T9 ~. S+ |
linuxsir.org testingde>) X' Y- D# M7 k/ r& L/ S  Q
我想通过cat 把sir01.txt、sir02.txt及sir03.txt 三个文件连接在一起(也就是说把这三个文件的内容都接在一起)并输出到一个新的文件sir04.txt 中。* Q; M9 X6 ~1 [% L

) ~) i% a) M0 ~9 e7 V注意:其原理是把三个文件的内容连接起来,然后创建sir04.txt文件,并且把几个文件的内容同时写入sir04.txt中。特别值得一提的是,如果您输入到一个已经存在的sir04.txt 文件,会把sir04.txt内容清空。
3 L+ Z% D. j& X/ c! s) I9 X0 H5 q
de>[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt > sir04.txt
8 r3 y/ q& r" Y. G7 W" a
# ^# D" P. f! m) u" d) B2 A# }[root@localhost ~]# more sir04.txt
2 b1 a8 o1 Z, w. Y5 E8 y- _123456
# ]  A* l. E: I7 G# H$ [i am testing
/ c% U$ R. i: ]56789
6 o8 ~9 L1 t5 NBeiNan Tested
+ w# f4 m+ q# M+ g098762 S3 H* N! p" Z( h0 q8 p
linuxsir.org testingde>
* d4 g, N6 Q! T9 scat 把一个或多个已存在的文件内容,追加到一个已存在的文件中# c' g, l( P2 m2 A

0 k: T7 A4 r. e. W, Dde>[root@localhost ~]# cat sir00.txt: O7 R! k4 R1 K7 A  b2 s2 [) @, U% O
linuxsir.org forever9 a6 _$ a5 r1 w9 d
! q% X3 r& v# y6 |/ J3 ]: m
[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir00.txt5 S9 R1 D/ X' s0 K% C8 a' [
! n! O, b# |+ Q7 p! u; U
[root@localhost ~]# cat sir00.txt( C: h# C3 t/ [; c8 C: w
linuxsir.org forever7 P( x7 l: l1 o1 h3 B% `
123456; B! m. \! e. H3 o4 L0 }
i am testing
: ^0 }$ F# M. [6 E' L1 |* E56789) T) z0 m# i3 K9 w3 I
BeiNan Tested
  _) l! [/ ]/ g9 S5 Y09876$ t, d# Y& T) L7 g' b+ o  F' M! D
linuxsir.org testingde>
% N1 T+ @$ {" s0 v7 B8 ]2 q警告:我们要知道>意思是创建,>>是追加。千万不要弄混了。造成失误可不是闹着玩的;
作者: ExxNEN    时间: 2020-11-18 15:43
linux cat




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2