|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 ' D$ L6 \+ v R( }$ j; _' b
/ j F+ s' t$ @' C
1.命令格式:
. c& J' M0 T% g& L! V1 |8 B
) I: t; X1 a& R) Acat [选项] [文件]...
/ {! p8 Z( d# F6 @
- v$ I" } A& A$ d' W2.命令功能:
! O& ^6 F0 N: z- y
; P: J% x2 m7 ^# ]cat主要有三大功能:9 R: C) w1 K) P. O% i; P
* }9 g2 v. e8 K, G8 V- g4 |" ?) E
1.一次显示整个文件:cat filename
8 k5 c9 V! v, x; d: f. I' R) r7 }+ j0 x( V4 K
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
4 g D u+ k) t5 ~$ g! _( E- H9 p
! N5 h9 F8 |" n5 g# f3.将几个文件合并为一个文件:cat file1 file2 > file
6 ~5 G* i6 M8 }6 B. c$ j
3 `, ?8 r: |% Q3.命令参数:. j: U T% A2 V: I2 ?7 d
6 Q9 [" O$ ?. k2 n, y: A! t-A, --show-all 等价于 -vET
+ u9 F- I0 \8 W1 d& m) y, f' e6 r+ E' X- L+ E
-b, --number-nonblank 对非空输出行编号
, @! C! T6 h7 g& i g* k; _5 b: V& ?$ w4 b7 G
-e 等价于 -vE! V. i2 E# L' \3 N+ q" s {9 K4 s5 L5 ~
! Q& K% t; ?# g1 S6 `2 c
-E, --show-ends 在每行结束处显示 $
2 G- F, l8 S) b3 K7 P" c/ n$ H' o9 |8 N b
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
9 P- v( |' I w" _ J3 o8 D& g+ T8 R+ s! ~
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
. A1 l- i! d/ {2 O* S. x8 R2 C; B0 i7 D7 S
-t 与 -vT 等价
. N: d" V# Z) J) F" D
) I, o9 b, I8 F/ F* A-T, --show-tabs 将跳格字符显示为 ^I
7 N9 }4 Z9 l3 y3 _1 v( K/ C& G8 i; z3 b- ?1 ?0 R
-u (被忽略)( s* b7 Z+ T! {" e
( o% u$ S% C9 `6 Q& E. ~7 e' U7 o1 i-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外% ]! K: {( A, L: U
2 ]: W# r/ e& f) Y+ Z4 Y4.使用实例:+ S1 Z3 u) I+ N5 E, J- W! H9 g, o
& E% R" t& F! H: K' |* ~+ T8 m2 i' c- t1 k
实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里2 j' B! u* L% S# R* y! ]" D$ h/ v
, ?' r$ s/ [( ]9 d; k5 H' I
命令:( \5 G- u$ C" X6 W2 Q* W
4 k0 y5 \' T, e" P5 I
cat -n log2012.log log2013.log
5 l, J; o. ]% Y" ?( ?1 v. k# ]/ A; U' l
输出:
' z) F8 }) [' R! N
. T" ]+ n( |# m) m9 x[root@localhost test]# cat log2012.log
! b9 s. H$ F% V' u6 ]. F' q, k* n8 m
2012-01
5 O4 M2 Y- u) Q3 \$ y
2 C0 Q' v! U# w' k2 c2012-021 z: p# Y, h+ q
+ s9 ]# {% x# Q Y0 y! |' k% l
, h" C( p( M$ Y/ r
, `7 V9 |# |" [; M+ w======[root@localhost test]# cat log2013.log ( {1 g" K/ y& p) @& K* w. v* h8 }" W
. v( R$ y+ Q4 r9 A5 V2013-01
0 j3 i- R0 O* n, s: Y' `9 B H- D% ^) I
2013-02* J9 m; x' L9 k' i5 }/ d
! o' [7 z. H4 Q T7 D+ y0 Z9 Y, z
# z' G8 O+ @' X% b: j5 v2013-030 K/ C/ w) l- \' g7 [
0 l: ~1 b, n: y' w
======[root@localhost test]# cat -n log2012.log log2013.log
* Q/ g: w& X6 j, r) j8 {' E5 z: D4 ^
1 2012-01
3 a* f( ?, J- e& l( [1 o3 x4 a6 g
% q9 B2 F1 f4 F/ _5 H9 M 2 2012-02
/ e* C, `( J ]1 h# I# q
( d! @, D6 }# N 3* f5 b8 ]# O. @& u+ ~) n& t
) c U# ~ @# R- b$ i7 o
4$ E* ?7 X9 M5 ^ @' H. D5 c
9 M0 w4 l& b: C7 ?$ |. @ 5 ======
, q, N8 d, T- b
! Y2 s# z. ^5 }' p$ k2 ? 6 2013-019 h9 ^9 R% n9 {$ R! P
5 x& G1 W1 \, a$ L 7 2013-02
& t2 {/ R/ L9 t/ K
9 A7 p2 W2 Q7 X/ } 85 ?: |2 t4 f4 L6 t
- h8 F' s! q. }* E
9
' s& J: k2 D* J
7 r" f, I* ]+ G; L4 m+ n# U 10 2013-03
: l: T: T. n8 q# H1 y6 a8 R x4 Y0 ]6 k" h1 p9 u# t0 I3 o
11 ======[root@localhost test]#
% M( ?+ X4 q O! x4 Y3 o0 a5 u* O1 m
3 @2 m+ ^1 v$ ] k9 Y说明:0 ?$ C- ]7 ^6 ?* Y$ Q- @- P
5 h1 H. l! O% d3 g8 T' X0 T8 ^5 W% g9 y3 Y3 L/ w: z. `: l5 g. F# h! t0 U
实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。 0 ` H' S! t+ O$ @. h) `5 `+ ^
& y5 r" y1 d0 x' F- T5 j
命令:; w3 x0 J: e9 L( `* r. P
0 G- |. \+ q, T; Y
cat -b log2012.log log2013.log log.log9 i/ M9 @ z& U H9 r
/ _. j8 @( A3 {
输出:# f2 J( R6 a7 d L: n0 X$ ]. s- H
+ @% c) U$ w* j s
[root@localhost test]# cat -b log2012.log log2013.log log.log
1 D% B0 d7 g1 f$ k/ L8 u5 ?* J
1 2012-01
1 F/ S9 |6 T; c' e
# S+ g5 v. q6 J+ J5 n0 i$ e 2 2012-02
4 C" s3 D$ J: z2 n4 [2 _3 ~1 b) Q. I
* i; t: }3 Q8 G# ~' p
! g0 t- W0 z% b5 [$ R$ g4 a 3 ======8 O: \& l( }# Z% U5 x
( W* \, T8 p9 r) G 4 2013-01
" G" R+ D$ e+ W& @' M$ _" F3 t& u. m* G. `- q
5 2013-02
3 }0 | p5 R8 t3 _0 m! |. @7 J
+ h& r. t& b0 x8 X3 A7 M4 ^) R( q* r x4 C2 h7 Y
& L3 Q C4 e' M5 ~! r% w* O 6 2013-03
# `- y' `0 z, \4 m; V1 i. m0 I4 E4 l" T" V
7 ======[root@localhost test]#4 N9 H$ c0 j3 U, F* g) n
8 k1 x, _" ~$ U3 }+ _8 G
( u: u n, W& [; [. r; \实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
+ X, J) g9 p8 o7 j
! Q% v& t" m& P* n( r# \命令:
* o' W( V% F' ~7 Y1 q" ~' r7 R
' Z! y9 R5 I: m$ @8 R输出:7 F$ u) j( D/ H; O3 R7 D
" s/ B6 a5 [$ F. T) U# X
[root@localhost test]# cat log.log
) O( I3 B- H x; G$ E. @: R
" B; M; K" j1 ]. J[root@localhost test]# cat -n log2012.log > log.log( H+ j; o1 C% ]* p
! Z* d( l. u' T: C( K! J- Q! N[root@localhost test]# cat -n log.log
9 t4 l/ [% Q! b- M& @" d
+ o$ b7 `6 E5 y! A 1 2012-01
1 f6 g% C( @6 [8 x0 s! r+ T! s0 q& j) J" ~
2 2012-02) w& Z, g3 n7 ^5 T& `
2 l" k. ^, J4 t5 M$ N& c- o" d 3% S4 ~4 P1 v7 h2 M4 O" ]
5 m( {$ e3 b, \6 H% B
4
8 j# m7 A- ?& w" \6 f& r4 ~5 {6 X x/ V) s0 L. i
5 ======
+ r; E- O d5 Q- P: K9 p
0 e+ |" u6 s" ?6 J- Q[root@localhost test]#! k4 B6 a8 v% v# _- Q+ A) D
+ R# l" T6 ~& J# J3 k- a/ ]
& E, S" ?, o5 x5 N/ y
实例四:使用here doc来生成文件! \0 w5 \& z0 L2 `* x
3 S7 z- @/ M1 |* _. g
输出:
) A" [/ ~7 Q3 p/ x
4 u7 K8 N0 W2 l6 ~% S$ W# K[root@localhost test]# cat >log.txt <<EOF
5 m) R! D' ]8 ]9 ~! i
) k/ B8 j8 V, \- i> Hello
! B% O3 g! M- P0 S$ v0 j
& u& V, O4 o8 ]" n> World6 S$ W" L/ h0 c0 u* ~$ x4 O4 B
7 Z4 S' `, d5 O, a+ Z
> Linux
' C$ g2 W8 L9 V# B5 k8 `
- K1 Y! g$ \) o: Z( F, F% D& \7 c& j> PWD=$(pwd)
. }- S+ E% F# W$ i4 `
z+ j8 T" d- l9 I' f' y> EOF- J1 E/ e. R! r8 |; J7 s, b# Q
6 p7 g' c7 b/ j% t3 e; y[root@localhost test]# ls -l log.txt , p8 |5 }- U8 C/ |
( }) [% @$ z: N-rw-r--r-- 1 root root 37 10-28 17:07 log.txt2 o# t( r" L/ U; f) G- b
& q( v3 n9 v, h[root@localhost test]# cat log.txt ) V5 I+ T! M# c1 R
3 Q' V) H2 X o" G9 N% M2 e
Hello$ B6 J( X+ ]8 A9 F. h) s
9 c2 I4 K2 t2 d0 q6 ~8 i* u/ {World
2 N% S* K! R0 d7 y0 H- `
3 A0 N6 T+ |; P' PLinux
1 ?5 f7 R+ Q9 S2 N) r& p& S1 H+ X- h, n$ ~. Z% M) q) Y
PWD=/opt/soft/test3 _7 g2 J$ [+ j7 M
) F) L/ B5 K0 d6 K$ d1 k[root@localhost test]#* z! _7 Q3 y0 } q
$ Y4 B- \, }% D
# g4 A' Y# i, E" _6 [7 \说明:
/ R2 F L6 D" v" t D7 J# q7 ^1 J! @! O% r( I, L. k
注意粗体部分,here doc可以进行字符串替换。. I* E& T2 x6 I' v( r" L2 I! X# a) G
! I+ b1 s9 @6 H* M
( q3 _- s* b4 U备注:
! h8 j$ O: e* ]; @, r8 v1 D" @
: q/ H8 I0 `# v; w4 [( p+ \# Btac (反向列示)
( f. i/ _* z. P# r ~; a
t: G ~! o) C8 A0 z$ O8 n$ a命令:/ I* A; }% {0 O( X1 n
3 G4 ~9 d+ W4 X! m* b! b1 [tac log.txt
7 v2 e; L4 R+ K2 ?& H
, R& m& D9 ?" n" H6 [输出:
. K5 C5 [3 ^* Q$ l* K# y+ ]
' s o# `5 Q* c[root@localhost test]# tac log.txt
2 I3 \. y. R" u+ N2 a9 Y7 n& j3 ]7 I- S$ o
PWD=/opt/soft/test, D8 D! K2 Q2 F
2 x% A9 b$ M! x% Q1 Z; X7 fLinux9 R- d, g7 C" e, q
& e7 @9 M1 L. Z& Z- b5 EWorld
, C3 Q) B. q6 J; w% |( K8 d1 { g# [5 G7 k# r
Hello
7 J ]- E, b# t; E; E, ~ b' z5 I5 R2 N; \' q: f) |
说明:5 G& U& L9 k5 s, E# R& X+ n9 t9 N7 I
9 h# ~/ d9 @- H$ j" W; f
tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!; k% l) n7 Z. j; v
Y( C( j5 X! ~
$ M, [# }- Y! z0 ] |
|