|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 , M+ b6 B. L& v& o, ^' c; |+ _) v
) i3 P( h' y: _
1.命令格式:
6 {' j+ x F5 H9 b& X( b* |9 d4 u( U6 T9 G |
cat [选项] [文件]...% x) r( C: m/ Q+ r) P
" e8 B- E! z0 f; d* F2.命令功能:3 O% O6 d2 N6 X% p# G
- u& r2 A. b; c; H5 w, ucat主要有三大功能:
, N- d* u2 @8 {! s4 r/ ~8 ~3 w9 [- I' i
1.一次显示整个文件:cat filename
& ]( G1 c8 g. f$ J$ ]! ]* m: ]& e8 N- c$ Q6 ]: A7 `0 k, t
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.% |; L& x" l$ O7 d9 g
/ o. j$ G0 G% N2 K) g3.将几个文件合并为一个文件:cat file1 file2 > file' u- Y8 D! @9 |3 s4 G& l. S6 W
J- o, g3 w0 W2 G# V7 }" w! ~7 x, ^
3.命令参数:0 n) f3 ]( J! R5 y" q
/ ?1 [; j* M4 V9 h
-A, --show-all 等价于 -vET
) X4 g, ^8 C% t! S4 |7 y8 {
* x* [1 s) a' ~- r Y5 Q-b, --number-nonblank 对非空输出行编号
' X2 A. A% T$ p7 _4 n& O, s9 x, O8 X
-e 等价于 -vE% l' }- f; L6 x5 G0 w
6 v6 {( Y# ?5 M8 T* I0 S
-E, --show-ends 在每行结束处显示 $$ Q5 r* B1 O& s T
3 P) h; m$ L8 u7 A7 R; _9 f
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号! {" B3 u- p8 X7 p9 A5 A4 z) [! v
5 Z3 }; f# F7 X' n9 ~$ S-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 ; Z: D- I: b. M
- W- ~% f7 r4 S9 ]! ^1 E, ~; X4 T-t 与 -vT 等价
9 a6 t/ q2 P2 b0 x+ e2 ?6 U4 U+ I! d- J4 m& t; h; V
-T, --show-tabs 将跳格字符显示为 ^I
, n* J! L/ j R! e7 q
, x. u. {% a! V% G: v$ H-u (被忽略)
9 h( A# ] |. Y& X: g" C. m8 d# \4 _* A" J l2 F
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外, A9 {( `1 a( g$ t7 V: {
" m \+ w: b2 @( F/ _* n2 i4 T4.使用实例:/ l) k$ A0 O$ V# ]
: M) [. j% J! `, E V实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里* W9 f% S0 v c
) y& b( X7 g# S( [4 ]6 X命令:
) \; P2 J& c; R; G: W8 \2 R9 @* @4 t9 R2 {( A9 p+ S. N) Q
cat -n log2012.log log2013.log
; _( Z* Y# e7 h* }/ ~9 @6 @2 D2 D, m- m) E
输出:- L1 q1 m5 Q' W [7 F4 s) k; @
h7 \' A; I& w2 ]# N
[root@localhost test]# cat log2012.log 7 {; g- E% r& p" _: k8 n1 g
4 h2 t- e; U) z8 i
2012-01# M, w; w/ A7 A- c
; y( [0 q" w+ a7 b9 [2012-029 y+ y7 H$ }3 q5 E
! z' Z1 p% h6 o; L, {9 H7 ?: z* @! [6 w% y6 }5 T2 Q: |
; k& t4 h1 J+ h
======[root@localhost test]# cat log2013.log 1 [* e6 t+ u( Z) T4 M
, k4 M/ c- J i9 |8 x$ p' \
2013-01! U" R8 D( U) H, Y' ]: w
; S; G6 N4 R) c( o4 r$ N5 h2013-02
; J# L4 M* c! F/ `2 h+ I2 }& c- y4 o: W h& Q: V# |6 d% {" v p8 u2 S
3 K% K- h `2 o
$ c! S. b% n5 b' N# F+ z8 o2013-03
0 I. k! k6 k& ]* I/ @
: G" ?7 `$ Y# p4 x0 l======[root@localhost test]# cat -n log2012.log log2013.log % j0 i# C$ h" g8 X% l4 {
1 t( ^5 H3 W' k# q& d; O3 a0 N/ U: @ 1 2012-01
2 c4 v& Z- o( p; a/ |7 Z& l3 [6 h1 [/ {" O( r$ \- c/ N
2 2012-02% g; t1 Q0 ]/ L' w- @: B
$ ^2 o' ?) M) h0 ] 38 U( W% a: O8 B( S- R3 ^
, |3 v b" W- }' [+ {; u% k6 `1 W( N
4
& g: I- a& G# F" d, s& P( o
4 O( |1 T) D4 T8 g5 _ 5 ======
3 G5 y6 l# }$ H( H$ \8 a7 u: C9 x0 b; V# c& z- w3 h' h0 w* L" t6 z
6 2013-01( F9 s/ V8 _# o
0 B P8 i e: a0 r7 y) I' T4 d0 a 7 2013-02+ A, V0 u% }/ A' i. p3 _7 [
) v* t& h {4 @3 e2 x, ] 8
3 x% T8 V9 {. F _# b3 s! M1 a) F' p8 U) y4 f% U& _- \8 C
9
: }) ` o8 ]5 o! O! U+ H+ r
) b, j+ J2 k% b$ ^ 10 2013-03
9 z' N" \6 h0 G; h( T. j
8 {- q$ V& {* p* f; _, z& L- _" y B: W 11 ======[root@localhost test]#
' f$ T0 j& `/ t7 r! p" l% o5 C: z/ a U5 V( W4 h
8 f+ G e1 ?# {% W" n! x8 U9 T1 A
说明:% @" u8 ]9 v$ j2 H, J
- l) @+ U3 Q u/ U
& s5 W1 j& S) [+ U) x1 ]3 { u
实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。
7 L& D6 d ? x/ M* E) D* D. E: p
命令:
3 C2 T5 H8 W, W( p
/ B5 R+ m' L) y. @& ecat -b log2012.log log2013.log log.log& x! Q; c2 t) \8 e* v* N4 @
8 |, [- `8 ~7 R- U3 q5 Y! L
输出:
) F9 L0 A; r, |* q" M# @! b: v' j. F
J4 S( E. S, }. X. Y/ ?[root@localhost test]# cat -b log2012.log log2013.log log.log
' T$ m: ~5 H$ U( [! N l
6 C: r( g) O s3 H9 `, P7 A8 T8 _$ m& ? 1 2012-01
! Y; A# i# n- Y% c+ d
& V' \" t% H: { 2 2012-02
, [9 r" q7 T( H. Z% R2 m9 k' D& [
$ Y; S9 h4 { l# f$ U) t3 Z8 `; d. D9 d
1 T; r" |: {( g+ v& P/ o
3 ======, o' g0 W. o! P: ]+ k8 f
0 u) [4 h" [ p. g 4 2013-01
9 [& ^; j0 M' v' U' d3 a4 q! n0 a. E
5 2013-02! [. m X: Y/ V
2 ?# E4 e m, d
: H1 N5 D9 M; u: P
: Y2 w8 t7 X4 Q
6 2013-03
! Q1 X& T, J4 c* r+ v1 V. n* _9 `+ _/ t3 X9 [5 {+ `
7 ======[root@localhost test]#" m, F/ ]" f3 I1 C
2 x) L1 @# [5 ^/ t
& G5 Q" v. ]4 d# h3 a8 P* O实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
5 ]. I M6 ? i. q! e5 A
1 e3 p. w6 [2 l命令:, D2 U. ?6 @. J u' I
# R, P; M3 X+ q+ F输出:
V# y( f( ]- I/ g6 |2 j
: V4 A# g( o- U( U5 V[root@localhost test]# cat log.log
3 L! K; }1 X5 C2 b
* f6 |) v' @+ O7 r& \) P[root@localhost test]# cat -n log2012.log > log.log% `3 d1 f/ l* l! W6 U
[9 q: v6 E/ l) ?" B3 x[root@localhost test]# cat -n log.log
% U0 S$ d- y ] D& F- x% I! B' e6 B; L2 i( b* [( D& d
1 2012-01" m: p; t! |5 X. v7 S5 r" O
' Z, Z8 [5 W+ c) ?# T, C 2 2012-02
7 S# j, N( s: D/ V/ R s+ ?0 L) c, ~7 U- g u7 o
37 x4 B0 Y$ U! C' M, {
+ y- G' V K( f3 _' F
4
3 @2 p% g$ ^. U: R/ `# y% r% }2 h. p% l- P/ t
5 ======: j( b, k# ~. G, z C9 z
' t7 Q% L4 V! I1 n) F& h8 b3 g
[root@localhost test]#7 q. v- [6 N+ j% @
& q7 U1 }, I, b5 q. s k) Q: T
1 ]& \+ S2 U" D& `8 Y& @
实例四:使用here doc来生成文件, T2 [* o7 f5 E
- A, n; z* r4 N' q7 o0 q3 V% X1 U输出:
* Z" _' t* z2 m# b$ c) c8 y" \0 d f' @' X+ S- [
[root@localhost test]# cat >log.txt <<EOF/ A7 S: y* C6 t, p4 @: K. ^
/ i+ ^4 ~3 G8 c9 R4 R: j> Hello4 F. A( d _0 {) ]9 S, ~0 l; C
% T6 `/ w7 z# }5 r9 O/ E> World
2 w, J$ V3 M$ r/ X1 f) k+ k# f# |+ S" N9 _( j0 g
> Linux" E4 [) @0 |1 s- `1 U0 I
; y3 r+ f, U, `6 a) z( p$ A
> PWD=$(pwd)
$ G2 O" Q6 I5 G4 \3 s" o0 a9 O, }
2 N0 ?" W8 w3 l0 x0 F> EOF
z6 M" t$ P( ]: U- P2 ]9 D8 Z4 x# G' \8 X, n' x# R0 w
[root@localhost test]# ls -l log.txt # p0 h" j& R" w& N! Z
) W8 P* p j$ S
-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
% J4 G0 {" x/ n! E W$ t
% T( i; ^# A- G1 }" N: u% A[root@localhost test]# cat log.txt
. C. `$ C) y% b, n+ a) X$ I
" F/ v) V5 A# [ ?" q, E- oHello) K2 a* H2 \1 n h' }4 R. P3 U
0 ]: E) v6 T. ^" [2 R
World5 w8 \" y1 q9 j! I ~0 r
. H. j0 ?9 j+ e5 U6 d' O# d2 h8 a
Linux
3 v3 M/ G: U( i3 a3 d$ X, u- j1 e D; x& R1 N
PWD=/opt/soft/test
2 r+ d& w5 W8 ~, P$ y9 l
; B+ n {$ ?$ q9 P( ~[root@localhost test]#
) q- \; r9 Q# A: L3 ]* ]: T4 v+ \8 g. G3 E
' N) }% G- p! a, E6 s说明:
7 J0 q2 E# N' K. O. f4 C T
. n7 a* Y# j, a( e) h9 ]注意粗体部分,here doc可以进行字符串替换。
: Z' y% Q1 X% Y$ T" l6 l% v! Y% i# ^( r
/ r6 o9 H% h2 B6 q* q, b$ Q/ }
备注:
! j' c4 O7 V3 n* ?. x; c3 G N
7 h! z/ q9 g0 ]tac (反向列示)
/ n* D' [- Y. A7 `0 ^
+ _, { D! L7 ^! R3 U命令:: X% W9 M5 n& h3 n
) ^& P6 D5 c8 m) V: E
tac log.txt+ v. J, ?/ c- l; o* x
; ]' Q, g2 B% X1 t5 s! l输出:7 ~2 i* p) K: N, W4 n9 E
8 N# K! a7 [, k/ p1 m% L) ]7 t[root@localhost test]# tac log.txt 7 g- v2 w9 O, H4 r# v
$ z- k) c! t) ~5 n
PWD=/opt/soft/test, W- n: l" j! w. |) P
, E7 `7 U& { h8 o9 m
Linux
0 X8 @; t, F9 k& C- w# O. J8 e& X- I1 g" r
World) u$ ]+ j8 {/ ?) c, Q
; Y9 b' X; c* c U* z Z1 \8 f$ k ]Hello
3 B" v( O" G; D- X m" [# W; N2 o
说明:
0 p. i4 R1 a; K& }( o7 Q$ g7 p& O1 R
tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
: J' v& I9 `6 {" ~& Z
4 z2 P; C2 n# z* ~* R) f7 p. V$ H! o# W. O( f- O$ Y
|
|