|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
5 t5 V7 g/ k- b3 W
5 }. I# v3 p" Z8 h1 `1.命令格式:
$ V7 Z- Z* U4 [# T. g N8 L( L! S( a7 K; w5 o
cat [选项] [文件]...
7 V* [1 U Y3 P; }& N& S
; s* G# e! x0 P3 ~3 p3 r2.命令功能:+ B, ]/ T o l0 K. J j1 `
" O" I: F9 m0 s% e1 `1 G
cat主要有三大功能:
8 S. m8 w- O% Y8 X: W
+ i( p7 k0 ^: @3 p O- C! n1.一次显示整个文件:cat filename
* z: U' i. {" i+ v* [# a# q2 m3 D- x* I4 n; p
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
! \: R5 T1 t# y3 B3 y0 ?9 z3 e r0 m9 G
3.将几个文件合并为一个文件:cat file1 file2 > file
, Q) b& u4 J" C/ x) [/ J& W" h& l" D; N; M
3.命令参数:
% P8 D6 h: s& L6 w$ \; P, C! B, I, u( v, f6 t9 K9 z
-A, --show-all 等价于 -vET
# ~! C- h2 `( d( A. c0 Y
& O% j4 D7 I; t/ K9 @+ i-b, --number-nonblank 对非空输出行编号
, R) z4 q5 O) v
* Y( c& z; @5 @/ d, g2 \-e 等价于 -vE1 N* ~. T0 L: c/ e; M, g5 D
# \: }0 x. B0 B2 @5 l$ D) H% A
-E, --show-ends 在每行结束处显示 $
) B& v5 U6 U; ?2 m7 o, k$ D; E7 W' c$ V
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
/ j. c5 _+ d/ @# v4 ^0 o' z; x! a
- g- B# i* {, t+ m7 p. P2 w1 N-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 5 g9 c2 C9 P. f1 y
( S3 L7 f7 v* _) [4 T2 J1 s. o) d-t 与 -vT 等价/ J3 u, \, Z& ?* ~1 Z8 q
) v9 S& ~' K1 f' L" ^4 R, r5 s-T, --show-tabs 将跳格字符显示为 ^I
- J/ N2 F" t& m' r% _: _5 K
' J! k7 u" T' i-u (被忽略)
X' W* X& f6 M5 y+ A" C0 I4 M6 D7 c
4 D" {1 C6 k" Q# v( ?-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外2 K% w0 e+ v; f% R/ t! o/ p
, r* V: o4 a* Y
4.使用实例:# k; g* ^* l1 }+ h: H8 |) ~- R5 p8 n
" q% w* G9 W+ k0 v
实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
0 [# c( T; u5 r( [# [5 U) |7 t. V1 S6 z! Z2 Q/ `
命令:
3 z& C% E8 r f! O% e* k$ M/ F3 q W0 u2 L) h8 F" h' p/ a
cat -n log2012.log log2013.log 8 U. H* C! O. v4 m _2 r1 e) S
% G7 B- q i# ]& t5 f
输出:7 f# y+ ]0 A! u4 \" M: W4 y. m. Y
% D9 }7 `, x/ ?, V9 ~5 p; z[root@localhost test]# cat log2012.log k; C2 W% e' }# _7 o; D
6 S& U, O7 N. v8 |( S. w2012-01! x5 F; m! i4 }" R" Q) b5 S2 b
# y+ P" q( Q4 u8 { F* a
2012-02
~5 R8 X6 @2 U
- n7 }1 t4 R+ A6 W' x
6 `3 h' v6 p. E7 F& P K, C9 y( Y9 z; p3 V+ R' [
======[root@localhost test]# cat log2013.log ( @7 L' y0 X' F
3 X: ^; \/ o) C5 f; I) h2013-01
! n7 Q5 x0 n) N' c1 |! l0 A% p/ O
a6 O( s0 u( ~0 ^/ c0 K2013-022 E( L+ }8 ` [# e1 K B# [
d$ Y' }/ y/ y5 ^8 f6 F2 V2 a% J
+ U. J9 V* ]; m3 F7 q+ z
: o2 _. [. ]) w$ C }5 t- u* r8 G2013-03
' w( r( z, k1 k% ]# R- ?4 d
! m% `+ E0 ?6 C; q. J! x======[root@localhost test]# cat -n log2012.log log2013.log
* n; p$ P$ v5 z2 M4 G
: k6 @: c- H0 ^ 1 2012-01
3 j; Q" T4 U6 U- |% [8 c7 u; X/ O4 | e+ v
2 2012-02
# ^( l( a0 O( b. y, W
2 \: F2 _) g) b0 s& b; { L 3
2 K9 B; |& l! g- A' t$ r. M6 E7 b( T; {
! G( @) E! k6 g2 s 40 L F. {5 U# e( D2 x
* _/ R6 l3 C' {( G7 I% Y+ u0 q 5 ======
; o: g1 W5 T3 _+ U8 @# S2 [- @( k- t) u+ v3 T! M
6 2013-01$ q) N4 Y) ?; R U; Z7 H+ ^9 n
, [: p/ H4 t( P5 I1 K8 w S$ `2 G
7 2013-02
. S) f h* p# Y! v! K
1 j( E3 Q- K% t5 K3 d 8! u! k/ n7 H0 J
* I" P" ?/ B! c/ O6 x. \1 o S4 d 9
) S) Q7 \8 F# J! a; [$ B. }/ `) ^: v+ N7 ~
10 2013-03
0 o/ a' Z5 i, _# t3 ^$ _- z1 c
. G# j$ [; G( L) h v2 V7 } 11 ======[root@localhost test]#; i' e5 u4 h" u5 M5 w- @& B
. r3 ^' Y7 b' i/ t2 @! Q+ P2 u
, n+ a- _9 O% Q/ R说明:9 f! N' e. d) p% K6 r( {
# r9 E* C- \. ]6 p w0 z! T# \: p0 @4 A
6 x& d( U, |, q" M- W实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。 & K0 [7 n S& M+ H5 N
: s( s4 R6 n' K! T1 _8 D" X) d! B命令:/ N1 F* n2 C( w5 ]) p# D/ C
- E6 V, {% _: M9 q, G+ y. l" r0 ?) F, ]cat -b log2012.log log2013.log log.log& m5 m" z* m7 w: D# c3 [7 x8 q
% E' A$ G# |7 j' @% k2 s7 t9 p
输出:, |" k& `3 }9 J5 N
/ J ~) M! t! D[root@localhost test]# cat -b log2012.log log2013.log log.log
# ^5 Y( a9 @* M+ f# A
* p8 ]0 B) ^% q 1 2012-01! f9 v# }. A8 B
8 m8 I" B7 l4 K. @ q
2 2012-02' ~6 l5 x$ [3 I; {5 }1 ~, M
3 s6 t1 y2 A/ Q. t( r8 Z! J% f3 q1 ]: q! y$ t/ C& g
/ L$ i3 L6 |9 O7 T' T
3 ======
$ ~- F ?6 y6 k
2 y" M$ I4 C, }. V 4 2013-01
3 M8 I( o4 r/ l1 ?9 r- Z; ]/ c* y) Q: c) r& `; _2 Y
5 2013-02
7 r0 [( K1 X; o5 t: x
1 W; G3 X: m; u7 q* ?+ Y# ~) ?% y" J0 T' u2 @# q# j
) o/ x$ I0 V/ f; n
6 2013-03# t ~; m$ M* i$ y6 Q% ^
% o' C: H& p; T5 J 7 ======[root@localhost test]# X J+ {( E2 ?0 X0 I
, D) N( I1 o7 B& W" x" E! j4 D
8 k5 s$ F, M$ S9 B# r实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
0 U- r- B: h! P6 ]5 V- I( r, D7 j, w& O, X. X9 G: Z
命令:0 @! U" [6 b' {5 y
% l! p" L! y) S6 ~, U. U7 }) p输出:
4 f8 B u$ Q) ~9 H8 X8 x
& x- i5 F3 ]( g, S4 h) t: B[root@localhost test]# cat log.log
2 f: `: n5 @. M& x/ e* Y9 |: g0 ]' j& A# \6 E5 L
[root@localhost test]# cat -n log2012.log > log.log
1 R) n7 a4 M3 y1 H# \) d0 V# p+ k% g! T9 u3 n
[root@localhost test]# cat -n log.log
; a/ S* t' M0 V/ [/ n4 |0 h$ G/ q% M- r% |. _+ x. v) @1 Z; M/ i- _* O
1 2012-01
. C9 Y9 f2 x$ P! E8 `5 B
# s& Q2 `8 @* m3 O4 K' K8 B d 2 2012-02
& c% Z& E. k& y5 C, z& i: g- N
9 {3 K2 n1 b$ \2 V: Q& `" M 3
- [4 @2 @! z+ `2 x6 i, |5 E% V7 `; A0 e) ^$ W) m; Q0 T; l
42 |) s# w/ N, r! @" `% L! R$ N
1 u4 ?# D. t) e) O6 y2 M 5 ======
( Z$ O9 X; w$ D6 R: m, F
6 C" S6 [0 x& C: X& J1 y' {& [[root@localhost test]#
+ w1 X4 H, ]2 |- n" X5 k, @" U
+ u' [4 ^9 R- I4 a
* k' i) j: W |实例四:使用here doc来生成文件/ O3 ]2 o% m3 s/ ?$ V
: Z/ D2 V! r1 y( x7 p输出: @, a! `, ~% S8 P% L1 L! E+ f
' M. a, F2 x( w" y3 r2 b# w
[root@localhost test]# cat >log.txt <<EOF: I+ X2 T8 l: p
( X8 A7 N. `2 o3 n# f, D( a
> Hello
- k. S; |7 V5 z% ?
* G3 w9 X" P J t# |> World
0 v5 A7 O& j1 c& H/ f
8 a' X3 \! [9 B- V/ H* V [3 `$ m> Linux
- Y* C8 G0 m' F7 w1 x1 d- y. Z5 X% K7 ]0 B& P. b$ `' L
> PWD=$(pwd)* `5 q) ~* i7 N7 u
+ i ~3 W, {: D4 M& \6 d
> EOF2 h3 Z4 X% y @4 `
/ R; b6 |* o; b2 J" Q5 E$ W
[root@localhost test]# ls -l log.txt % s8 d8 m* j9 d0 c- @+ d3 ]6 f
6 ^! C! c8 ]0 ]. _& x5 ]
-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
2 f \! N. H( I2 _( X2 ~- k; S6 B; {% |7 @& ^
[root@localhost test]# cat log.txt 2 F( v. P9 Y5 C2 n% h' l" d" `
; p& `7 {4 a: s6 g7 A4 G9 a
Hello5 W6 O) _% j1 P
0 m" t, K5 ~' I
World
A& ?$ S4 I7 V& K/ m2 S( B- }- U" F8 C3 S$ J5 {
Linux
/ p0 {" M& T+ e" m: Q9 u- u
0 t8 v, i8 Q* qPWD=/opt/soft/test* d. V; e: `$ L; t$ r# g( T3 F
0 t: C9 K0 l' W( T: n7 f* T
[root@localhost test]#
. C7 O5 J$ X1 {: @, `( @+ \2 `& u2 B, W7 ]) N1 g- p
8 r- ]) @- q9 k. {* E7 o5 @说明:/ }1 p# W4 e2 R, G1 o) G
5 S) \% p4 ^+ F& ?. e1 P
注意粗体部分,here doc可以进行字符串替换。
0 g+ c( }7 P" A: Z* x/ j: ]( p: F7 ?' K) Z- y3 n
' L( X6 ?; K4 Y( T4 g
备注:
5 Q/ q l8 K' [3 C; a
" W) k( G' o) ^3 \tac (反向列示)
+ k5 E$ Y1 |/ n: s( p% b, d A- \8 I$ c6 a
命令:
; j* K# Y( t0 @& \8 O% ~ i4 D* W* T
tac log.txt
a4 S w ~6 Q) ~- i! e) ~. t3 q- ]% K4 a; s; v% t
输出:
* F7 ?! z& R" O3 x" ?
8 J& T. v3 s. _& U0 z b2 D* I[root@localhost test]# tac log.txt $ C L& a, S6 _; Q
4 _. o2 k" d; c2 Q+ P2 k0 G- sPWD=/opt/soft/test
( p# f. U- I r$ B( J' |& {2 T0 [2 p! D8 B
Linux
3 v# ]. s* S7 j" u/ }' b' s. r$ u$ \ M
World
) J: [5 D' @3 Q# e8 P. F' T! J- R. X! p" W! ]8 o
Hello
C. [8 b7 C3 _* P
( ?* J) B/ _+ K9 z r说明:; a# w- I4 a* M7 t/ |" V
8 F, ]. ?# q! r3 Q/ w. vtac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
4 P; T- p3 D) T! [
8 \( d9 C/ r3 y0 `6 A: m/ Z7 i
' i. Q4 ~" P) I |
|