|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 " x" Y3 g7 A Z' r* m2 h+ b5 N* o0 z
3 |! t3 V, Z: r' z& T, m& a, Z1.命令格式:
* j: b5 ^) u* b- ?# ~8 n
- U6 ~0 }* X! a% ?: Pcat [选项] [文件]...
z) E% T2 M T2 E7 `! w8 a5 N0 N) ~9 Y, N4 r
2.命令功能:
& V+ Q. M5 L. y% c' n( Y
/ R* g' l) h* W. J1 |# Wcat主要有三大功能:" d- l8 h; Y& {
# |, W f, |( A1 E% k1.一次显示整个文件:cat filename7 j+ M9 X7 p! ~9 p: c1 A
?$ q. Z$ D0 G( y. U& P x
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.' L! I0 S; \8 Q5 p, x% {! C: ^+ m
/ }5 G+ O$ T$ a' F6 s3.将几个文件合并为一个文件:cat file1 file2 > file1 m1 e3 h* ?; v
& P/ |0 z1 v4 {# c# k3.命令参数:/ E' ?# _4 l7 ^( y" h, B& x3 g2 `( p
$ r; k9 u' V# g% v/ N-A, --show-all 等价于 -vET# U4 V5 l& X @5 N
- k q8 a% v3 O8 w9 P& K* E
-b, --number-nonblank 对非空输出行编号
! y B9 R. }5 W3 @0 n4 t
) V9 `' ~5 H5 t! i% [-e 等价于 -vE$ i0 [3 L4 X6 M5 W6 q1 s- V
) ~: H) b5 K0 t( e6 m9 ]( ^
-E, --show-ends 在每行结束处显示 $2 Y# X* V! J1 I6 y) s
( B& n( m2 w5 ^6 d-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
0 P6 D+ C8 [0 P
+ n! l; b2 I/ ~, M-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
1 n1 j& t' _2 T a, A0 z8 F7 ?+ C) }9 \. m$ i( a+ ]
-t 与 -vT 等价
, k% o( h; ~ ~" |. v- D1 T8 V+ O
4 Y! ^2 B; t/ U4 k0 C$ O' J: a-T, --show-tabs 将跳格字符显示为 ^I' J) v2 P- u9 ]
4 h" d6 C: z8 N: s% K- M- F5 N-u (被忽略); a" h; v& g# X8 B3 s" |
* Z8 v9 N9 W$ P) S; J: Z, t3 L1 h% x
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
! d* C2 q1 \: a) @9 a, W
' ?% p' Z& Q: o4.使用实例: p+ c) f8 S! i+ w" [% |9 l
' r, Q* {% ~* @; ]) R+ y6 N- q2 j
实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里6 a6 y1 Z8 K; w( H3 u6 N- H
! z" d e$ ?. L3 j% T' d" v
命令:" Q' D3 V! T4 J
& n/ {' V1 S8 f; d
cat -n log2012.log log2013.log
* n' J% E/ c$ v3 E; h6 W( g( ]! P% Q: Y1 i% Q9 M
输出:
' A1 S; O, \) I8 d4 t
' o8 q7 @: c9 [" J8 h: J[root@localhost test]# cat log2012.log
! b X3 b" B/ |, {+ w! I9 }7 \- U. a# q% t
2012-01
' ~$ [% P3 F7 T; ]7 z/ \. v! F6 A" u9 N- x0 B
2012-02 Z5 s, t+ W6 ^! K' [/ K: Y
, v1 f8 \1 W- l* z4 T
$ g6 ]$ V1 i. a% i6 _2 J0 q
* K* [8 {) q* L+ E$ n4 u======[root@localhost test]# cat log2013.log 1 N2 x f3 I% K X) A
5 o j8 M3 T1 \; h( l2013-01+ w' P8 N+ e! ~% ~- @
2 ^/ z6 S/ J" ^; i6 Q' h
2013-025 x* I! ]) ^! D: W- J0 E
, g: z! C" d9 K0 o% u+ }8 |! I; e0 ~
2 {! t) f( o8 a: y1 {+ y
& I) z8 v" f; r3 x1 E
2013-03' e4 s" f- i8 i8 A: q* R! N3 E
, d0 o# l _2 E2 s2 ^
======[root@localhost test]# cat -n log2012.log log2013.log ' M1 {* `4 d( L. i
1 W, T$ H- A0 F, {1 y 1 2012-01
$ w' b; a' k7 |1 r# d& B
/ |" K6 N. h! p3 X7 i! w 2 2012-02' a3 Y! A9 J4 H" g8 `
) t0 N7 z0 f1 D% Q: c# C" l( R: \
32 V- t9 H1 { K* W( _3 s% ]
( T0 K8 {4 `$ y' W- U8 e9 I2 J7 y
45 ?4 q& E" R4 t) l' {3 S: Q$ P1 x
4 s! C4 m% _: O 5 ======
! m8 D* S( P+ A4 M3 y
" K) {1 x B+ ?" d( Y0 Z( } 6 2013-01
0 o3 J' m( C) N2 b1 ^9 f, d( D0 m
% \6 g3 R0 f/ r# N) F 7 2013-02
) o' i1 r9 r% `) f: F3 W; L8 A' w9 Q9 [
8
L! b# p0 ^+ C" ^, J7 w# W
; k2 t; H. b3 A* G! \# O) U 9 P/ L0 e/ C% _1 t' }6 F! R+ t
$ f6 N: U( m2 m8 k# P/ r2 ] 10 2013-03
! k+ r9 [' b9 M# Q
U. m6 v+ G* d8 f& H 11 ======[root@localhost test]#6 `9 L' A) n# e- g# c0 Z9 k- i
6 A8 e5 B* l& f, N
4 v8 O- |! r9 q# Q& m- h
说明:
- z; m7 y) L+ H( [7 j, j
: _: K' e$ M) x5 g5 u; [
+ q( G) w% a) A L, m! z实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。 : ~( Q4 [' a" T4 Q
# W1 _4 x8 v6 Y; |& a
命令:
5 J, c/ [ _3 V" y/ u( N9 u9 m4 y( k7 A/ u9 r& E$ W
cat -b log2012.log log2013.log log.log
z) X r5 M/ V8 k) M/ c D7 D# N- |
输出:( v' e1 f# s6 \. k
9 a+ k4 U7 A- {# @$ D5 X! j[root@localhost test]# cat -b log2012.log log2013.log log.log' L* O0 W' P* u X" P
. x# {6 ?* ]# V. O7 i: u% F
1 2012-01
) P5 {# Y6 B) C: ^8 v( C# e
6 n4 K( W5 v a* P E2 p# G; ^8 r, i 2 2012-02- Y: z, u0 J1 K
/ t4 y, `% S% y0 M6 t' W3 {- V8 t+ X2 K/ P$ p% B. C& m$ d
4 Q3 j( P3 N% @; Q- m0 z
3 ======
3 |* r2 M9 Z$ A; L* Z* [: m+ ^+ q
4 2013-019 n, E N4 C5 m; x4 v* e
0 b& K# @3 |+ T2 s+ z* N2 b# K% G: j- Q 5 2013-02
8 d! X# S3 G* q% l/ g7 `- z% e& W0 f7 `# }% X- g
3 y7 r9 [' [. H1 \
6 y G/ p/ l4 V, U9 t7 P
6 2013-03
9 @3 J3 r% y) o* m' A/ i
; k0 p) ]) Y/ o: o& ~9 Z( \& [1 I$ T 7 ======[root@localhost test]#/ m# f- o: O$ w6 M' c
- P4 L& N( [1 D
) T$ [7 d2 P1 A% d$ Z
实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
' C, R- i) [% H2 Q# I l/ `( c3 t9 l7 T# o, _
命令:8 ]8 a% n. K' U# k9 F0 b: f
( S; M: E9 ~2 G! y" z- X2 Y输出:
. }3 g* f" W: P2 [9 n/ q7 y) ^# P7 l7 \: v8 ]
[root@localhost test]# cat log.log
- S4 V0 V1 l& a8 U% l1 f' k" D+ b: u" ?! U0 ^7 ~+ h
[root@localhost test]# cat -n log2012.log > log.log* K, ?( J- B' |' p
0 w% \! w) B0 b8 i
[root@localhost test]# cat -n log.log
1 e5 }' j% R* A; x9 Q% G
|( J; e8 G" m+ @! ~6 W 1 2012-01
4 r0 h% W: n) b8 ^
2 Y7 ~' ^5 \* b% N 2 2012-027 z6 J- y. U0 S. o+ q \
4 K; c8 C+ A; j5 H# `8 T. [& Y! n 32 Y1 |2 |. K7 t+ t3 X
2 K% k; ]$ ?9 E6 ~ 4
4 X w' Z% \' I
/ N3 |4 I: U* p6 q5 x 5 ======, m E( y. d* I# _+ y3 {( ?
) J3 v& l& S$ o. a/ j[root@localhost test]#5 _6 z4 m$ k8 M$ ~! I
+ H8 K' f+ {+ F. A3 h) Q
9 }. e6 h5 u1 v( `; b. v9 r实例四:使用here doc来生成文件
) v: q' t7 S9 X, v8 J; \# s
* t* y$ N2 h8 K3 t/ c/ Y4 s输出:
4 G2 H' K" H+ f; a7 \1 r9 w7 S @6 S4 M9 p1 Z# q+ ~" i
[root@localhost test]# cat >log.txt <<EOF
% m) P& \) i3 W$ Z: t
+ |/ g) O3 Z" k> Hello) u, \3 x4 y# K( `
7 U: W/ t: e2 W
> World
2 v9 n4 F d9 r( ^/ ^7 K; D6 m! p5 n$ H
> Linux8 i8 J# Y* h& P+ k4 x9 x
5 h# u; V) d5 M> PWD=$(pwd); q, r# {& r) n+ Y8 {
2 w. u: X6 T! J$ E' U) u> EOF2 h4 v4 z' t1 I8 p
: O8 a# C( R$ R- W3 J9 p[root@localhost test]# ls -l log.txt
* W, [0 Q0 s: f3 i! H6 }
# M0 N) t6 {) g/ j/ j-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
. w9 Q; C/ S, b8 b: r$ m6 B9 L( |# _$ q6 _& B4 V
[root@localhost test]# cat log.txt . `3 s3 ]1 a( Z5 ~8 R
# x/ M P! \, L Q
Hello
# V% L, E; Y7 r2 Z. ^$ L0 \, S+ \4 A5 c- N/ d# E
World& }: h0 [# `# |1 J2 a( L
; g. X9 L" k( H, _1 m- ^4 X0 [Linux
/ ]+ R V3 M* A5 l! l7 y) e2 G9 M% g7 W- ]3 J2 }% X" g
PWD=/opt/soft/test
4 u- }. _/ N# F8 }) r7 d& Y# g- y3 m/ F8 P$ \
[root@localhost test]#3 b" R5 x+ ?# B& m, g/ E" ]+ V
1 }; I" C2 u3 z
3 P5 W6 @' {# }; b9 r* ?8 n说明:' F6 H7 d3 ^. @. c7 W2 u, E
0 ~+ w1 s5 G: x: {8 m3 N
注意粗体部分,here doc可以进行字符串替换。
4 t- S& F4 j$ k+ Z+ v
0 O- P7 l9 S+ y% Z( z7 x! n/ q* e) E
备注:
3 t% [5 A6 X1 A- a8 D7 Z6 A: y" A! M3 t5 J4 l
tac (反向列示)( v. o$ L+ F" v
5 m3 c- p+ e# D, Q" t/ x9 b$ @5 ]命令:
' b" \ E# u: A# `
1 f8 \+ l6 z! S% X* w' [) Atac log.txt3 F* R6 @; W% S- V0 Q: z
9 P R/ Z- s9 ^3 {输出:5 c2 y& C' U6 ~# f+ i
7 }" H, T2 ^& G, g[root@localhost test]# tac log.txt
+ j# q# D! x% O* B+ d U3 f# r3 `3 b3 u5 a$ n! b
PWD=/opt/soft/test8 A( f$ k' u3 s$ f- V( N$ {
6 {/ y# X$ D- W2 C. |& \; [
Linux. Y; w1 }, c& d: A* @
, K& V" ]- b4 f d
World5 f$ @) ^; {4 V6 {/ u4 c+ f6 r
* G; L( A3 l6 ~. gHello* q$ k3 I' Z: z3 e$ R
/ C% r2 _+ |$ h6 i+ k
说明:; q' l" w1 ]! V* L
7 T0 ~! ^0 M8 ~# p! _ ]. Htac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
/ K3 c( ]: I6 X& Q; x4 T& z4 Q+ j3 j2 ?+ S/ ~
E: M5 P% ^& O9 y( a9 }% }% S; U |
|