|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 7 u# d0 ~& b$ U6 I: c4 G% z
; b/ c0 J, ], c& [5 _ ?2 {
1.命令格式:* x) l* s# ?5 F0 ?
: F1 S. O) a$ g3 J7 l' D6 E. I$ e
cat [选项] [文件]...# x8 r) g$ S( V% U( V0 i$ o" l
& U, B/ g* w# b" o/ ?1 h t
2.命令功能:: o Y/ y2 @1 Q& z& S
3 i) J4 ?: P7 D4 C/ F3 T
cat主要有三大功能:' r- Z- Q* @+ @ O! ~
: c5 X9 g! T6 J& [% K1.一次显示整个文件:cat filename$ l) E5 a8 R) X; b+ ^# Z6 h
s, n! f0 u* b: U0 \+ a; ^4 e2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.$ A# Z/ K+ V0 A' f
' I3 J8 C/ _7 T
3.将几个文件合并为一个文件:cat file1 file2 > file2 }6 O9 o" w, w9 U/ S. c* j
; Y K5 I- k: k5 S2 F. O
3.命令参数:5 i4 k) z- Z# z$ k1 R1 w7 [ g
# q% M L3 W6 R! l- c-A, --show-all 等价于 -vET; p2 n8 s; R, \% e3 [* S
5 N0 g' t: y; N/ V& \" j. {' V
-b, --number-nonblank 对非空输出行编号: Q+ C/ e) ~; t7 X3 ?4 a
# k& i) s C% M0 G-e 等价于 -vE
( D- x% l# ^. P2 v$ g, K* X
* z, c% ]5 `3 B8 `, W% K; H6 b) B3 j-E, --show-ends 在每行结束处显示 $" G H) `" e/ K7 k; y8 k9 J
$ V3 s# e2 T6 n$ }$ s
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
% z. L) t7 t+ E5 _
8 m+ H' j# |0 F5 m, \-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
$ L) Y% x/ o7 d6 ? W
! c/ I4 f) o* H-t 与 -vT 等价1 I4 V3 u1 s: Z: D
# j/ Y1 O, ^5 [
-T, --show-tabs 将跳格字符显示为 ^I2 P& p' Z- @# H) P6 j! p2 L
; ?8 G- j7 z9 O& n# z5 P
-u (被忽略)% I5 n# A; \& G8 C. L9 f3 @
- v. M0 J! ~" i7 J-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
. K0 O& }8 ?% S, [
, i; }, Q2 C5 i$ [: S4.使用实例:4 X* `" y' L& {, }# K
h0 y) C' i3 d1 D( u( y1 \实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里0 o: x3 w5 l- r1 @* H3 n6 y
& @& V8 a- G E3 U命令:% Q8 v4 m0 ~8 G( n/ B8 `2 P
& l4 g# n( k* g A# W# P
cat -n log2012.log log2013.log
" i. ~: V% P, W% P
$ Z W$ T0 K: r输出:
- G- M9 _0 \1 g+ J- l
9 o1 _* w& L8 h/ q[root@localhost test]# cat log2012.log
$ Y& g! d. l7 ^9 b4 `! f1 u( b, R0 M$ Q6 I \/ k: l# o2 ?
2012-01
" y" t& ^" x1 m! g W& N
* p* y* c! N. ]: s4 `2012-02
* \; f1 d" y) F: h, n# d1 D. ]( t) W$ t, e; ^
" f3 {8 {3 `" H, s! v7 _
$ M- v1 ~. _4 A2 ?9 @& w
======[root@localhost test]# cat log2013.log
' @& h1 [% }) g7 j% w# C% W: K
: N0 }. H% W& y; f w# v2013-01
) _7 Q; P6 J9 ~8 M" n: ?
" g$ W& Y5 a3 s- u2013-028 @. n) j3 _6 q, ^5 }0 S+ u
7 z) S: P. n; i4 |/ w/ u
# }: I- d. P+ S! g: M2 ]1 N
3 p+ f; p) b$ d8 _, c# z4 l
2013-033 Q% V4 K d; K! P
: f* E7 _$ d! h# [! ~4 X
======[root@localhost test]# cat -n log2012.log log2013.log ; H2 c* ?$ o `7 ], q3 K% n
; z& N+ i% c. s- {' y 1 2012-01
* a4 n, k3 R; u1 E5 W9 k9 g
8 `$ J+ C* A! j% H 2 2012-02
# `0 N* \0 v; v* A d) [) V8 D6 h2 ]; L
3
+ _; n+ }# K% |/ D/ f; P1 L/ `1 b2 F7 {% ^# x
4. d1 S4 O7 h, s' p
0 H& w5 y% s# q# N6 d% B: m4 Y 5 ======
3 o- t# d1 G) O% S$ o! H6 `: Z" |& l5 m$ L! ]9 T
6 2013-01) m5 g9 P2 L" N) T3 @# v4 q
# f( _& c; u5 R$ t7 O! a
7 2013-02
) |" R. \ M8 `/ y/ B# |
9 E: i% S p& a( h$ j6 I 8
( I9 u7 P9 a' X% O5 c9 |
+ l! |) C. k- J( X2 f+ D# Q 9( g) ^- B! C) e# e, J' R
0 Q$ E) x7 d5 e8 E/ f: z0 Q0 W
10 2013-03
/ g: u: m, ~7 ^) B) L' Q
* G1 [! e% J) }' k5 [6 |; Y' w 11 ======[root@localhost test]#& O9 l8 n# r3 }5 E( s
9 B H, N5 z) t! Z! `: s" Y2 ^0 W4 ^" k$ @: ~% m) \; `9 C7 r% `7 [
说明:- E; F1 q8 v2 P0 {- e/ v U
% X4 ~. Z; J% k$ u2 u# y) d5 M$ E. r6 D. i0 Q6 l+ p* X8 y) \7 n
实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。 % @* }3 F: h! T) a: Q
7 R1 h( i" i2 U& V0 w1 I, |9 N
命令:
( X8 k3 R4 h8 A" v( i
5 N3 X. K3 F# z+ Zcat -b log2012.log log2013.log log.log
. @2 G1 t6 g# G0 M% I
* `) K3 O; }4 f输出:
: E8 h) o2 L1 m2 u; _6 G, X
2 U5 s0 q( l4 K' M9 i% J, K[root@localhost test]# cat -b log2012.log log2013.log log.log2 x* ]" h5 j8 ]: r/ d/ I* W9 e
/ M! D7 {+ n j2 S
1 2012-015 @ ?5 {5 L- [+ k
. D$ u9 ?2 ~5 n0 f. _; S7 N
2 2012-021 _. X$ s3 g9 w) f
/ n2 e8 I, z* l, _4 d; ]$ Z. ^4 b* Q3 M' u
/ n7 h8 u& x: c0 o7 L' t5 E" I 3 ======$ t/ O8 h* `- L# G6 ]8 z
+ U% X% w: O4 u. T
4 2013-01$ ?6 S" I2 `" d
+ x" F' m6 D+ G+ b4 r S
5 2013-028 r b, |( V5 U- m% i6 O
8 x( R4 Z! Q7 h! f8 {; m. v8 a" V( K8 _
6 U8 N- H( L2 N& _" F5 J$ f 6 2013-031 v1 A8 `: w3 Q7 [1 T$ W: F
; p. W* S/ {9 e
7 ======[root@localhost test]#
! G7 E/ k4 H: {( z. I4 j
+ D( Y0 V+ L+ P. D8 l' V+ n* X! g2 t7 Q
实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里 7 ~" J9 ]% J+ d$ v; E
+ \- M2 V/ k( b. Y5 J S
命令:
4 R/ Z7 z* i, D. U
. E0 g+ o) |4 C P! }1 i- W输出:
4 @" y( X- X' P9 D! ?9 |
$ M& ]% I/ w- E; c- e( a[root@localhost test]# cat log.log + n2 N r% _; I
# e8 y# }: L1 U1 l! ~# ~7 P
[root@localhost test]# cat -n log2012.log > log.log' }# ~# N4 U# j
, X. k& r; F; Q S( _" [6 v
[root@localhost test]# cat -n log.log
% Q% |, s# ?& [0 B G i1 P0 H- G& s- j* f
1 2012-010 w( }% } I5 v% o! Q: r$ _2 t4 W
. s9 m f6 ^ P& H9 z 2 2012-02& } v8 S7 G! q3 j/ ^ _9 C: P
4 \5 q( f( `* p b. T/ o
3
/ V2 O9 t/ Q# ~) Z
2 [0 Q$ ^6 F- L& V 42 U- n8 O) P9 B. L; m) V4 |! R
3 r( G8 C3 S! m: I9 P: t0 Y 5 ======6 n4 ~/ k9 A5 g
& |/ r5 K+ r) `! d4 w" ~; b[root@localhost test]#
) P. O6 e. l& v0 ~& a0 n) @1 n! n! P' ?3 f
; w3 {& p# W9 J
实例四:使用here doc来生成文件7 D6 s! @) L9 \5 j5 _* H* y O1 ]8 y
* o$ N0 b% {' z5 |
输出:
" E8 C4 k. l- M( O3 c8 {4 x! g0 y* f
[root@localhost test]# cat >log.txt <<EOF
- F' G! M6 X* D1 _ O* M
. k- G9 o! k6 f* ]6 H" c> Hello
6 ?- j, J& e. r# t
" q8 j% d3 n; h> World, y# E7 m( @5 M. U
9 k* A0 ^ n3 w& Q9 g
> Linux& X0 V( V! N/ n2 I% [# J
* R+ D9 I! R# n5 `% x) D
> PWD=$(pwd)( C6 b( Z& u" B
8 q9 w! k W1 M( l
> EOF
1 R( G$ m# X# k' b: z2 Q6 G8 [: @% ^1 x5 d
[root@localhost test]# ls -l log.txt 3 W {3 S" r% m' [% K$ v/ i m
* T3 A$ E. ^4 X n, P3 q9 B( T) C
-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
7 g b2 s$ B1 b& d* ^' U
2 X* z, s: v& p) R: V[root@localhost test]# cat log.txt
) z9 y$ e0 X k/ B) r F: O# Z
- F( _: k! c0 n+ e2 w( o. R4 ^Hello6 C2 \8 a( X% h" K, O" a
. q7 e+ _! Q% G2 eWorld
. p; y8 R8 v( ?; q3 T
# T7 {, [, S3 n+ _$ M$ VLinux
Z% }& u) a/ |& ^% q2 b6 C( q7 F# c2 I
PWD=/opt/soft/test. W) Z& C/ h7 M+ W3 M
. h& l% ]6 H1 U
[root@localhost test]#( K" g+ e& [& o2 v
' W3 P7 E# K8 l- P/ i6 D
& A) X' t% f* b; @# T& ]) b6 w说明:
( h" x( m# B( A$ U9 _) c/ H+ u; [! @: Z- c# T N1 P
注意粗体部分,here doc可以进行字符串替换。
' M/ N" Z6 q% s6 V2 Z8 ~- m
0 d8 x L( w3 W- _; G
* ?6 z) o1 t0 |+ A备注:, l! Z; L8 P% P c7 a+ {
9 K8 `0 l6 @2 T$ ?/ Dtac (反向列示)7 D- w: j% u2 D% _
7 H% F: j$ x9 ?" {/ w2 g: r' W
命令:; ~! N' z4 J7 r4 R, d
J7 }; C+ F6 j" L( T* r3 ztac log.txt! S! K9 u3 ^1 ?/ I( u
+ h2 s6 z4 f$ M1 g6 |* w. }输出:" t4 S8 L8 ]% F) |+ }/ v: e8 B
/ ^! [6 S8 I0 f& n7 M/ l# A
[root@localhost test]# tac log.txt
5 x' W/ Y/ d! s2 V- n; z* b0 j8 t5 E2 R" ?) o' Q5 o
PWD=/opt/soft/test8 G. R8 @! c9 o' u- d
% M( @' _. R9 n$ J! q% n, {
Linux( I' Z) [5 A& @: a
# @: |4 T3 x/ V8 @( W5 [4 a4 Q
World, F; n/ R$ r, `" m: }
9 e' ]$ v/ ], D
Hello1 y t4 f Z: H2 J# ?
2 U) u$ o/ k7 W说明:
6 ~5 y1 y7 z- p
& H) S- T4 I5 Stac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
* A2 F$ h: ]9 J, Q. l
8 p+ ]2 W& n1 K" n; F, J& ]* n" }# |. q0 E: R% Z# ?7 S% z& F, B) k
|
|