|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 % p& m# O' c6 i2 y3 i% m/ r
8 Y' T) G0 w$ H, s0 h2 W1.命令格式:* t1 p/ f; S* Q) s3 K. `1 f M
; s: P S4 `5 p. g. scat [选项] [文件]...
% ?- ?, Z5 y; ?$ J% u+ {+ ~6 F) T: [8 L' X3 E' `2 a% q& n9 b
2.命令功能:+ _: c5 Y: [7 X
4 D; f. b, M+ ~2 Z3 O( ecat主要有三大功能:1 H+ R9 N/ b2 v+ A9 o
! v" T5 D3 q% c0 }; d
1.一次显示整个文件:cat filename
2 ]4 t; k! V( ]7 B0 X
8 Y9 K- i' c6 |" \" a2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.+ m# O' b; v0 a9 S! j% y
7 i. A5 i' ^$ q: S
3.将几个文件合并为一个文件:cat file1 file2 > file
R% ]5 g% d6 K1 A+ v5 k+ z
5 c$ { ^. g) ^+ w; ]( p0 K0 r3.命令参数:
: N4 A8 `, o& k% U: H- ~# n. W- V& E* l8 J# w; b
-A, --show-all 等价于 -vET
1 g# L3 A/ x( \
2 T. J) c8 ^, j* Z& }0 {8 A-b, --number-nonblank 对非空输出行编号 ^' s- f- n, B4 M8 [ r
4 O+ v. g; r5 M9 B4 T-e 等价于 -vE$ n9 D# R5 O" ~4 I" w& q
. W$ a& v# s6 t6 ]* Q-E, --show-ends 在每行结束处显示 $+ f7 D9 j2 L8 M- y+ ~
4 Q( [& B% ?, ~* R-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号5 `$ q6 f0 s; [* n: o' Q( w
3 x0 W3 N# U# M G) C
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 1 q( _/ L! Q" Y% G
; g7 `( Q7 g+ ^3 {/ Z. M% G( g0 X1 @0 C
-t 与 -vT 等价- B2 {. X% h% k' | o4 w
2 s# _6 m0 \0 {. V( u9 Y6 Y-T, --show-tabs 将跳格字符显示为 ^I
6 l. J' V" [4 C- T) n8 d$ j. |5 ^* v& f# Y8 m9 `1 \$ c
-u (被忽略): Y" ^, F, z/ D0 T8 @$ i
. s* `" k4 s# [9 j9 [! Y
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
# m+ T$ \' r3 Y2 j( d1 Q
7 t) L, N; E$ ?1 V8 X4.使用实例:
- B; t$ I% e! D; L# B: ~) Z. _7 r, q
实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里4 D1 H$ h3 d( W- I
* P4 _7 a$ V1 r. d/ R命令:" }9 d6 i$ {2 |# w9 _" ?
6 g( k( B+ R4 q/ a& z- K2 _ ~$ r/ ccat -n log2012.log log2013.log - i7 }7 W7 o$ F
( g( r8 X& f& G8 A- {9 T$ }$ Q输出:
0 ~9 Z9 L, R- B) R1 f
' W N# v& F: K7 g: u' c/ Q+ E[root@localhost test]# cat log2012.log
4 v" @6 ?0 o0 c$ H* V+ L' d- k7 l: j7 j/ `' J* \
2012-017 s3 S3 D9 U$ Y7 N& `3 r! l
" u N/ ^8 k0 M d- o
2012-02
( k1 g( f, _- P; n; K) O+ \+ o$ e- O
5 q" b& g. F0 I8 s% k+ u
; Y$ Y R& j% p
======[root@localhost test]# cat log2013.log
8 X7 M- l( M6 r5 ^- i' P
) V/ \: k3 i' t, Q( H |! g8 \. k2013-01$ j1 D* ?5 a, i+ P t
8 r# J0 j' B. @* i8 K5 |3 w
2013-02
! E% n) S" r" f) b' b1 K% M& X: N% ]; A6 G+ l+ \. \" T" [
+ i) {( v0 ^ ?" e
4 u) |2 Z2 h1 E0 F: t0 t( Y2013-034 ^+ ?5 e- [& X& h9 y4 X: i" V
1 A6 F8 K: s. V8 O0 g+ j
======[root@localhost test]# cat -n log2012.log log2013.log ; V( A6 @* v3 Q) U, ]! o
: g, l7 \1 F! i5 l* _( _. \* [
1 2012-01
4 ?7 c! T' g) N8 g: ^: N
4 f& e( H' H- k1 n. U' I2 n 2 2012-02
* |1 {, N5 U& I4 ~! t7 o) x; ^; i$ \5 A" V5 C; D
3+ \3 T" r3 f8 S0 R8 }9 j
4 V2 i+ n- ]+ M7 h$ ]$ t 4
9 O" ?! \! L+ ?, h. u% t, p" K' Z5 k7 @/ \
5 ======
+ ?" A( L& i; |# Y: p5 {' z0 s+ L
1 ]# G# C6 `5 B. i+ @) k; S3 r 6 2013-01( j8 C& q l7 r" t$ o1 k# R$ Y( D
! V! _- S( ]4 c6 p* _9 C' ^ 7 2013-02" c! G" ?( T0 {6 D& p* K
' q* T4 b9 a5 Y0 a8 A: D$ x6 z 88 ~, z! x" N: a8 }
$ k/ e6 J* K! N- ^/ Q9 t t 9
6 I: }0 y5 X4 l* Q+ d% E' j0 N% E. T* k3 d. y7 g' @6 [7 i
10 2013-03: D% u. E5 j8 T2 [( ?- \
6 b; P+ o0 J/ o( A% M
11 ======[root@localhost test]#. ` F' }) ~: v8 a( v
4 |- ^4 A2 y6 w+ r9 g% A6 @; e
7 `' Z4 F3 b; u! W7 R- m+ b6 q+ Y" Q说明:- G. s# _1 W, v8 p& M3 R" m
3 _5 g" \8 W* b4 q8 \9 E6 d) L
* m( z) z& @% b实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。
# _: G9 M# ^9 @8 a) Y, p c$ [# |$ A1 _
命令:+ l+ p- h( C: @5 c0 s3 M- ?1 F( I" R5 S
# R$ ]+ ~+ `5 |
cat -b log2012.log log2013.log log.log
0 w& a% f% O4 C) Q7 Z ?* g/ Y# x
输出:/ K( R5 Y( H: p# F
4 C0 W H" B! s: ?# ~7 K
[root@localhost test]# cat -b log2012.log log2013.log log.log
( b. ?; _9 c) \. i/ k* y2 I8 v& D, \2 C1 C5 U8 H" B
1 2012-01
) R% d! `& G6 _) r) H
+ P8 y- y2 M$ X/ _" T+ g$ D+ ~! q 2 2012-02. o! Q: ?, \6 ^% q+ K
9 x* J R9 ? E1 M4 x, M6 V: i2 u% M8 h/ D8 a0 }- t* X
0 h! X1 Y6 U7 f8 @+ v; q
3 ======
% [5 N' Y. R1 ?7 r) Z7 A9 D) N9 _& ]+ h Q
4 2013-01
; J$ @: R0 K- H" l2 ^: z3 C+ r4 \ y
: S9 t; }! ]( G/ M4 U$ n' ^ 5 2013-02& s/ B& a- L$ s- q9 L
1 y* \7 x: B1 A: z( s
% l z- l5 s9 @5 _/ c8 M4 ]; t3 H* {0 c6 }; r5 V# g c' j! ]& i
6 2013-03
8 q7 q3 Y' R2 O: a5 ~! O& G9 i# D6 h9 W* p6 z8 p4 U0 c
7 ======[root@localhost test]#' q% p" s# K1 A' F5 \
6 a" b7 `9 [1 l) b7 o* r
) ~2 Q9 b K0 J9 C$ B实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
8 R/ h# Q' K# _' e) ?6 z" |$ o7 Z" r$ v$ k* S
命令:& ^' a! g' H- {5 V( d
1 a( B$ ?! O7 Z2 F
输出:9 n4 a& s$ v7 q( @. p, h5 P
) Q5 s6 C$ K5 P+ H* }2 s- ]
[root@localhost test]# cat log.log " o; d- N* x) v
9 k' O' a' D# Z: j
[root@localhost test]# cat -n log2012.log > log.log# m8 Q- x6 {1 }3 O/ v O# d( v, q
B5 G6 u! g K2 l s- Y2 h4 c[root@localhost test]# cat -n log.log
k0 K( E1 X# |5 P1 ^1 Y/ x! h' }4 K6 E4 I! V0 Z# ]/ P
1 2012-01- l5 X) d2 q. Z3 @$ a5 b
- y7 n7 M9 Q0 o# a+ N- T 2 2012-02
" K' N7 V, @% u- e& \: v" t; q
- X4 [' [ E- Z: s( I' I# c 3
& z% @( x3 v! a& U
+ u Q( e; N+ R! _# p' v 4
R3 I# s) [8 P- S3 n$ w5 w$ r3 j2 ^8 L6 H9 U4 P+ Y
5 ======2 |( q: t2 t1 l: T# ?
* M( @% k& i" Z* G ~; B: ~[root@localhost test]#
2 }+ W/ Q9 T3 r" {! S4 P& W# ~1 d) s* d- d8 Q7 e. S7 v
8 U6 O3 L6 g! |7 L6 j: X3 g+ z实例四:使用here doc来生成文件
' v6 e3 Z* z4 { {! h1 [) _7 D! n" o2 r- V- T6 t: a
输出:2 b2 ?: V0 h* y- [5 g
8 p1 T1 F5 r1 B! W[root@localhost test]# cat >log.txt <<EOF
8 n) _; f$ }0 a5 C( H
4 W' ^5 W; z8 M, l0 Q> Hello
4 L9 }9 w) w- J ?
1 D6 E' k1 v. N" F5 n> World
6 t( L |% l8 S- s1 R# \7 N; Y+ m/ e9 a
> Linux
! A W6 o4 B8 ~" `2 Z+ n& i. C9 C# V4 S& w+ I R, t: z- H
> PWD=$(pwd)
. `) T; _4 l+ l- [* Z m0 W5 _; a3 W
> EOF/ u9 u% C$ p) P& U1 @% ?
5 s7 v0 c/ f4 w3 a, R[root@localhost test]# ls -l log.txt
* G7 Z; z+ K( P- t4 J/ v' [1 l' N9 q0 L
-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
4 Z6 b! O- w* V- I" R( L
! m; p0 m- `5 z% q$ L% M[root@localhost test]# cat log.txt 9 @$ g9 o% G5 e/ m$ |9 o
# d) c4 `0 O4 Y# q+ B& F
Hello" Z Y g3 S: F* u s* J
4 b, @. Y' ]6 _( a5 S; X
World: K0 u' p ^- U
1 y( V) |( A8 B' f" n) wLinux
. m# h) H6 v" d. X" f. _) N/ U8 q0 t' X" G
PWD=/opt/soft/test
. ~/ R" ^5 |" G5 t% }
/ ]' ]5 {+ s9 l5 {[root@localhost test]#
2 }% z4 ~5 \) [+ ~; j3 h
) }4 B3 [3 Y# F" Q0 C- Q' G o+ k6 g: T4 p
说明:' ~7 K6 J0 u. ~7 T8 n
3 |4 j( x! G- f, g) ^
注意粗体部分,here doc可以进行字符串替换。
" y, k3 K* M1 ?% Z E2 d! H: }6 M
9 M6 b& k* D1 _) {
备注:3 A9 g2 C# p# N% I
* i7 v$ B$ q0 E/ @# z {$ s* Ztac (反向列示)! M6 T7 Z, i W+ j$ m Q8 W4 @
3 ^' k( k2 [8 _) Q g命令:: _: z2 B* c) t, _- p
, t: r- S1 d1 }, ntac log.txt: _' ^: }6 B+ K C
8 b2 ^! D% ~0 p, ~- g输出:
! L2 ~9 c* b. _* a1 w7 h$ | I: J7 ^. b7 o
[root@localhost test]# tac log.txt
* n( Y5 t7 w4 p5 h G6 h4 a; U8 @7 J! G5 y: n5 w
PWD=/opt/soft/test
8 M, P! W" ^7 L! e [% C w- s
2 I: {" q' G8 H+ s7 K2 FLinux
8 Q: ]2 Y" m+ R6 A, z" T( D$ P) j7 C* H" p4 G5 F0 m- k" k
World _0 g, k# v* j3 k! Q" w+ [
. B C* Q9 H8 [
Hello# S+ x5 k; m* p
/ t; H/ k1 z/ t# x B% \
说明:
9 S, z3 V0 e/ J+ f! v( H
9 X: T7 G; G! O* Btac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
- E- o# k6 v- D& Q |
1 x" U6 F3 {. I) R3 v
0 N( P, C+ q* H |
|