|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
7 x7 P5 ~! v0 _2 @* S& ~) W, z0 M
1.命令格式:( w8 }6 b; c0 g; _
1 m; E# d0 u4 [! J2 n* G
cat [选项] [文件]...
- o7 P6 C! p7 T2 t2 d) T' E2 h- ]2 p6 O+ d T& s8 a3 I' s; [
2.命令功能:2 F' Y0 G$ M* {2 m
8 ], d* o- Y7 T7 Jcat主要有三大功能:
" Q+ V% V& u- W' {! {8 `. R% }) i, @, W" g4 ^* V
1.一次显示整个文件:cat filename
e. G: v4 Z8 ?% ?0 G7 f: w+ d; H4 V
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.: a4 ^( C" F: j
' x3 K" N: Y* L m- X8 q- D
3.将几个文件合并为一个文件:cat file1 file2 > file% M, `1 I- h# Z3 W
% M5 M P4 p; D
3.命令参数:- L0 X1 |5 N+ k7 U1 d7 e6 @
7 M; _( V2 e6 {-A, --show-all 等价于 -vET2 Z: }% k6 S+ d4 a# ^- L( Z! C
- F# Q% F/ i+ k
-b, --number-nonblank 对非空输出行编号
# o' k7 X( E6 T3 |
4 e5 N: _; w; |, c& J, ~-e 等价于 -vE
$ g* K% n' O7 H8 {' B. Q: B# G, J3 p `5 U: o) @7 [
-E, --show-ends 在每行结束处显示 $$ E" @; Z, v/ f# g% `8 `
7 [" R% ]" l0 K# O' A( ?6 W: [% P% P
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
b9 Y( S4 B. g3 C- w
/ n: z) y" c# q; f" {* F4 c-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 9 j* s; v& g7 P% v& u3 a u* s- T
" n6 T" f4 {* N' a-t 与 -vT 等价3 \) F& `" |" U, K
; K) v, P6 V: D
-T, --show-tabs 将跳格字符显示为 ^I
3 z& O, e1 E8 `, P6 O' P; U/ }! }) n
-u (被忽略)1 Y( r1 F8 K: J
" D! H* A" Q0 D$ i* V& h-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
8 G4 N& p) u/ ]0 A
' h& J7 |/ L7 e, n5 a4.使用实例:% r2 J( G! c' I- @
: h; U0 L5 ?4 p, A% V `/ i; _实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
7 g' |8 S$ `& z9 x; m6 M
2 k6 a. B# f' A7 a命令:( c+ | i8 z0 g8 @0 w
# T9 O& s* O7 q' F1 P2 _9 v
cat -n log2012.log log2013.log / \0 h$ K4 K$ s" G' ~% c% x
! s$ C# x% W# j# b! B输出: G; i+ [8 ^, S% N1 n j. R
% x I8 R8 X9 u3 i. h. O. O4 U3 J
[root@localhost test]# cat log2012.log
7 {- ?7 S+ e; {. |! J/ V* N* |1 V. l9 i& I1 T' r7 h
2012-01) Q2 b. P1 {! j5 W' v6 o
9 M- F' B; `+ n% u+ Q. ]. s
2012-02
. N! P0 d5 P' k/ S
6 f- |, _1 Y9 }* d) X( A& ?; K9 O" p+ i: o( {
6 D3 X3 F! J" I0 u
======[root@localhost test]# cat log2013.log 9 R( v* j7 [+ o) r
8 C0 N5 E: k* Q8 e3 K! {( m
2013-016 i: n* k) g. U
3 w' Q! T3 R( e
2013-02
$ i( o3 g" ]- `) Y7 @2 S
/ u% M* f d( o. z. @- t3 b/ H
! _5 j0 y! e! A, ]* u8 e% P
5 l3 g! p1 p; N( G; H2013-031 a! q* |, m( D- p5 O
0 S- ~5 {5 [# B% P( @' W
======[root@localhost test]# cat -n log2012.log log2013.log ! o, X. I- l7 E: b1 o1 L
0 F3 R; D: v; `4 n
1 2012-01( c) k4 _( g6 ^/ r. U* m
k- B' c- g! n. v
2 2012-02
" G1 U5 O/ u9 L
) p" X$ t' D, G+ p( T; C 3
9 D! t1 i* I9 \
4 l/ S; Z; }) P% t 4! \3 g/ m/ j6 C
# m T1 ]' d N& B) w% C7 i! d
5 ======5 u' S% \( ]1 Q; L9 j
! h( l3 }8 Q2 ~! x" ? G1 C 6 2013-01
7 v4 X, K0 L. n" D3 Y+ d' A) w; Q4 U+ Y- [8 Y
7 2013-02' ?' s! w, l- c/ x9 [0 z/ f
4 H$ Q: _ f7 }( k$ h' m# z 8+ ^$ x; d8 i4 w: ^' K5 |, ]. p
2 A' ^# w2 V) } 9
( i4 z/ o* l) H' f: Q- |- d8 x
( v/ p6 q1 R. b, @) h9 Q# m2 _5 b 10 2013-03# _. ?+ ?6 y# u+ e# p( m
( {# C9 W* ~. z
11 ======[root@localhost test]#: ^5 J4 y" m0 ~7 j- i, A
7 \) B, ~3 i- C& z6 v2 a
9 m, Q9 N5 D3 q$ B5 Z$ t
说明:, e! F+ B/ t- z' S4 s) t% R6 u5 _
- n( s+ V1 o# ^" p& C; c
1 k1 Y, {& a( G! x! N
实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。
' }! R- q3 F% d( c- U9 n: ?1 Y- {9 p9 L, R3 v
命令:! o8 Q# b8 U5 k/ [" d0 z0 {. k( r: P
' `0 M8 b. J# N' M9 M, Icat -b log2012.log log2013.log log.log2 {2 q" U# ~$ h+ k1 {' j
0 ?7 u2 t9 [5 W( X, d
输出:
: ^# |6 \: }9 ?+ T7 Q9 x- |6 x% _9 i {) x
[root@localhost test]# cat -b log2012.log log2013.log log.log
/ T) ?1 U3 O. [, p5 \; J" A. \
8 L; x9 Y0 t/ z* G 1 2012-01
' N) N1 u/ ^; Q5 r4 x, N( i* T2 L' d# z( f6 D; v' A
2 2012-02
2 } |5 l/ j I
# r* q- a& u# X1 o$ A7 {6 M
5 o' M! S, a6 y( q; w
6 c, ~- N) M& e* b5 }8 v+ Q3 ?2 E 3 ======
: I+ w: O9 ?7 `# Z( f9 G0 x7 T- _: D) D1 V! ]
4 2013-01
# @! o( A! C. r& i' a" N- y6 u- G" D8 j. B5 m6 S+ R& o y
5 2013-02
. `$ W+ A) y3 Y
5 X3 z, @, Z' Z2 p- K; m- S+ v! \) y8 C' Q" T" L, T, m
4 P, e5 {) |# p$ G2 G1 W
6 2013-03- E7 Y' Q1 @7 u1 i m f
; X$ i9 k! M; ~$ z
7 ======[root@localhost test]#: h0 {9 v# d8 w
) S/ ?2 o; }* M; O v6 ^
8 d# ~+ @. r, w- |6 e+ F% [9 ~
实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
, V1 U0 a$ [0 K% o% I: m' X. O- M( P' @
命令:4 r [2 m. A: g" ^' G% p$ @% z0 ~
! @ z7 V! q* e0 X( V N2 W输出:
. \4 d8 z# |5 c+ N1 V" w1 R: A6 p7 G8 N
[root@localhost test]# cat log.log 2 Q0 U. ~* ?+ u* G) V
3 u# p) U, D, ~6 ~& ?[root@localhost test]# cat -n log2012.log > log.log I+ Y3 Z$ R- A" _- b
% k# \( ]" W/ c- Y% ?[root@localhost test]# cat -n log.log
. p! d: u/ U, k3 A4 D8 {$ n, V: q2 i, K) |% \- F1 M$ j2 A4 y0 U
1 2012-01: c4 i) c2 @4 T- T$ J: \
4 Q* N/ W, c! n4 ]+ N
2 2012-02% @! q$ v: ~! L) B/ v
5 ? R; y2 K) L3 Z e
3' I+ B- T: ]) M) E! v/ S
) S2 S. \$ Y6 F+ S 4# H. ~2 O" E( ]* ?7 d- k
: n5 W& M. q6 H1 d' D 5 ======
: r8 q2 t0 d7 o6 i% `) g) L# w
. B2 @& d/ ]: ~+ {4 d[root@localhost test]## M7 R( O C# l: w8 w0 S7 f. r+ A* K
3 z3 p9 ]5 U o. v
0 x9 e' l' q$ ]$ U" q实例四:使用here doc来生成文件
0 J9 x R) u: I$ C, E+ @! b4 f. e' c3 k7 G1 W0 a \( N
输出:' C3 b+ H( G2 p- T8 Y
6 {; g0 D* ]" } A; w
[root@localhost test]# cat >log.txt <<EOF! f2 O, a* m9 v1 u" u; l+ T0 h( o
$ E1 \% f, b" s" m
> Hello) K6 q3 m; t U/ }
% B5 j* z& H) n* x0 l* W3 ^% j- U! `
> World2 O8 s' b) U4 r5 [2 [! P1 g
& D- {; P4 a$ z; }4 [5 |9 A$ R> Linux! e, n$ Y: ]/ R @; R
q3 p4 g0 @0 O/ Z0 c i, J1 t5 G
> PWD=$(pwd)
3 L" S d* [, \3 t/ K1 I: \8 u" B" e* U- L
> EOF0 |2 i8 m0 L% G; k1 C9 j, S: r
" w. `! k, L( i& E[root@localhost test]# ls -l log.txt
# I8 p/ \. A$ ]4 B$ u
- k! c( W3 G) Y- I, C' o-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
. j# }* F; G( b. N5 d6 o: |
& X) d% {- Y1 _7 p' M; ]9 a! c/ C[root@localhost test]# cat log.txt
' k3 Q' X3 c( U" i
, T3 D9 j; {. ^/ ^) JHello3 n6 [; Z8 I6 q& u( u2 G) T
1 O% T5 m% f, R e+ \8 ~6 P& `1 v
World4 s, V) @7 @+ I, j7 G' p% O, h
1 {: m) X0 d! W9 WLinux7 e8 n% H# a+ r4 j& ]/ [- Y- r2 _
/ j+ L% E+ D8 a0 \4 tPWD=/opt/soft/test
& F: H1 D2 L8 s4 Z4 c- ^5 a# i
# u( h9 D. b) I7 [' Z W: {[root@localhost test]#2 U/ x7 }/ U: l1 P- K
& w* m9 v8 n; b5 J. L
3 I4 h) B' i/ e: j. } W说明:' P3 u" p6 Z( B$ E
: F+ L5 [( {! \注意粗体部分,here doc可以进行字符串替换。2 v+ q2 x' O3 s% C \8 l; H
* w- `' X* T9 S* B5 D" x: c x+ h: W0 N/ u/ a+ P \* Q
备注:
, Z+ v/ Q# `1 F7 n$ g3 d' X3 u% U( Q v; q
tac (反向列示)
: b5 D: B7 S* J0 @* {
, e/ k' h8 f% B0 u7 T9 d命令:
* f) F5 Y2 K% P+ j/ G6 _5 o
* |& X% @9 _# N! P9 r/ [tac log.txt
- {. r# x) Y- M* |! ^
8 I: i/ M& L3 w7 Z' v输出:
u0 F1 q6 \( E: |
# t2 x$ N" ^% J: R& ]' ?* F[root@localhost test]# tac log.txt
7 Y4 ]8 p& K+ F+ x _2 u' u
" a6 e9 A* V: A/ QPWD=/opt/soft/test
, l: W: F2 O, b( @% ]% [# M0 K6 }9 q2 w' k
Linux1 c) v- ^8 A- {0 J
9 }3 M, i) G9 R6 V ~4 i1 J' g
World) `" l* q# B; A Y' Q5 b$ M, P/ `
' {6 r: t0 i% |) a
Hello
3 Q6 E" ?/ L$ j: `0 W1 I# _0 ]) E! x% I
说明:
! v% f( @% a" T7 F/ E# z" {
: \; B) V' V {tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!; z3 D3 E' b. Q3 h
! X. g. s2 _9 ?4 h) F: i
( @# ^. @2 N$ I" W9 _* C" T |
|