|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
" S' a! c4 e( N0 w/ d; I5 h( u% J# \9 k* ^8 c* v+ I% p* j
1.命令格式:
( u" z3 e, s& h2 Y; j4 b8 B3 a1 U. M. N, U
cat [选项] [文件]...
T& F6 V* u1 m, A( U7 [8 I/ r: D4 u. a5 k& L: j3 u2 x
2.命令功能:
|: m" K/ x1 B7 O9 ~. z; t j+ O+ {& [$ H& @: J1 N5 @1 B
cat主要有三大功能:
. G1 @+ l5 F; G: \: Q+ R( @8 |. x6 ~3 L
1.一次显示整个文件:cat filename4 y( p) L+ L6 o k
3 o' z/ y3 k) q
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
: P; |4 L: a8 \# I# u" M) z- O
8 X" F; n7 t) \3.将几个文件合并为一个文件:cat file1 file2 > file
7 D S& M3 a7 O( n
. m, X! J* ~" y6 @3.命令参数:2 o# a/ \" P! J
/ c( y* W$ F B7 l! P
-A, --show-all 等价于 -vET
% z: o$ y' j6 ?8 d
. s* n/ R& f5 x( c6 G. R- B# Q, S# W-b, --number-nonblank 对非空输出行编号
. X( @8 k) e9 Y' J' V4 r4 [ Y2 T
. S- k& h, K& [) ~-e 等价于 -vE! B8 l- X, }' w
: c; l# T* X# L2 P' Z" P7 w
-E, --show-ends 在每行结束处显示 $+ W* ^5 c$ a: q0 m. h" k
% z d* O2 i& B/ Q4 P0 x. u' j% x
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
- `& O9 I+ @+ e
* Y; \: X/ e4 {7 Q9 q% @! ?-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
& ~3 t2 g d$ B6 o( p/ o
" I" q9 G4 g C5 n. z-t 与 -vT 等价
4 e* K* c3 @+ ]% B% ~( }6 y9 t# X4 D. x6 V
-T, --show-tabs 将跳格字符显示为 ^I& k. ~+ ~5 }2 Q/ w
V' z# _) A9 S5 U2 N3 g/ f) s-u (被忽略)+ _0 L/ N# |4 r# k, D* T' P; p
% k5 K6 @5 r* |) W! L/ J% N9 G
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
0 S a; I! d5 w+ b2 q( ] k
& w* e5 `9 r W( }2 O; i/ \: ~( N! D4.使用实例:# d% ^! J, w" q6 k
D& Q- [& ~$ G# t5 @) p
实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里( p5 V3 [1 J" }8 H* z' t* B
! G$ v/ C1 z2 Q8 J9 @
命令:) A3 `4 P4 d4 A: |8 v
8 I4 A3 o/ G0 q4 i6 f8 }3 O4 C2 N
cat -n log2012.log log2013.log 7 M% E/ u" U" u5 C; u* ?
" ^0 w4 L& V, w, o输出:' w4 N) r* B9 v T' D f8 A' |
/ Q5 c# H! K* N1 ]1 H
[root@localhost test]# cat log2012.log
3 N' v4 }& f) ^5 e3 W+ {, Q( L3 h1 ^2 P; H0 h; b6 l% @* t5 [% K
2012-013 T5 e, y! i. P0 g: i' p9 k: Y
4 g! _" U# b1 E" `& O2012-024 ]. D( ^, I) e6 Y' L w1 S+ ^
" X: a- N K3 e( d$ Q: j
4 p7 p1 F" T3 k' d) c# \1 B$ b6 ~8 C* X4 c3 C* f: A
======[root@localhost test]# cat log2013.log * `$ v0 ~5 Z( F+ a7 _4 B/ u
) F! g8 a4 z+ c2013-01/ ^ }" N9 Q( H" B
+ ]6 ?4 a. g) f' T, }. o( w: [: A
2013-02
5 F' A3 b! o4 D. h' N( r6 u: L+ L0 G3 @7 i% @; p
' D+ J4 ]3 T$ z9 D
' \7 g$ Q+ C6 z3 ]; Q. r
2013-03
0 ^/ Z P2 o) @7 U( W; f% W* F8 _. J
0 D, V( A& X8 c- Z. [$ Y======[root@localhost test]# cat -n log2012.log log2013.log 4 `0 \9 h: c1 |+ i
y/ @3 Z e* K T- }! n8 J" \3 _: K 1 2012-01
! W" z1 f) V" x4 Y1 M+ K2 m7 q$ ~' }- V
2 2012-026 t \3 c; Z- u
8 `. X5 x8 g; }4 x* H
3. @# q, K3 R; H3 J$ I4 B3 K) W
- S" r* ?0 Y- m9 g" A7 O2 M( q
41 s" J( u" ^3 ~: ]
) d% F1 Q' m1 ~; S7 G: ^7 m
5 ======7 I& N1 U; B& ^, S! d j# P( E
l; g/ D, }, O% R* ]
6 2013-012 ?6 p; F2 C4 r& @9 l1 _
/ f9 ?; W! S# B" V/ R; p0 g s
7 2013-02
0 J+ L/ N: P. Q1 U6 R
* Y# S ^) y2 M0 m0 B/ Y- n 8
! Q! M3 E2 I: w5 }% g9 f4 y
; i0 w* E# e2 q5 L4 b: u, m2 x# f 9
3 D* v( G& m% E* u T7 U$ }* H" c9 g0 w& R3 G2 a3 c
10 2013-039 B" z+ I! y8 m" L0 T3 v8 ?
4 }/ b6 P0 j; ?& |0 r 11 ======[root@localhost test]#/ a% [/ X) t- l2 m* E: s
1 f/ K# c @) l
( i; |0 g- t# G0 |8 p2 m说明:& t9 Y4 z/ v+ q# H
+ d+ k# s5 X, J; o+ E1 m
$ T) H5 o6 ]" |7 O: s+ I实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。
# i. Z, }- k9 g) C3 i
! m, Q5 M y+ F$ e命令:6 z. U1 ~. |4 E: Y9 K4 [3 i
9 y6 |7 t+ Z; T7 a- r/ zcat -b log2012.log log2013.log log.log; t3 u4 Z/ i0 S# |" i; M7 f; l9 C5 E
9 _5 Y, j L; p7 Z2 k$ A输出:
# a% L* T5 }7 D+ T) o. X/ b. | i; p2 ~, b" `) @+ p7 Q
[root@localhost test]# cat -b log2012.log log2013.log log.log y+ _( |. r% o, P9 }
^" J. O# ~ k/ H5 } 1 2012-01
$ d0 D( ^! Z! m% @/ J- P9 Q" |* n
2 2012-020 e0 R& z# j$ N* n6 n' M$ f4 g Z, n2 q
- d# Z2 S- k, P9 y% E
; W3 x7 J! g5 ?) v' i! W5 ]& y1 W& l; ?! o6 j2 t4 l
3 ======
. {2 I- D9 [' n- `
* U/ ~. L5 E! m: f* C; Q5 @9 d 4 2013-01. N+ f/ ^+ J" l" p; C( b
+ l# _' C8 C% U 5 2013-02
. g2 T; D2 Y7 N$ i4 p7 [# P! w" z4 a$ c: D8 n
! @1 k, k8 W9 l2 |6 p$ R
9 X: k3 J) N. u5 k6 F 6 2013-03
* b7 f; Q: L+ H/ O1 D% C0 w3 M8 K) H9 d% S' J( y( b9 r
7 ======[root@localhost test]#
D4 o0 `" t: L6 `
. \: J- C" l! F9 C7 {2 ^( @1 O
- h# `: }8 z, X% o8 D7 i3 z实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
3 y. Z6 @/ m2 J4 ^8 C- w' x* f% T% o8 \2 x! b( t0 P/ o
命令:# \# P4 ~0 l# e
" N# U8 A3 {, s/ I: R0 `! X0 L2 ^' B输出:# y' O( n' R! R; }) }* ^
7 O- \ t: R" K* y( c; H1 ?
[root@localhost test]# cat log.log
+ |0 N2 x2 Z- v0 f
; K) X# d) b; J( z7 h( H/ J7 F" T- M[root@localhost test]# cat -n log2012.log > log.log% D9 c: s( ^& T7 U
; z, q( I% q5 d- j1 Y$ o[root@localhost test]# cat -n log.log ' u% B/ {. u! o8 e6 R m& }; U0 \( d
$ ]. l2 N$ h/ E2 X9 S 1 2012-016 ~5 u% S% C& S$ _- m& _! c6 A* O
3 t7 E+ }/ Q) T. E: y% |: q
2 2012-023 n) j" y$ i# _
7 g# ~! C7 D- |0 O9 i
3
) Q3 l5 F! R# v# V4 Z; z8 U" Z* S" u( Q6 X' ]
4
' {( h3 K, ?! @8 z8 q2 e
% _. l8 F" |0 d% r 5 ======
3 Z6 y6 Y* S1 S4 M# v2 G7 K9 v$ V* p4 {
; d1 n Z7 i G- [: L1 J[root@localhost test]#1 o& o4 m. _/ B0 m/ f$ r T
3 K3 A4 `4 E8 Q8 H A3 r
8 x1 U* L* k4 v3 W$ Q
实例四:使用here doc来生成文件
3 l- l+ p+ }+ ?7 b. E& J
' h6 i. J. _! M5 t输出:
$ m. H# r. Q. b) M( [
1 V6 c5 U( ?5 J) e" ?[root@localhost test]# cat >log.txt <<EOF
4 _3 V: m9 @: U: O/ L7 a7 E1 N9 w
* E+ c, C: N% J0 I> Hello
9 O& a* g! q/ y$ M3 ]$ ~: ^1 b$ b# Y) j" q7 F; `
> World
3 Z1 [6 D! H0 g1 O0 [- x# p4 C1 q, r6 {; Z
> Linux
5 V7 i+ v3 H* q
, T" O1 g" X2 _0 c: ^> PWD=$(pwd)
. C7 q- W) s3 c9 E/ y+ D0 ~- }" \' l& ^+ x9 F
> EOF
' w9 x; N. y. P4 e' v. m1 X
0 W) M4 q, G/ a3 {: ?' J8 V[root@localhost test]# ls -l log.txt 8 X% w2 @1 x$ L1 K
! t( C/ _+ U2 W& q1 G# ]$ p8 m
-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
% I7 T9 S# _5 n, Z! j0 ^. \% |7 r% |9 X1 ^
[root@localhost test]# cat log.txt
2 _" j% _% ]( j" a: j, e5 ~
) O$ ?: U, k! Y2 a0 H. i0 Y; c4 AHello
. X# ^8 E% D6 Y; H& V+ T
; A& B* ~7 Q# e" s, wWorld
, m2 U6 ` E! R- `( K2 s2 ~# j. b5 N* G/ F2 J" O8 \7 t8 K v
Linux" _6 e$ n I h6 X
6 h: M. v% E+ }6 H" SPWD=/opt/soft/test' K4 d8 q& v6 U
7 p$ G7 b' p8 R# y1 i, t
[root@localhost test]#1 ^8 r. I9 u8 H# @" H( L
5 f/ v B( \5 C- n% B, Q1 O0 h3 E* \ ^2 a( W. P
说明:( v5 |( Y& ^1 N2 M+ b5 L
7 T' V" v! Q, X2 c# Q. e
注意粗体部分,here doc可以进行字符串替换。5 s3 r; `( T" p7 H1 [
+ | F8 F" m+ f) M( h P( W( x* C4 `& S' ^, p; N, T
备注:) y: \) y2 X# Z5 t$ f4 f9 S1 W( i
9 a$ s) z$ }$ U, ^- etac (反向列示): O* N- D$ R2 K3 O& G' ^
1 N0 `6 c/ C. a- L4 W
命令:
. Z% Z; D- f4 a! g+ E3 l# c1 C ~+ w( o, m
tac log.txt
4 W" A: k. J3 a6 p, E; t( c- Z
9 x# P8 O0 B* W! `8 m- x7 x输出:1 w5 `2 I2 z3 t2 F
5 _* E% t# Q; `$ w6 m3 q
[root@localhost test]# tac log.txt
+ ~# ]- B& O1 ], x( e
8 Z1 Y2 w# F- Y8 {5 VPWD=/opt/soft/test0 m9 _8 Y5 h; p$ P0 ?( s& Z2 Q
& s7 E, u$ G, }* D5 _4 B
Linux
3 [: D7 h) K' @' D! X3 O0 \) q4 A' A7 Q: e6 c c! {9 M W
World+ _' Y2 M) `! v K( G6 h
; s8 x* ^. |+ a+ _* _ q
Hello/ m, b, l7 E1 A. N1 A
8 E: A- r: p! K% F# e2 Q说明:' k' H3 a' p9 h" S+ d/ m- ?
! e0 f" T# l9 e/ Z
tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!$ H/ h1 v( b/ B. ]: [
, [7 Y; g! T; G: Z p
3 F; a1 r6 H% d7 f' ? |
|