|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 1 v8 m, F; j! I' T+ q' U5 c/ Z2 \
, H) h; w) [6 l& ]; Y1.命令格式:- v- ?4 C, j+ [1 J3 c; c& y
' ^4 A6 Z! a$ Q' t! L# G" [cat [选项] [文件]..., L8 L6 b3 z7 [/ `/ K% r, w
% y2 l, `) W& T$ C" J
2.命令功能:% p. H0 D1 w) k' a( r
7 J; W& r5 c3 a; u0 h. h
cat主要有三大功能:4 F8 W0 e: J7 T) f8 Q2 a! t
7 f2 z$ ?" z V, j9 O ]# ^( t+ V
1.一次显示整个文件:cat filename" K5 c5 q5 e( ^. _0 T* n
# n, d( p, o; I" a4 O# \3 B
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
% l4 r/ Y/ E3 v1 Q# Y' q- {4 [& H1 n Q1 @3 ^
3.将几个文件合并为一个文件:cat file1 file2 > file
* P# P2 a. v% E. l$ A9 o, b
6 k3 i) A# ?1 Q J- o% y, q3.命令参数:
0 ^8 Z$ h+ Z+ e1 `* K4 o
- z! |6 X* C E8 ^; F5 G-A, --show-all 等价于 -vET
7 y6 X+ @ _. C. ^ K$ c% _* R1 b0 S% _: j! r/ X7 a3 U
-b, --number-nonblank 对非空输出行编号( |# D* D4 E* N2 m2 @5 p9 Z, i
1 K) _( ~4 \6 e* p
-e 等价于 -vE
6 w. g, p+ O6 g- n% D3 h7 j+ ^" L2 M" H
-E, --show-ends 在每行结束处显示 $* g5 D. j3 k3 t! q) G% U& }$ `
1 p; c1 T k6 k5 i7 X-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
4 a) b J. |) S' E+ N4 R( q9 Y
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
: C* B" z8 T) `+ r
2 m" @3 v; O. {1 ]6 c-t 与 -vT 等价: S' D) N. ~3 c2 c! m- [" @
. @7 v5 O! f, C; \0 G* W. l
-T, --show-tabs 将跳格字符显示为 ^I$ Z" Q; H! n9 O$ ~6 }& B
# Q# F* W( P( D-u (被忽略)
- D7 e* z d. D/ V; j- \8 m6 ?
+ C: T4 Z3 s3 Y! l/ A" A4 A8 i-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
' W) {6 E0 r7 @& b9 K8 O& T; `* ^: ]( ] ` ~" n) e
4.使用实例:
+ P) Q# } M2 ^9 A+ q1 N
6 \6 S$ _8 T) ^' |' T实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里) b( V/ g7 G/ i% r
8 Q! e/ b3 a' v0 x命令:
8 s% W% \8 x9 J8 J, h
7 z) `* ?. [$ x8 kcat -n log2012.log log2013.log
; {& a0 F2 e8 n0 `8 s f0 N4 x8 D4 h2 ?; R3 ^
输出:
7 N( y8 ^7 t1 D& p& G
5 v2 |7 ?6 L- X[root@localhost test]# cat log2012.log
8 M8 T8 z, F2 ~, P2 [
! H1 D( x: P3 A0 ~4 J! H2012-01# j- t9 ]/ Y( U
6 k/ ?0 }0 M1 A" O( Y* d
2012-02
6 C5 L. d( [8 t" B }* S: v" y4 ^! D0 z
. P% w, c( r, C0 Q% G
I$ }5 C0 F3 L
======[root@localhost test]# cat log2013.log 6 k' z4 k! g, S0 a$ q
8 v4 `$ c9 Z4 t- e" _2013-01
$ c1 ?7 @4 R! p( z9 [; U- {
; l8 V! g, A3 H9 a0 S6 [9 _0 Z7 a5 U2013-02
/ T( ?6 @( f9 t) y% Y2 y$ i% O6 {0 P5 J0 p0 Z
3 V0 q3 h4 i9 |, \
- V4 G3 B) P* ^2013-03
% ~9 Z& r0 c. U: x3 k
9 g# q0 n; c9 Q: m8 [======[root@localhost test]# cat -n log2012.log log2013.log
! R+ W5 ~: S2 a3 o% v( g' B1 Q6 g6 k& B2 {- r
1 2012-01
/ h( r. `& F/ Y A, c F/ H B
3 d4 [$ \: P9 h6 a7 D 2 2012-02/ U m7 G& W2 z
2 `3 s6 h: t; p. f 3, u, Z; F. q3 A
( `& S+ q& e! N7 R( k. C6 q
4/ [! o' { k6 J# ?- r( @
~2 j. D: Z9 k
5 ======' _3 _5 r: j' O! Z
6 |8 C) i3 G" k7 B! Q 6 2013-01
1 I9 v6 W. S" ~9 v$ m
! C p* ~" k% s" a5 M, t/ O: ^ 7 2013-02/ _. r( O! x6 w, s: r
. R- |# ~3 Q# i" X. s( e 8* q S8 I. k/ z) C/ q: A
5 \3 \5 [) x; F" `0 T* G3 V2 l
9
7 v. `& D2 Z! P) _$ h) D
# Y( A; r. O4 @% j+ V$ O: V 10 2013-03 Q3 `" ~) X3 Y/ _% X
n% J+ g' @6 Q! s; ~. @
11 ======[root@localhost test]#- |& l7 d( U$ L; o- q
4 x, b+ }7 p5 E2 j6 M6 ]$ W) l
$ P# o% J8 r2 h, K$ |4 }说明:! L3 D' J7 L4 N4 d4 [' i& }4 N
! h6 h+ o, S. q; N
, r3 j5 {8 L8 `6 X, `, ~
实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。
2 H/ J @/ ~0 J( p" d3 j: j' G( W% t: X
/ F5 ^: G6 C" R* G4 b命令:4 G) ^6 i/ r. e) Q! S8 Y% I* L, z
$ J5 E# u- [: J" }) Pcat -b log2012.log log2013.log log.log
6 Z; e+ @* b6 _! G7 L. V7 ]& |! X
输出:. I- N) n! `1 Y# M8 W' A
6 b7 Y1 Y% o4 @( Z[root@localhost test]# cat -b log2012.log log2013.log log.log
: M! p8 f3 Z- O' u4 [: t
& x7 b9 O e$ k3 Y6 Z 1 2012-010 \6 `, }/ o; Q6 P/ d
# A0 v) ^8 x) C; }" s
2 2012-02
& e4 G1 A6 {) [6 N" o) ^$ [
8 Y( F* J/ `. V# g" o* K
9 f0 c: `- K' e. @$ _/ M N. z% C- E
3 ======) y4 Q% n+ ] e2 H5 ?, i! d
: u* N+ ?6 o& {9 n( S, m 4 2013-01+ x8 F* z; f( e; x
( m9 U2 ]! b0 G5 H9 K8 y( t
5 2013-021 a( N4 w* E8 x4 H- C
: O$ |& z* V1 T, O) ?4 t) q# S
8 _" ^( P; M+ w
; w6 t1 F& a. e2 s% W 6 2013-03- k5 T6 H `! V, X
) M! [+ s& q& l; c
7 ======[root@localhost test]#1 X- F$ t7 d2 U+ [5 T* q
]" x# w2 T( T
3 |9 G e) o9 ~. v实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
|( j9 Z1 B& X) B
7 V1 [0 ]# j) |1 j: n7 z命令:
; u! ]+ b) T/ A1 c5 C! U( N+ D& Q* y
输出:
# Q) }8 M. E" V' t# ^
* ?3 c1 ~" X$ V5 g2 t* ~. b[root@localhost test]# cat log.log
: H/ Y4 K4 C% ]/ b5 _% z& J" ]1 m% s
[root@localhost test]# cat -n log2012.log > log.log4 w1 q2 m2 K. G8 S
& G3 J1 X' C' E ]! K1 {& z' k; i[root@localhost test]# cat -n log.log ' h, `; \' s. N5 p/ I" A- G
3 C& J3 `4 }7 d& K0 m5 L8 v 1 2012-01
- ]) l J8 C; ~5 h. Q: X+ F9 J' i6 J: C: o8 @
2 2012-02
2 U/ C' S: v0 @, C7 ]* n: j: B, v- J" w* y2 c
3/ S* f+ I# W: v2 [' T* @
- F+ p5 g$ h2 X! W/ o, u 4
, R: U: I% M% {& q" p0 Q
* h5 ?( [. n9 q% v+ c 5 ======6 O, L& ?! Q. ]( Z( [$ V
. E7 [) c/ {0 ^. M# Y e
[root@localhost test]#7 S7 C0 g0 }5 l! u; n* f
6 c/ G: _6 y. s4 Z' F1 r) L# ~
& N% X1 I/ g, t x实例四:使用here doc来生成文件
4 ]' |: p* x2 u1 ?
' P+ ]& v1 R$ Z8 G输出:
4 y6 R1 `4 {% e& W3 ~' e4 L( o
6 x9 e* ^( z9 }* w) t9 x8 v[root@localhost test]# cat >log.txt <<EOF/ q9 y# {/ H1 ^3 K; \
) Q3 ?2 S8 Z! @! U; F> Hello& S2 I4 p4 o t7 Q
5 M+ U ~3 B6 I0 |
> World
$ b9 o% D( z& _$ y' `$ V1 o8 | s+ W! _/ A5 A
> Linux- k+ ]) c) Z* N1 ?$ V7 r
& f7 Q- ?' \$ {' R) n5 n' q. a
> PWD=$(pwd): U2 Y. ?* W2 r
; ^+ e) ]0 ]! H* B( k0 e
> EOF: p2 V8 {3 t/ f& D2 {3 L
' X& A2 r9 p1 r& h( e[root@localhost test]# ls -l log.txt / G3 v- I. C. R; m
" I5 h, y! O( ~, ~2 }7 l6 ?-rw-r--r-- 1 root root 37 10-28 17:07 log.txt/ J" F: ]/ O! @3 Q% w# m f
/ u+ o% ~4 a G& P4 L! Z
[root@localhost test]# cat log.txt . q4 z# O) f& s8 h$ A9 V a
) h. M- G/ F, O5 b! m
Hello
, m: ]4 w3 _5 A, H
* H e( d; P+ l' ^. q7 g" _/ xWorld
0 S! Z& l* v3 \* P1 j
$ w/ H$ U* z0 x" e( fLinux7 }& m0 J. K3 u& ], s' V
\+ {( m* k" `" j3 q QPWD=/opt/soft/test
- O# ?5 A6 r/ L" X5 F! F; k, [. o3 A* o
[root@localhost test]#
' U0 l& c! f% H/ A9 `
~4 i7 o6 D o/ O
% E1 z! x# t: O2 ]7 F+ O说明:
$ x, {1 Z: X5 H- Z
# Y) D; ]. G; b$ h$ ]注意粗体部分,here doc可以进行字符串替换。
6 }! W& d& f0 E# \' t* U, M
: m- {/ @. o) O
; L; B5 F: E& ?8 g" {/ X备注:
2 X1 [9 M. b! @$ b. @
" M' `5 l6 j, L6 Z/ y% n7 m& w& _tac (反向列示)
; I3 @+ \4 ]( Y* D" Z! X
% z+ Q9 j* l( Q3 X! ^( R& O/ q/ e命令:. K5 G- f3 y) ?9 Y( x
: W0 q) m3 \# `tac log.txt$ g/ v. j3 @ |% Z$ n
; }: A1 N" u* m$ [' f输出:6 o% F8 b) U) x4 v- Z1 K, F
3 y& b% T6 R$ K" }' y[root@localhost test]# tac log.txt
5 Z# M& F. ^6 L8 `1 _, u0 v4 S0 p2 L6 M0 b5 W
PWD=/opt/soft/test
, |$ M! b" x) _ k, K4 {. p" K2 ?" K
Linux
& Q/ S C# Z. G1 o' m R
9 x6 R& ?4 L7 H- qWorld, y. u/ ?# W3 N7 Q+ T- H
" ]0 m5 @: O# h2 M- g. s" j
Hello u' H4 }; f/ y7 T
' @9 Q4 y8 m" Y: W说明:7 M1 E; ^. {1 ~( K( d
0 p! X- u% M0 D
tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!# y! d$ \% p# U% D5 `& O; Z* G
0 F5 Z$ K, A6 d/ Z
% j( Y& c2 V6 n% E! `0 J
|
|