|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 0 I/ S! |* j! c6 j# ~8 u6 j$ ^
- I7 K/ K2 V( e+ K, {" b! W4 R1.命令格式: o; ]" T% h" `
8 e* G9 p( n$ K3 U) a2 jcat [选项] [文件]...% P* t8 {9 a5 _. L, Z D- S
* r; l& Y7 U6 U) ^$ V% ^+ ]
2.命令功能:% O7 _) { G" S, I" o/ A
& G$ t) G! {, A& A9 Q Q* scat主要有三大功能:
8 |' C: t5 x( U/ O2 [6 f' f# n" l1 O9 t
1.一次显示整个文件:cat filename D( t( i# L8 [
0 b+ M: U" [2 S& j) v0 T
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
( \8 l2 |7 s/ ^: O' W7 u. |1 c" }! m* x4 `: Q1 P
3.将几个文件合并为一个文件:cat file1 file2 > file
7 E* e( [: }: C; W# P4 W( f$ h/ W. S t, m8 C4 v
3.命令参数:
|5 R" ?: U; O
! j2 i( y; U% q8 W8 |-A, --show-all 等价于 -vET
5 U7 X; S$ D" C
' ~) p, g i1 e4 o% L. {-b, --number-nonblank 对非空输出行编号
0 O. G* g) I0 Q4 ~# ] |
; k( |- N2 d* d1 v0 Y9 ?5 G- X1 e& Q-e 等价于 -vE
( N1 [! w2 d( X; U1 n( b: J3 v+ G3 y5 {4 u
-E, --show-ends 在每行结束处显示 $
7 A: R4 k6 x2 `# E0 X$ t. Q- f u! y' H; D* ^
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号% I. i8 H3 b& d
3 S& m% R+ A' r8 v-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 ?9 m+ N9 W. K
: J; L Y% |4 v5 @5 y/ {
-t 与 -vT 等价! t/ A3 |; C9 Z2 }2 K
' {; M: P5 u' V8 ^-T, --show-tabs 将跳格字符显示为 ^I) F4 g( C, m! G
& D( X! A- O7 t& S: }) w* H
-u (被忽略); L' x5 T n$ \ n' y
5 k) S& r* A& J) F! P-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
( L H" A2 P7 u! ^; e- y
9 J; ~) o' J% K2 i I, S F4.使用实例:
$ |+ ?$ [* L& e0 z+ q. U( A' d! O+ @5 ?. b3 a$ x) M5 l" k f, ?
实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里: y7 E2 f& h% t$ |( J
6 q7 h. q1 C( O; [1 j! g. h+ u5 m命令:$ N( u/ B7 d5 ^7 ?4 s9 g
- N" a4 V: a8 s, m) Fcat -n log2012.log log2013.log
& o$ }) ^8 p) @2 W1 @5 p4 ~: e! M, C
输出:
C# Q5 m5 b9 }' E/ K4 A6 B& K! _$ |% Z9 F7 N% L
[root@localhost test]# cat log2012.log
* ^; X" ~- T H+ N. z
7 O3 S7 T& r4 {/ M) H2012-01
& q% a f1 U t/ }+ ?# z
" p$ D1 Q& C" ~! \0 L2012-022 n) z0 o! o" j6 i* I
4 l# z( u; \7 _/ b* H0 D, I+ P
3 i* \! D7 V, {4 e" j
+ H. j# ?' k8 V7 _" s- v5 f======[root@localhost test]# cat log2013.log
3 f5 z; l) e5 q* _
* Y' u) y. @5 h2013-01& N' ^5 Q9 \! k" b& u
& p" \$ b# S; {! I$ ?4 U, [2013-025 l" n+ b1 [: o
/ o' X' W0 C! O, x" C
( I) J( x5 t# j+ n; j( P2 O0 @
* ^8 z: q1 V, s2 r2013-03" L Z- @4 U9 m: z E! X6 Z! X, p5 P" F
5 B* m, G; @1 i# e) \
======[root@localhost test]# cat -n log2012.log log2013.log
6 w. d3 P/ g0 u5 [2 R4 Q: u2 E0 f8 g! w+ P
1 2012-01/ Z2 ^& n: v& d: p9 T
, J9 e* Z' F" @4 d: @$ o
2 2012-02- @$ u/ H: q g( u; T2 T
9 T& e8 g8 _. M" k5 M8 ? 3! k, Q! O$ n+ M4 T
/ Y. ~0 j% z8 v, D* A. i" K 40 r2 Z2 Q/ s7 t( m- P4 P/ i2 X% h
, w7 Q9 D& ^6 j9 E9 I' M' K( L1 V4 r6 b$ y
5 ======
9 w! N& z1 f8 A' _8 l9 b6 E
7 M6 d- h/ \2 X9 { 6 2013-01
1 l2 _* [. M; e' v$ }* t$ V8 O0 ~: ~& Q$ _, M
7 2013-02
2 y3 I4 s @- r) @9 \5 ^4 p6 G! b1 h3 u/ X* ^
8
; n4 H7 q; B6 g q( o; K9 q7 X( l0 P) j5 G* f; u
99 i6 R# e8 _: U+ W! Q
( f! K. b4 Q* {; P8 E, L 10 2013-03
" d6 B6 }8 h1 I5 n4 {
& [) ~0 @0 l5 { G. k. c* a( p( a 11 ======[root@localhost test]#
2 w2 o9 v, B3 O$ j; B2 I
6 Q; A3 }, X$ V; R1 i
2 Y1 } o# j; R' p说明:
+ H4 X+ W0 D' u& Q
' B: r% p7 ?1 Y7 t, u: E2 ]: ?$ V
+ x! r& O$ n9 Z" _& e1 n$ }实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。 1 _4 G- {. w. a) _2 s( y8 \% p
$ P7 L' A$ p( X! t. Q命令:7 s. U' }) P2 w
7 T$ {7 p1 t- P- b) K
cat -b log2012.log log2013.log log.log9 ^, S7 s/ ~6 y2 D, T0 r+ y8 U7 k
# m' q" _- s& m输出:
, f. u/ X6 [* o$ R B* h$ w" H# P9 c3 S: R. b. x
[root@localhost test]# cat -b log2012.log log2013.log log.log
: F% L5 ~- G6 [' f' b' T
! D: w% c8 E, d4 q" ` 1 2012-01
1 ^3 P, R( w* C) A. P( n+ e$ R. `
- v w; g& w( T7 T 2 2012-02, m, b7 G- ~) H8 I B
8 y5 p: Q: q6 G; n' B$ W7 L+ X' R4 Y
9 R+ Q5 m$ _) r5 u+ u: w0 v
3 ====== T) u( M I8 |* O$ }
: M2 p. j2 p8 ~' c- v$ P0 Y% i
4 2013-016 i9 L/ i6 S0 M/ l- M( r& x/ b
: C7 J* |. I, n5 z* G! A 5 2013-02: n' Q; N" R0 [
: ~, p# k* H/ U) @+ J. \1 B/ h, U) j4 K F5 j+ ~
( I$ P; J$ ^4 b. X+ N+ v
6 2013-038 R! [2 z6 C; u5 K1 Y2 ?/ M
! c" e% y6 f3 N3 ~* z 7 ======[root@localhost test]#- H/ E! w3 R9 b% l/ M9 c
+ b- u8 g, J8 f) d) g% x4 E2 _" t
' K" A3 e! z2 P- D3 e5 ~实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
' S0 [9 C0 C2 y$ `& p+ w& U( [+ J/ o5 x0 `
命令:
. `$ A k; P/ i0 O! b4 E! D2 [; |
输出:6 a* d1 ^+ h* b O. Q
+ p& ^$ \! ^: Q% d8 q) s9 X
[root@localhost test]# cat log.log
7 ~/ f& ^# ^* ~
) \7 A8 J O" ~: e, o c[root@localhost test]# cat -n log2012.log > log.log* w2 P1 r j% U* x& V9 `# `
3 E, Q: L; k8 T6 {
[root@localhost test]# cat -n log.log
4 X# z G% A `4 {, u; s; B, t; S' C- a: s7 ^' `, M& u
1 2012-017 _ A1 X+ C" ^7 m2 d8 d) g
3 _9 y" Z6 g3 U2 G8 p
2 2012-02
$ t) O- f! Z/ {8 \ z9 G4 o5 R9 |2 V+ Y
3: N1 t' i( U% ]( Q7 ]1 l' ]8 ^
: ], E: J9 i" ~2 i 4
4 }5 @8 X9 l. B8 J" N9 o
( w" ~5 Y6 {9 i9 |" p9 i 5 ======
t& p& X/ B: m
9 q/ N1 J* \2 D" q2 ]4 e# A( o[root@localhost test]#
8 J6 v2 W* Q5 o) Z" _) e
! K. f5 [: a$ B: f1 t6 x- G. l% T( j6 u
实例四:使用here doc来生成文件0 u/ q& P3 B' ]* K- U5 p3 o
8 {4 B3 J# k0 E' \输出:
) W* [: `. |$ I1 v
v. u/ K8 D. T- B+ e$ z* d/ s[root@localhost test]# cat >log.txt <<EOF
) z, {, \, T' U7 Q' f5 M; w! O9 a+ n9 \0 q8 c B
> Hello O0 l% O9 G. z6 I: k
" c9 ]' _3 k3 ]1 f" b
> World
+ D$ h. f* I O9 f8 S8 A
8 D4 B( m% d5 f& Q* P& V0 o3 M> Linux
' i3 U' l( J- V# m7 m7 l( x
: L9 M) W/ b) p/ h3 n2 Z' g4 s# S& a> PWD=$(pwd)
[: {( T2 Z6 i8 z6 m( p8 w* T* G9 c
> EOF8 S L3 x4 p; x& @8 N
5 ^9 g; T6 p6 x8 M
[root@localhost test]# ls -l log.txt ! _5 M* {* B& T4 ]& E
# e$ m# D+ @" h) q/ [! G& ]-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
2 l. _. m8 t$ [$ A$ ^/ v( z7 l# i! n# Y7 H" X8 S
[root@localhost test]# cat log.txt
5 o+ r, H* \* p) K3 ?
# |9 [( r6 u' _1 c, x j+ M4 \Hello- U6 a: } R1 [9 n# T& A; ], p
* t1 W, }& b4 w
World
+ m- N& E' O1 w5 ]# B6 v$ g+ l' K+ ]9 S
Linux5 `5 J% ^0 E( ^' {, P
# h) t1 K. q6 {0 w4 [9 NPWD=/opt/soft/test
5 p9 s3 L Y9 w$ R, P! x
% _2 F: U- S$ t r2 N* |[root@localhost test]#
3 p% u- e& U% g3 _+ c _% h; A/ {! B4 Y! s. i
3 d1 H4 ?' [2 V6 I; S
说明:: y* S; r" B5 @2 x5 r) C f- w
% x4 \, l! M" `- S3 v; y
注意粗体部分,here doc可以进行字符串替换。) C V0 r! w) Z$ X' g, X# P
" W5 i9 }1 |# y- U$ u# u9 u: v$ Z ^' r. @
备注:3 D4 Q, p% G- U6 m7 e9 Q- |( g
) N s: k/ A' G2 J4 ]( {( B
tac (反向列示)
( {0 o/ E& h0 h' ?
% t7 `+ Y5 W) B V命令:
3 A2 e( Q$ Z1 ^! C9 h) Z; I/ ]5 M: K" z
tac log.txt
' ]; X' \, Z1 i8 |) D% x6 B& I: r: v5 q- k
输出:
% {& C; n+ e+ X/ c( T2 F4 S: b! n8 ~3 Z/ V
[root@localhost test]# tac log.txt
- ]. o9 b3 g5 q2 G( `- I( z+ X) L( T% c# V
PWD=/opt/soft/test9 u) K7 m8 ?" A! V" I! d
9 x5 |2 D5 H( d* g6 `Linux9 d5 |2 X6 U! Y$ L; m
' @8 I) I- J" z. n7 tWorld
0 u- Q; l. d7 `; d+ x9 @) j9 U
: j. K3 A3 R% e5 YHello
* O) n# ]" N9 C+ e7 l, Z( h! C; ^# Y6 O% d( ^/ C
说明:8 U! i7 t e K, i
% Z- q ^7 u+ }# `
tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!% V" ^1 w1 z$ q: b8 V
5 H% y6 B; b* I
" n [1 k" k5 S9 f |
|