|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
! I0 W/ @: w) v0 ^+ \ [: m0 G
! K. k: ?6 l- O1.命令格式:
; V q$ ~3 q! a9 d+ N' u4 c& A( a1 r$ @( R+ U& T9 z
cat [选项] [文件]...
+ F1 X* l* r4 T: P. {3 m n9 Y
* R: J! w+ A: o2.命令功能:- z9 M0 ?1 w- w+ m3 V7 _2 a2 R" A
3 H0 w6 g0 E& F; rcat主要有三大功能:4 R% e8 Z) J- h! ]
! K" W# @! T0 v1.一次显示整个文件:cat filename
/ [7 [2 q! n* b: u, |4 j. `
8 L1 g% X9 e ]1 P1 l- l3 L2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
& o: [1 @& [* U. [ g' T4 A1 A2 f0 Y) t6 u( ?2 S2 `
3.将几个文件合并为一个文件:cat file1 file2 > file( o# D$ U1 l9 y) B2 {' s
" W a$ R+ O$ y* G) S
3.命令参数:
' r6 o( \2 Z# B4 M# ]+ Z2 i7 H3 E; S6 e# w- w: H
-A, --show-all 等价于 -vET$ r) J& P/ }$ a% I2 \/ n3 D+ u* E
+ _; ~: v( E7 B4 V; G$ v, P-b, --number-nonblank 对非空输出行编号# c5 z0 ~! M5 R% H% F4 v6 g$ A
7 I( J' T3 d/ |-e 等价于 -vE
& ^: }3 z% @9 R& X" v* ^$ A
& Z Z0 H( h0 ?' m! \% L$ ` t-E, --show-ends 在每行结束处显示 $' l. d* _; b$ l0 z2 a
T: l, A$ _$ Q( O-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号3 h0 ?4 k' g0 A. R% N
! z! p+ k; W! `* o
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
, _; B8 u8 |4 |5 @+ D( m1 L
; N5 N* \2 L. m. t# e-t 与 -vT 等价
; G$ ?5 P+ K7 r8 _0 i3 M1 g7 C2 i
-T, --show-tabs 将跳格字符显示为 ^I
% d, _) o4 [8 ~: G( b; T. }' r0 j9 e! w' G' w
-u (被忽略)
8 t$ b5 Q; F, N0 r `& N: u9 x
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外3 }$ c' J) E4 s- r( A( J
% _. g8 Q2 v/ S1 l
4.使用实例:
; `6 K' L% L6 L) H, ~: g! i$ K, d
, F1 Q, a- s7 Q5 u; O4 N实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
3 E. I1 v5 K* ^8 h. s
4 f. Y- Y* E6 b: w& @命令:
+ v4 ] B6 u; B% n+ z0 @7 m, f& ^# W5 @* J. ~7 f
cat -n log2012.log log2013.log
4 Z! ~% `9 l3 \* D7 j+ R2 M) W, b, i* ~7 @1 A. n _: n( c
输出:( E& a& ] U! O3 {, q1 d
) f! {* ^. b! |[root@localhost test]# cat log2012.log ! k! O4 N0 c5 z n- Y. q, ?9 G
! b* V! W9 ]' V2 D# \4 H5 K* E' |9 v
2012-01+ H% V. O( i/ E% j8 j% h6 ^! W- e
' \3 m1 Z- K: V4 Q0 l
2012-02
! B& n8 q1 ^, o& a1 ?5 g* t- \0 L6 r0 z9 C$ Q, J. u* \" W
' Z, O0 F- y" f- b4 Y9 l
6 p2 `3 s3 k$ B# O5 i======[root@localhost test]# cat log2013.log
! t9 n$ T! ]" v7 ~) Q
2 }, c. ?+ a1 D& T2013-01+ r0 V9 b3 F$ i. c
9 F$ L. T! e% u9 Y3 M3 c" w
2013-02( E3 j1 x6 l2 f$ d- N* h7 X+ h: g
9 c* W- h' G- Z. q. M) d
6 M- L! Q# a: L! e3 q
7 c9 f) i! }! S( X% Y# B. k* h2013-03( W5 J3 H0 R# Q& ~) e
5 {2 }7 X& s: q/ u% z
======[root@localhost test]# cat -n log2012.log log2013.log & f W2 U1 J# l8 M1 p9 m: b
8 e1 l* P8 Z% S, I+ q
1 2012-01( F7 \5 Y7 |5 G( O9 e
$ ?0 `$ f: b9 n- b4 u; }( j0 R 2 2012-024 \7 Y- O- M6 j$ ]' s
$ L1 \' g' p; ^7 N
3; p& L( { y, l# w
* Q6 q6 I! ]4 U* S* N 4
4 ~( G! ^6 j4 N% P
. B# s3 d+ g$ w3 t: | 5 ======8 D/ ]* `( }7 [( h4 I ^- H u x
H4 s2 N4 q" h/ U- M K# s9 f 6 2013-01" H+ U/ t( p# v, S9 U3 _1 h. b8 _
$ C1 L9 A: \, n7 W5 x- c
7 2013-02
4 R8 v) p7 g" x v- {% h" n( @: S/ L: H7 N# E. S6 e" w1 H+ R' R! y
8& U! U0 _+ z6 h+ Y8 U c) w
1 T1 ]" D3 B M8 R2 Y( V- H' ]2 r) v
9( Y4 i, h: M( h
1 o3 Q+ b6 j5 F- i% `8 e
10 2013-03
" |7 r1 F3 E; p2 V
* e+ C/ j9 \; g 11 ======[root@localhost test]#
$ P9 U% r$ ]; [% K' g( k! o8 a
" Z: d M2 b8 a0 }- p+ W. L$ G说明:
- [7 @& E" m. g, r7 V% }( m- u3 }3 n, W" @: Q' I/ Y
' w. |3 Q" @* S/ K
实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。
/ m Q, g0 T5 J a% W2 C. E+ o( q, m
命令:
/ b. @% r- x: ~
( r: q2 m9 H. vcat -b log2012.log log2013.log log.log( Z& l/ z/ X, P6 L& m( [; @ V" t
9 i& z Y' W0 I0 K2 {输出:
0 F! N: p5 _5 r) B) i' n( Q5 n4 D$ z- [0 e
[root@localhost test]# cat -b log2012.log log2013.log log.log: e6 R+ K" j. U+ L) t
3 K) q, Y2 z9 p: _ 1 2012-01. `- y A& J7 F* I u+ @$ r
# @& W0 }" Q* j+ Q1 j4 ^$ ?4 B1 E* [ 2 2012-02% J* `, t2 z T- W2 E5 W" H
1 ]& @ y$ ~/ o9 b: r0 W$ X7 E% N
: U: P8 v: n1 N$ `3 i" v4 {
/ M, l, q' B/ l+ b% _5 k: M& d: ]
3 ======) M6 c# U) B f" ?, a/ V% `) }# ]
4 w6 k4 | T- J3 k5 C
4 2013-011 u: }& C; D i: A5 c; N3 U L6 y, e
7 F3 G) i$ N; Q, G 5 2013-02& M6 |. i0 L8 p, Q ]
$ l; ?! t' y3 g6 c9 w4 g4 u
( w3 U$ z v8 P6 X
1 ]; N3 X2 [' e& a( R U" G& T 6 2013-03
/ T$ D4 s' M- c0 v& Y4 p7 A+ D, [
8 o) h" L& w% b% o/ J( ` 7 ======[root@localhost test]#7 x' b+ z/ |' b$ [! Z
; W9 b, V2 B0 _$ n4 @8 o5 V
( V" o: G0 C( Z1 M+ X$ L/ u- n实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里 6 g& N1 c- E5 [% I. l+ ]* c
4 Z4 x: Q* L8 t/ a7 Q8 U7 z' a1 J
命令:* {& a$ Q$ ?) Z
q: p) _7 V# S/ Q4 g输出:% j0 I' ^' d; L
' `: k5 ]' f1 u
[root@localhost test]# cat log.log 3 U6 W& j1 z$ O& p0 {
( D; v/ L: c, x! \4 f) L( D9 T
[root@localhost test]# cat -n log2012.log > log.log9 _/ v$ K: D$ O2 I# G9 Y- z
. M, y3 v% t" _! \4 K[root@localhost test]# cat -n log.log
4 ~, r4 h% C5 \$ q0 T8 |$ X
- _% u/ I5 k6 d3 G9 c4 l 1 2012-01
5 }5 q R6 }2 d8 F. w$ t/ R
. H" a* _! J9 Y4 t, Y 2 2012-02, h i! X% \1 x$ u
. e/ i& \# t1 o& e, N
3
" Z# E. Z) u" S/ A! U& B \9 h7 P8 K) u
4
% C1 ]" @7 C6 G: X' Q6 V5 o: o+ B3 M3 t' P* u9 A
5 ======
, n! Y4 H" T# s: r7 {. ?- M6 J* V: G1 x; N' x6 P
[root@localhost test]#
^6 w9 L4 m. K* _) _ `4 y" q/ z# _, w
8 T% z d6 G) |2 D& N实例四:使用here doc来生成文件' P. r0 t4 b& @1 Q+ F( Z0 a
/ ?( v) U" g, y7 G1 a ~输出:
: e+ v. d9 Z/ P5 Q; O' G" r( V, h, [1 L
[root@localhost test]# cat >log.txt <<EOF/ p$ [: T( Q2 ?0 d% w
" D" L: H# A8 I( y9 H; k4 `1 S( |' a6 V
> Hello
' P: Q2 U( N+ Z2 }' }/ Q
2 y0 C* o* F6 r% v> World
' Z: o0 j9 r" g# ^4 q! r( e* C% i, D1 x. Q( N$ Q$ U
> Linux9 ~5 F3 \; ^4 N
- ~7 U7 {, J, P' s> PWD=$(pwd)
' m6 n6 v5 X& @% d# l; ]
# p. y% v# v: y( x; q> EOF; g! \: s+ O9 _& M8 {0 {
+ M( }" J, M. s7 V4 e[root@localhost test]# ls -l log.txt : h! R( y8 A# o. l# |( [
a( d! M& }4 p9 t5 Z, ^-rw-r--r-- 1 root root 37 10-28 17:07 log.txt" L7 B) J1 H3 }( u+ A! ~3 G
3 i! Y7 w" B6 }% g: J5 j[root@localhost test]# cat log.txt 6 s. K4 I5 i* p0 Z1 Q5 d; n
( |* D" z; J. c% B( zHello
0 ~* i; V% B% n* J5 f7 F
& ?- a! t9 _, f" fWorld# M- W$ O, \' B% l3 U+ l$ G
' T$ l: Q9 o. ?0 ^+ yLinux1 X4 T/ v& ~9 Q/ b! k
5 A1 ]9 g1 t+ Z: S3 nPWD=/opt/soft/test j7 g% d2 H U* Y! e
; M9 P/ N& M: l. }3 w2 O. P[root@localhost test]#
$ v2 P6 p1 B) @# h6 ~: k3 t8 h) W t6 C, u, O
( |. o( ^. `* p+ W v! S: ^说明:
$ r4 j G1 O$ \6 v- J* {- I0 s7 `! L! N* }
注意粗体部分,here doc可以进行字符串替换。 n) S( j: g7 k: |' h# l( [
9 [4 i0 W& V) A) o9 D1 A! C, e- v
; e5 p3 Z! ?# y2 ]( N( n备注:2 p; R' h1 W8 ?, H
: e) g3 C8 w" m- L7 Ntac (反向列示)
# @2 P m# L8 M
- L8 k" G: [3 a* a7 B Y命令:9 j0 f0 C4 d B+ s# Z3 B
5 J" W! f2 m8 w: r/ E) Jtac log.txt
+ [' `& R& c0 F4 j9 v3 P4 G; J' V. ^& E4 P6 ?
输出:
0 S2 ]' E, {5 q+ M: y: [% s
) J* a* |4 \# g) ]: o2 L, q[root@localhost test]# tac log.txt $ a4 q' b' N; P: B8 P" }- X1 n9 g6 ?
+ }3 Z7 [5 f pPWD=/opt/soft/test2 l3 o! ~- @" }& ]
6 j# |+ K8 L# N& [* \Linux
4 I+ f/ n2 v1 N E) g6 }+ d" t9 N+ Z7 Y! j$ y; ?2 \/ V
World
+ }9 I* J* b8 [6 l J2 c- M* i" M7 |0 j9 m( |# e' P
Hello
! m* I5 U1 ^! f. i( Y; {: d4 u: D" r1 q1 p/ ?' K) m
说明:
+ i( a: I1 s) c4 H
8 ], l& ^+ y" A5 vtac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来! z3 o+ v. K0 U7 V
* m l8 M1 Y3 b, m
6 A& }6 l/ x' C+ w5 N8 p8 @% b/ j |
|