|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
' o, m, X# M0 j) X/ q7 M) Z
. Z" t) \/ ? S8 K/ K1.命令格式:; G$ T# @( ~* J5 s# t( n
( w$ U: [) t, |8 O1 J* Ccat [选项] [文件]...
0 b! o- |5 U% o v
6 x8 C2 O" u- S2 o0 k! j" i$ D2.命令功能:
, ^0 B. P, x" O, R+ f- S! _( M8 N8 N% B2 J; |5 S, a
cat主要有三大功能:
0 v5 D3 T* }; |- y# z% s+ m% m2 u+ t8 X" a6 O7 A0 Y
1.一次显示整个文件:cat filename: Z1 L* ?: f! B4 E
4 j! g) x' o; V
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
& m, a4 w; u6 V' b' B7 N0 l! g
0 P3 ]0 P+ h' |: j3.将几个文件合并为一个文件:cat file1 file2 > file
0 V7 ]/ j" }1 Z9 t+ R" G& ]6 @
X6 O' ~8 g! r0 v7 ~- x3.命令参数:5 \. D% o& p1 U7 g3 _
) M5 K) t0 L" T: D S/ Y-A, --show-all 等价于 -vET
) w3 U, r- ~- C+ n Y0 d* ]3 R& _( V5 E1 t+ v) m
-b, --number-nonblank 对非空输出行编号
- j. }: y5 q) p% i& n* {, S- l6 _3 d# o5 R
-e 等价于 -vE f$ J3 m# [" Q' n
+ z7 ]$ h/ \1 w" x) h% Z( _-E, --show-ends 在每行结束处显示 $1 d% l) ~# }7 O/ I3 }7 }3 M. \
4 `# r: d) |# ?3 E3 `8 A, z-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号& r0 r( j& k |
6 {$ U* {0 B2 t3 i5 Y
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
4 f! J" P8 ^! o1 C) a
4 M3 j- T8 v5 L$ K6 ~5 A% h$ x/ z-t 与 -vT 等价
' D/ c9 t# u/ V1 V
) N" N9 B( W$ D- f-T, --show-tabs 将跳格字符显示为 ^I: h+ L& I% o5 }% V- F
/ _7 A- j6 s4 m4 j8 b-u (被忽略)
4 V3 Z5 y: x# {# ?0 y8 P! x
/ `& _8 z- J/ T# c' P/ |-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外# Y' M ~$ |0 h5 ]8 d; l
& b4 z5 S; K8 T/ v4 D8 C1 u! c7 e4.使用实例:2 m+ n' h D, f2 G1 v
! J" l0 Q& ^4 W2 Q实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里/ z2 I( B: r, R T K$ F
2 }9 m. [9 ?& ~
命令:
' F0 w5 L! v' ]6 R+ Q' n2 i+ L0 J/ H
$ N0 }. F g: O+ D( q8 Y: Wcat -n log2012.log log2013.log
0 g. C5 k& h; s* U# s4 r. N' E( l3 ]# ], {$ j% ~
输出:7 y9 L |% P. Z2 Z; P
" o! g6 a' W" Q0 v& w% Z
[root@localhost test]# cat log2012.log & u' O% x! W* w3 J' [/ u
/ A; D# N% B" S! A: ]$ A: Q
2012-01
8 h- b `" _- `1 N& s6 o- Z. F8 p8 j, I) v& y) w; p
2012-02
! [* i" @ O Z$ b. F0 B4 q9 T( @7 j4 r
$ [* V7 ^1 j6 V/ D, q# f( S, g9 U# I
0 J& n" h% @* G0 `0 l/ S g/ q======[root@localhost test]# cat log2013.log
! u. r7 ^- r. D' j( h; `/ F3 @" x- S( Q
2013-011 j r; @- O- x7 s$ T& z
: j8 M$ k8 H" E. V2013-02( w: H: b2 R# H( w- V
& v* m0 E5 D) A; ~0 M. B6 `8 |+ J: F; `$ M7 H- I" O$ I; Q
6 G) p i+ x. M* Y1 `2 H$ P. V( j* w. b
2013-038 w" S6 s3 Q: j. t- ?" A
# A Q" X- ~% l6 Y* b
======[root@localhost test]# cat -n log2012.log log2013.log * p& r1 ?8 ?9 U0 i6 }3 q+ K/ {
3 d, C; M; e) u1 V5 S# \$ |8 m 1 2012-01
8 m7 c' E) L+ U6 T" }/ q( l0 ]3 S. H" V+ c
2 2012-02
$ f( x6 R- [ o) ]1 s% ?& j
: F: u/ l8 L/ t 3
; @9 Z6 h( s/ e/ C! y: r! C. {. J3 ?' F
4
n- t; w, [2 M' v
9 J+ l4 x; f, }5 d$ W 5 ======% h; _4 p! T. F, L6 h, n
/ d d' z& B3 b" _1 r# J3 d. P 6 2013-01
: D) s+ A% H1 K1 Z& |
8 m7 A* G8 V U0 P2 l. J. U' R 7 2013-02
9 \% V6 g2 d' m( C' p
9 V- C) B' h* @+ q, H3 a9 l 8
: x1 `0 ~+ U* ^6 Z' [0 g8 W1 d3 |7 v# u( R1 Y5 W
9& E& e. b% t& M; `- ~. u: M
8 x* _" c7 _/ `2 M; \0 ]- D9 P2 r
10 2013-03& Q7 _6 Z* O) m( l
# v7 v( i( W. i( ^/ | u
11 ======[root@localhost test]#( ?4 [4 r3 {, l+ v+ E. X9 O5 S0 e5 V4 ~
? z9 W/ T" L+ ~8 o8 l
! j; W- v: p! e; p; s+ D9 e
说明:
0 ?% W& @7 r, t9 L: e
9 u4 M8 E# M5 [" P6 m; x5 q
6 `1 D( W% F9 s% x实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。 % B1 R) H$ o; l z; f
5 `7 ~# f* D* Y7 Y4 g
命令: d% Q$ c& U: h" h! k
+ ~: V( g% @% B6 K
cat -b log2012.log log2013.log log.log7 ]3 J9 N0 n- Q* n5 e1 {1 C' _
8 c! t% {8 T) m0 j
输出:$ K. H# X8 X: P' Q& i1 B* \& D
, u1 M& P- x, z! o* |[root@localhost test]# cat -b log2012.log log2013.log log.log' R7 l) [( S* Y# Z) {7 V) h
4 ?7 |+ `; Y8 W( f4 A% v% X R0 c4 @
1 2012-01
5 r7 @2 n7 w% j2 ?% G" B0 }: b& u8 { C' I$ \
2 2012-02! Y1 o6 x5 R8 w' G
8 y" r6 G0 N7 I; J! A! E$ I
7 N( i6 O1 \* \# W: f) r4 h
+ ^9 u% w) O- y L2 j L) R 3 ======# O4 D: ]# q. d% x9 V+ [* m
9 P: @9 u! ?: e6 r
4 2013-018 U1 Q3 Q; [, ?
( {+ X0 s4 r4 t 5 2013-02- z. i- Z K5 n8 E2 B
8 } \& q& z$ y
+ b+ }2 q2 {- j3 d% X- I f, G
; u7 C1 R1 s5 S/ o
6 2013-03
, F' H( O! \, z1 D6 ~! x) K& g4 {+ i1 O7 @
7 ======[root@localhost test]#
3 Q3 E+ ]5 Z+ I& x, {' ^+ K; L' D2 H8 M0 L
) N/ q- G% Q5 y+ l实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
- T8 N# C" x+ e# @6 W+ Q. U, c- n- E& B$ N0 s- g6 \
命令:$ F( S9 J% W' E% d
2 E" D7 g ?" p' [( G/ z) V输出:
* b7 A8 g/ l7 ~2 l" g1 R5 m2 u+ g* E2 q
[root@localhost test]# cat log.log h* Y1 H. t$ q4 K5 K
' C* r% M# `1 u! `+ ^[root@localhost test]# cat -n log2012.log > log.log, [/ g6 j0 i. c0 f( d$ v4 J
( U1 ^; `. q" v: ^' |
[root@localhost test]# cat -n log.log 5 z$ J' V) a6 o) S% g
$ X& ~0 C* n# v" Q 1 2012-01
& H, {! R% w6 ]; [/ |' g4 _0 W" Y0 w& ?6 s
2 2012-02
; U& S, m8 T! p, L, f
. _4 A) v8 D; q& l1 E/ d& d 3* d9 q2 u/ X+ @8 d
% z8 B- M' K' d9 ^) A; }, T! C 4% v# d* G. C7 n' M0 w6 x# n( ]* R
: U) i* i7 t0 O( I& `
5 ======
( a( O) z# X$ f5 d" n" {
. y! u b" G! K* Y1 @[root@localhost test]#
- O5 o7 | h! A; s3 g+ I( W3 g: ?: z( ]4 \! n0 C
" l) r1 x% Y# L6 J0 a
实例四:使用here doc来生成文件
F% Z! m6 r( C% G9 v! h! i# F' Z
输出:
; y5 r# l' C& ^9 k/ M0 [
5 H' M) I% r; m" u9 m& B! B! W: }[root@localhost test]# cat >log.txt <<EOF
3 p$ O0 T# g7 p4 h* N2 d. w! l+ g3 _; }0 ]
> Hello
" @0 o0 |# f: w; p& z( N }) a+ Z/ k( H: {; r
> World% D. ~) u! s( |- R8 f( F4 `) s9 B
/ j3 o- l$ A1 j5 z8 G+ y7 e> Linux
. I% U8 _9 Y$ C6 ]* b, ~9 @) K) K9 c$ B# i& D' r' N
> PWD=$(pwd)- c! D2 P+ N- F0 B6 @/ z& j) X
! e/ B B- a2 W. T. Y; f+ X [* }
> EOF# [, o9 `8 v( A: S
" b M1 x; G6 b3 E. y+ B[root@localhost test]# ls -l log.txt 3 @, F+ U4 l( K/ f" V. x) N
9 S& s3 _6 n2 C* n% T-rw-r--r-- 1 root root 37 10-28 17:07 log.txt) r# a3 F4 E5 O/ E# j8 t
% u* p G% F. p6 q4 ?2 t& F' v' g# P9 f[root@localhost test]# cat log.txt + W% o6 T8 |7 X0 f6 G+ \. d
4 a* u5 S# G3 s* aHello3 @# `5 l* u" e& d# |! I) F
4 e8 s) M2 B- r2 Z" d' J7 z& HWorld8 T+ `! ^- ` q5 i* e+ M" v! D
! ~. W ]' X. z3 M- g' Y$ |
Linux& o. y: A0 a+ e. w4 v
2 v4 R: w5 q. n1 ePWD=/opt/soft/test
+ [! }, m# H3 K* F: {' y
) G% t1 c$ R) h6 ^* C[root@localhost test]#% j9 J! s4 _2 w. @
4 c! K _- h, D3 p3 M
! f& m0 j& }% x' g说明:, X6 ?3 Z+ N. v6 p
1 s1 v% L3 C4 _' ?0 P注意粗体部分,here doc可以进行字符串替换。/ f+ ~# d, A7 C$ [
- K7 F. D1 g/ V# @2 P5 q
7 u; h7 U; J) r: V备注:
9 P u. B4 N8 I( J. R' Z) f" ?. w* ?1 m3 Z5 r' G
tac (反向列示)
( d! j0 L+ y/ @* a
% J2 z; C7 |& A2 o3 O命令:' }+ Y2 |& |& R1 |: U
! d; W6 e8 c5 C/ d% ^0 m/ }5 r
tac log.txt
" O% [/ M1 W- T( N5 g- f' X9 `* U: s! C+ |3 i
输出:
4 L& N' c' C+ o& I7 ?$ M3 g- Y
- k% j% r% M4 X[root@localhost test]# tac log.txt
7 o! h5 G3 t/ C+ ? L
$ e! w4 r4 b7 i- QPWD=/opt/soft/test
s3 c: K2 Z" ?, O0 Y2 Y" y
( S r1 t0 I) a B$ h7 I$ h0 wLinux2 l7 e" E- A3 M) x, ^
) z2 H" A. z( S8 N
World
+ K V$ L. Y5 M9 I( r2 Q+ Y& o: [. X7 }1 k) b- f
Hello
$ M, ` F8 P5 V' }. X" F3 s, d$ C! t/ ?, ]9 J
说明:# c2 }" W; I# R% a
; }' L% O$ D# v+ Otac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!2 J |9 M8 a: z
) N% m1 H* x4 s
+ H7 K2 E7 u p. O( _/ A |
|