|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
: J4 }1 z2 ]9 b7 e+ ]' M0 w5 w- u" \1 j: Y
1.命令格式:3 R* z9 d; M4 x9 |
# Q% G, t! r# ]cat [选项] [文件]...
/ l! p# s2 K+ G8 w( c. _; w1 _
0 B6 q; M" Y, s; R! f8 q2.命令功能:
* r5 N- B- q& p7 T5 ], E4 o) m% {- w" }2 Z; `" I
cat主要有三大功能:
+ \) l$ A9 e1 m) ]: m P% ~6 [* R; K5 B9 B5 I) u, L) R
1.一次显示整个文件:cat filename' H: E5 L% B/ F7 d+ Q
$ Q& z, C$ ?7 U2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.4 k! Y0 v2 z: c! M2 N
- E2 l# {/ @6 l: H, z3.将几个文件合并为一个文件:cat file1 file2 > file
: c+ T9 X$ A9 {0 m* c' I$ H7 ?0 `" Q' `/ P! s1 E$ M
3.命令参数:
- _. ~2 C: ?1 U4 ]8 |8 S9 u/ o6 C+ b, [1 v3 R- U7 _
-A, --show-all 等价于 -vET- [8 z' e' q0 |
0 W7 O9 b& Z) c1 v: B7 N! t-b, --number-nonblank 对非空输出行编号9 d/ v3 P9 D5 R% z6 C) r
- g e9 H3 i H-e 等价于 -vE/ K% I8 @) M- g2 @
" y, f- e2 X, j O) h7 B* V-E, --show-ends 在每行结束处显示 $% T. X7 ?' \8 B
: T+ M! `' U& \) V& x-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
+ t" ]! |# V( x. W1 u0 A# h0 N
: p; B7 n% p( c! n# i6 p$ i-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 $ B$ Z" T( U6 A V6 ~$ Y" _2 r
) `1 [' C, A$ B. `4 N
-t 与 -vT 等价
+ a. U: r0 V) ~0 X8 `5 m* C( q
$ R% ~; l* H3 _% ^0 i8 t-T, --show-tabs 将跳格字符显示为 ^I- O/ n2 A4 K6 f; _5 C
, M# u5 y) Y1 i3 n& o( t0 V
-u (被忽略)% K4 X7 a8 e0 T* N
3 N+ p' h4 [! ~8 Z" U0 m-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外3 M5 X6 g( ~/ D1 `8 `
: ]% T" q2 l5 d2 B9 [4.使用实例:; }2 s( f* T$ I! f
- B% R t1 u7 _6 S: E! m- }
实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
/ n; r' G* R7 Z/ g" V9 {. l' V2 L2 K( M$ p( g9 j6 ]( q" a q
命令:) ]" i+ D9 b! q2 W7 I0 Q/ T! H- k
7 a7 `& W3 T2 i6 ?% D& x, S1 ycat -n log2012.log log2013.log ( n8 D7 C9 o- w8 C6 I
8 ]1 z2 I2 ^" V# c
输出:
$ M9 k4 U4 u A& E) C! J q
& n2 F" F4 ~. `9 I8 o/ [1 x& ][root@localhost test]# cat log2012.log * | |$ d2 t4 N
T- E! T" ?. B% |0 D' E0 w2012-01% I7 ^) p9 L: G
# Q% Q% O6 V6 ~' z$ l2012-02
- ~* G, Y2 W$ S
; z9 ^& u+ X. B3 a
" [9 B! e: c+ ?. c* m9 h2 c
. Q& W2 G; K5 G6 `+ y======[root@localhost test]# cat log2013.log
& P- w. S0 z( {: c: {, G0 i! Q; e: [) q. h V C' }- d
2013-01- {( _0 I. O* i c# ?
: h( F% F' ~- Q. G$ v- z1 Z7 t2013-024 V# l1 g: ?' N2 V2 }6 D& u# t
, p4 x9 S4 h0 A% _) ^6 S' f5 j- h6 D! p0 u
9 T0 S$ H4 @. a$ l2013-03& [) g4 o" v/ j5 e) i
2 q- P6 U* X) D3 V0 P
======[root@localhost test]# cat -n log2012.log log2013.log + a+ n5 j+ I% ]/ z% ~; S' \. U7 I
6 K- G. T% `! r) j, {9 f! {8 q5 v 1 2012-01
9 L) {6 F3 Q+ F2 ~3 S* j* p; D/ n6 Y# [4 n7 P+ E7 C+ L+ s; G
2 2012-02
; ^+ [2 N3 z! T# ] r& ` S, g$ q( r$ v3 ?! f" ]& x9 P
3
* T7 U& B$ u+ I9 g
" V9 A* F. g- i( I 4
# O. ?% h3 M1 t' {6 q; W
- j, R# f" \& N( ~& B$ W 5 ======% l c! C; ^( E3 q/ d
9 j" r" n- i) ?6 _/ W' e- o
6 2013-01
1 Z2 ]) q4 B# |* G" U9 g8 Y) s6 a7 v/ b' t
7 2013-02# o' A/ f, y3 l& Q5 E
0 i5 I& z" E3 f2 i
8, Y6 z& j- b" E: n# p2 r
5 O3 M. s D' h, b5 J+ T
9
$ u4 l& e0 u4 C$ _7 |
% ~4 a( E4 M& X3 G& s: s 10 2013-03; Z4 |# n+ D9 b. ?( v4 x
+ N" b0 U. S2 w
11 ======[root@localhost test]#' X. B% M4 l H- I8 ]9 Q b! o
: A1 L! }0 [9 c
. \6 S$ |3 ~( c- t8 i6 U说明:% q" i! D5 z8 \" @3 ^& S+ A) V2 K
6 Q7 S+ Z5 b) n% f' I. S4 a: c+ u
, x- t1 y% H3 I0 T实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。
* i/ f& \9 M, f0 f: h7 r' u0 s( Y3 @! [( M
命令:
% {. g5 `- A) Z) S% |9 H0 @6 W" y' e6 F+ T7 o, K4 A$ g
cat -b log2012.log log2013.log log.log5 s l0 }1 t" b' ]1 N
- B4 c5 W' N$ X( D" R% k+ i% B. `; y! T9 `输出:
8 m9 w- `& _ `7 E/ b" k+ L2 c; A- ?5 ^
[root@localhost test]# cat -b log2012.log log2013.log log.log5 {" x3 ^* ?, g; M4 A3 o5 | V. Z" `7 e
& Q- [- {3 m/ q 1 2012-01
, {7 }0 T. q# N
- F7 h- j( @% X, W4 w) s 2 2012-020 S1 @: k! Q; Z
3 ?$ H1 L* i- Q" h1 X \
1 X2 P6 w3 r2 ~- z; y( ^6 u" I
" `! {4 Q; n: z* t8 q3 I
3 ======
2 s M# L8 z$ K4 y' t
4 Z, b- Y" |; i- | 4 2013-01
5 ~7 E' o1 s2 P/ \( P9 R# l4 ~4 d, V4 E
5 2013-02
. t/ ^( K# Z6 H" Z5 v; k0 J! Q Y. G3 i/ Z- m8 X
* @- {! ?2 `( B) ?, `, b
, p9 ?, a" P1 @2 b 6 2013-03
" k7 Y" d) N1 P( U, \& X, O9 O' ?. x6 S7 E
7 ======[root@localhost test]#
% X0 W2 d1 r* w: P$ k" v3 |. L
/ m+ e) Y- e6 n* v' g, L
0 D+ x2 u" H. B) m实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
1 i1 `8 [* u3 k& c& R5 W' g3 ~9 \# T& \, q: E
命令:( e, t0 ?8 v8 P* a/ [ J
* _; g) o" d' k
输出:
# h5 z0 p$ `+ H# U- z& E+ J v2 i3 I {, |
[root@localhost test]# cat log.log
4 A% e l& Z- I% b3 b
! k' ]+ U& g& i[root@localhost test]# cat -n log2012.log > log.log
+ A' v4 ^6 W0 W; a8 H$ y* x6 ~* `' X) C s8 w- C+ y x- O2 L
[root@localhost test]# cat -n log.log
9 V: q/ M+ J- h9 v/ N2 ]) N& l( G
4 ?+ j& l1 K9 T' M, K 1 2012-01
; H- f& R7 z" A' ~
# j6 f. \2 |3 ~- J* A- g 2 2012-02/ k/ e- H& S3 q2 J. ]8 ]0 [: G
0 k( }9 D0 ~1 ?; \ 3# w. L' |* c, }8 h9 F
9 [" q/ F6 S2 [ M* P
4, A$ E/ ^) x& _" F- Q
$ V X4 m0 O' k
5 ======, \* \6 Q8 n( D b- P: J& K
3 l8 g" u9 @1 H; z; L# j5 q[root@localhost test]#0 K; c* d! G! x3 Q. M& r+ L
& o$ o2 I& M5 a! N8 @: ?% a
6 h4 G* w- _/ n w# B( w2 W' a
实例四:使用here doc来生成文件
$ l2 h7 D# d) r. f: Z4 T' \0 Y" _0 ] d8 w2 f$ j) x' `
输出:; v; ?. \& k9 u H2 y, H
1 I6 z( U, Y6 U" B, ^9 D[root@localhost test]# cat >log.txt <<EOF" |% N4 U, d x2 c" g% G9 J3 e
7 M# t4 G( n) Y; B( Y7 d# J+ {> Hello# j* b6 N* |2 Y8 g) [3 o
6 X1 t" z2 l/ H3 l9 t2 F* b% O> World
$ _' K, B ^$ E6 E
& X$ M! p* e! H2 d> Linux
' A; P. m Z7 C4 U0 G
, ~* n3 ?( v* |& c9 m0 G- Z" \# ^> PWD=$(pwd), p6 B1 m5 ?4 z* p0 L$ \
6 X7 s9 C9 X, Q2 g* d4 S! M- ~! r
> EOF# e( \! n Z4 S9 Q6 R# N: t8 A% `/ X3 O
) S9 G) \( w; c+ w; O
[root@localhost test]# ls -l log.txt
+ k T- ~5 k$ c" Y
8 D, d3 f/ k% ?$ C( h+ t1 t-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
" { n' |: W: p, s: G) _" o% w8 d/ U# g$ `% e j1 C& ~0 m! N$ s) N
[root@localhost test]# cat log.txt 6 _5 n$ V5 c# _. I' c) @2 ~1 M
' G7 {; }: n/ \Hello
6 ^+ Y3 J' D: K3 v9 e# l. y5 s9 I
World
4 k$ [$ p3 E3 `/ q
. g: ?: }2 u( q3 {3 q" X% ?# C4 ALinux
& H% u8 Q& i }& ~
) ]/ o! s+ V- U4 _& J! @ U1 zPWD=/opt/soft/test6 g' y& y5 Y9 H( G3 g% W/ m
8 V: i( ]: F; a2 h
[root@localhost test]#0 u, k m7 v0 y4 d2 c9 p2 \
" Q4 t& [( ^" F" A
, H! c; k6 L' ?6 T0 N9 Y' h: r
说明:
' ?% `. T T( b) v$ u( Y3 j) J2 H! G% [3 D% m" \( j4 S
注意粗体部分,here doc可以进行字符串替换。
7 w8 o: z" m: i C. a0 {/ Y" K* h( l8 P r. W
" E2 Z( W: }. M0 J备注:) f) @' e: @+ F
5 I+ X/ Z; K2 i0 Etac (反向列示)) N3 f& m; r/ b) c
( z( T% Z7 b1 G% d% o2 G; p) _$ `- C
命令:. M/ T8 r" T! n4 ]8 H
9 E8 h" I# F% |* Y9 btac log.txt0 z& m, p" }- J( l+ J& B7 _2 P8 s0 u
9 k3 _# ~, h8 @; [5 r. Z- n+ X9 d输出:- w# Q3 G/ K M& P0 r8 ~% C
7 F: T8 ?( C$ ^- T; J# l Y% E, {[root@localhost test]# tac log.txt
& l6 F2 O0 \2 I0 j. V3 U1 j; E4 L2 r) {2 }2 J
PWD=/opt/soft/test
/ ]0 X9 D* v1 T5 x$ M; ]
* R6 \* [9 T8 y2 ?# QLinux
0 U" K* ]! Z( a0 x( H K- b- A0 W
World1 q! i6 {1 a, Q: g" h
; \- D' u4 l8 N/ D& i) b2 K/ d1 W
Hello: {& h( l9 D1 w( j( k
' R' F( J. o# S6 ?说明:( P K6 q* P( j7 D
' L9 r* l* l4 Q
tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
- Z4 ?& o' ~; W9 O$ H$ F' f7 W
" |& Z$ I# L: x: \" {
5 ?8 @. X6 }, o2 Q) n |
|