|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 o. ~& z, b9 o
5 Q: W$ w1 h; {2 T+ T1.命令格式:1 Z4 s2 d% ]& b0 l0 {% ~! N
8 Q+ c; d# h) X% e& c9 N! v7 ecat [选项] [文件]...- Q% ~+ \' `1 S. s% A
7 ]7 y. n, Y! k* j2 c, B$ ~2.命令功能:- c- |* A! Y. f0 n
& R8 _% J" B( a* M. O- b) k4 u9 y
cat主要有三大功能:4 d/ u8 `/ w- ]. a: X- k
- a3 S/ B i- }
1.一次显示整个文件:cat filename7 y. S/ w0 C1 ?6 C& q, h: z
* ~* d; K. u4 T a
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
, X) n3 H' ?$ A/ y# u5 `+ I4 g1 j, q- T1 n/ _
3.将几个文件合并为一个文件:cat file1 file2 > file- M9 D1 ?4 R& t7 K6 B5 g
: s& D8 S x3 J" F
3.命令参数:/ c8 _+ t" R& B$ N# I( z( E
( s9 F7 x9 \/ {( C9 j* [$ y. [-A, --show-all 等价于 -vET0 O* o0 L: o& D0 ]& t! i% E
8 [$ A( |) I# i
-b, --number-nonblank 对非空输出行编号
$ I3 C6 X6 Q, i& Z, E& w* u
+ a4 j9 X+ {' X6 W# b-e 等价于 -vE
, {9 m8 A* Q) v8 C" T8 h8 [
0 n) C B+ ^. r8 Q* }-E, --show-ends 在每行结束处显示 $$ J: p# M; z5 y8 G5 z8 x9 d) P
$ K1 @8 L! V4 q( ?0 X
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号4 O. H8 l1 ~; {) g+ ?% y
2 B5 ^( {& v& x2 Z, A* x; A) ]-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 + q, D o _% R4 @6 ?0 l5 r; n
& n8 S' o3 `" X* v) B- `( ?-t 与 -vT 等价0 ~$ F6 j t( n7 L1 X( Y0 {
0 k' ]: i3 N9 @& L& q& m9 f1 T9 |/ L
-T, --show-tabs 将跳格字符显示为 ^I
6 F2 q r5 F5 w _
7 Z# W8 ?9 A$ t! Z-u (被忽略)
* U- u( U& Q+ v% ^ m2 r
; v5 @4 B0 C1 Z& j-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
1 f# V+ S4 y2 t/ }* ]6 k( J3 d7 d+ p6 A0 D+ V6 M# f$ Y
4.使用实例:
% z1 A6 @0 D: W0 N i1 W' O" K0 |: A( H5 F( F# n$ e5 o( S/ z
实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
. L6 X3 F6 Q* H( m! V2 G& a5 g# {9 {
命令:* P' z5 ]1 B! T6 V: h/ n9 X
4 ~; i- H0 X# [3 v7 O7 C4 \cat -n log2012.log log2013.log
5 k! T" d2 V1 k7 q
4 c5 o6 d/ e2 L6 {, a! N _9 ~, n输出:5 |6 ?+ h% V' `
1 Q# A4 i5 J1 x[root@localhost test]# cat log2012.log ; m/ x% R5 y7 y7 c g J
- F8 ~1 s/ Z7 D0 }, w l0 _ G2012-013 [+ J1 ^! Q5 r9 A% S" B) m2 H
0 H: {; X9 H# N4 r9 S2012-02# \% s7 A5 u+ {" Q/ B' r
& ]& f7 \( p4 }8 t9 w, e! d, n
) Z) s+ w$ d5 Q6 N4 f" X, \' j+ t( L
8 R# b1 P& ]5 n D% g! y======[root@localhost test]# cat log2013.log 1 ^: C$ Y8 C. f
4 {; A/ u& Q" O6 o, q8 p1 f2 q2013-018 n! {# }& o0 P5 A! e3 q- r) h% s
% F) }' N; L# {) a9 G1 x0 O
2013-02
! U1 \" I- F& j4 U9 v* s* I( ?1 q! y- Z! p# V1 M& Q- m, n/ H+ M
6 S0 [% l% a$ @+ p9 n; N
: d' f ]$ W2 H: e# j0 B! v2013-03
( C; M$ v. Y) v4 s: @- h) D
/ z* @) G! n; h) \======[root@localhost test]# cat -n log2012.log log2013.log
( i2 [) I0 L" v3 n, k
% l }. c8 _% d- I# ^ 1 2012-01/ y. G* _; |+ |: K9 {8 j2 H4 C ?
' X9 ]0 a2 ]; r0 g
2 2012-02: p# R' |# s0 r4 O! U8 E
# p+ C) f7 x4 I# [; |
3! B8 }6 T" _( \; R8 V6 I
# C+ i: u' ]% \0 l6 a 4* N, X1 @+ e; P1 L
% d U# l: }; q( ~, I 5 ======
7 a" z1 p+ t: F0 h/ w) ?; X L& L
6 2013-01
4 r2 P u3 h* [0 L! M+ ~5 A, D- a9 r3 t- z9 j* d- F
7 2013-029 H# p) X' M7 @' K) j4 X$ z
/ ~! G5 a# f9 x8 }5 F3 ` 8
; M; l' E; C8 V6 Z& ^, P9 i2 v
6 @, h, x P) k 9
5 g6 Z# b# A) @- ?4 M F, z" t, z5 E- E- K" F
10 2013-03$ t7 \. ^/ P) R& e& d
0 n3 p; W6 _3 Z7 f2 ~5 d4 e. b
11 ======[root@localhost test]#
+ s o) d, v& m8 s) _5 d2 Q
. F: [9 m4 n; W/ S5 [8 B* Y& v% J0 }# W" k$ o6 j
说明: i. @3 K. S4 w6 e& o
* o5 `8 r% N* p8 r% }$ z: g( H4 u: X4 X
实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。 : D6 Q! W+ H* G8 P1 u+ n1 t# a" R
" v+ ?/ L- u7 {4 a: g命令:3 B4 M! K! o; T3 T* c8 N
3 i* h" P$ y) F5 O% K8 A
cat -b log2012.log log2013.log log.log7 S% N5 ?1 o( j/ y. l) H- Y
! D) W4 r* s- C/ ^7 V V, [输出:/ P/ c' W5 n$ l& ?+ v
4 U$ ^6 B+ |6 L7 |0 e+ A4 [
[root@localhost test]# cat -b log2012.log log2013.log log.log
. u! N3 C+ r3 J5 I) F D
9 I! T$ i& Y: S- i- w 1 2012-01
/ p. R t. A, P& O2 Q* M4 `. h, `
2 2012-02
1 |. a6 j) f# N7 I5 a6 e8 U0 a- f [# b6 ]$ s5 L2 E. K( t
/ s8 q) r7 c8 X& d2 e ?" g
2 w. f' j5 W: f4 S
3 ======
4 S7 Y% o- \ i6 I
) K7 z p$ u4 ]% Q0 u9 Y" ` 4 2013-01
5 {# y6 z/ c) J1 W1 b% N1 h7 p Q, f% D1 r8 k
5 2013-02! e4 b1 a& p+ E/ m j& u
, P! B. ?5 I$ f" @# M/ R: \4 f- \: S7 v N0 r( S$ H
$ S: M3 S1 ?) K6 R! `$ ^
6 2013-033 q+ l0 O. ?/ v$ p$ A4 F* p! h1 T/ y
0 t2 k7 |1 e( Z, |0 I 7 ======[root@localhost test]#. D. U k- B4 i1 L2 P# f3 \( m. f
; ^1 v: A. M" i, B+ Y( W% k1 v
+ N4 Y( d$ S. y$ K& G实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里 - X+ G/ i) [5 n; G' z/ `) }
; L9 J* w4 b) d3 o- o/ S命令:7 X5 r$ b- H/ H, y% i
: o; h o* H! `* \
输出:
" ?: s8 r l: G$ E- Y) F5 ~& _( ]3 j8 @
[root@localhost test]# cat log.log 1 J7 }. D" G |9 q
% y9 a+ {; J& h } ~- p
[root@localhost test]# cat -n log2012.log > log.log
7 p$ Y7 s5 |* h8 {- O+ V" p K+ B' \! D6 t
[root@localhost test]# cat -n log.log
# d. Q: G) ]9 Y1 V8 @1 f1 ^6 \) h. o' F; m; w2 I9 a
1 2012-01: q1 f7 _; K6 R
! G& v& ]; Y0 T$ K" |. e' H" O3 l% z$ s 2 2012-02' E0 T$ G, M/ [/ U6 @/ m
% _! t, J# D- a8 n, W 3
5 C6 `$ {( i4 G, Z$ B T& Q' z/ C3 e2 J& B, M5 m
4
/ d( Q& u+ \; Q* ~: |1 T8 r* T
/ Q. ~" q) C$ z4 f 5 ======* ^2 l) R3 k+ `3 z5 P6 u7 h
1 ]# a# h' C& b( \( V) d% W; j
[root@localhost test]#
) S+ j$ @! A& h" y& t. @" f! \
( y" T0 O6 Q5 t) v' X8 a! B
- {) `# D2 ?$ u实例四:使用here doc来生成文件
% d" H ~5 o, B/ J1 {! ^& j/ n- G$ H& V: V: B4 h
输出:. F1 X/ o! z3 }3 v% e% @
9 O6 e# [ y2 W5 s[root@localhost test]# cat >log.txt <<EOF
1 f& A# D/ f. J, N. H. \( T, n2 k/ Z
5 [/ h: D( A {: E: T> Hello
6 r# Z' F7 Z& E; J; Q( O* O; d9 G5 R
> World+ c c y) w, z* U' m7 r3 w
! F3 a& ~! @' ^> Linux& u" Q. }+ K+ M. t- N
; y! z$ n* o/ k' c& }3 H
> PWD=$(pwd): `7 L2 j, S* C. P
' D1 T$ k- j3 B2 {
> EOF
. E0 d$ }# I; q s( e
7 J; o! _1 Z+ Q; R2 O; k+ _0 _[root@localhost test]# ls -l log.txt
g5 X2 ]4 y/ {5 E4 Q u3 z8 Q8 K: t6 Z$ f$ z! m( f2 ]: _- I7 _/ {* f* [
-rw-r--r-- 1 root root 37 10-28 17:07 log.txt2 D& o+ K( B+ }8 y+ X4 @8 w
6 ?- s, x0 C' l7 W. k6 s
[root@localhost test]# cat log.txt `+ Y- T+ X* w9 D, @- O
7 ?5 D+ J/ ?$ K2 y8 M z) J/ }* Q9 R
Hello
/ A: @2 F, y- l) M3 R' O6 E" w a2 e7 g. f4 ^# T+ r, T, U( \6 b& U
World
0 h$ e: z6 W& y5 u1 E$ O u; j7 G% ^( T L- o# j
Linux% D% z2 h) [* o9 @. x
5 u' [( K" S6 m# n+ R6 v; `; \! Z
PWD=/opt/soft/test
$ N& y$ _- x( t) j9 G. F/ h! S/ ?1 J; O1 B0 b* o/ V: _6 y$ y
[root@localhost test]#
$ Y, w, P B# l8 M4 k; G# G+ e. y$ M! _4 _
: z$ [5 @' U3 ~; e% l$ |说明:) _8 |. M; h. s/ s+ P- G
/ C. I- s7 u' a& L+ G6 k8 Y
注意粗体部分,here doc可以进行字符串替换。
% \; s& O; w; n# F8 d
4 }4 f* K/ D/ c
+ h7 Z1 T+ u \6 }- ?6 {备注:
/ w2 b* r+ \6 N5 f% Y+ H5 G# R0 \' }5 E- K" o" P! c$ y
tac (反向列示)" Z! t0 y/ T* S5 ~
" ^5 H7 I/ X. Q& K6 j- I( M命令:
& X/ R, W( Z# [7 l% {/ E: Q c& z: K( a# B$ H
tac log.txt" `" d+ s& m" \* U1 U
" f, ?6 B5 \$ {3 ?) |" a
输出:% A/ a2 X: I) q4 C4 p7 a
. h5 k- z% ^, V/ @& u' v! d- y
[root@localhost test]# tac log.txt * [6 Z2 y1 |0 ]' [
) H2 i- D0 _6 Z& `) i4 }& k; ]PWD=/opt/soft/test% L: g5 O4 Q0 V3 J# b- ], b
: k+ {& E9 y' U4 N( @
Linux, W+ ~9 c! o2 P4 Y6 [/ m6 G; S t
( P0 ?( J# m8 I/ b$ w* qWorld
" J( I; |' b& D8 f2 j a8 j6 c g: I4 v9 ?5 e
Hello5 \& x: [8 z1 j4 Q2 G% x1 W
& G" w/ H H6 i' H1 {说明:+ [) E+ m- o' E7 L
' g9 s% \: m- I* V& r% ctac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!8 H6 n6 k2 P. U0 c" c, D
+ d9 h g) ^2 x8 J
: M3 p/ `: f7 N- K& m( E* Y/ V v |
|