|
|
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
) J+ \6 ~3 Y7 c1 _$ V1 D4 H* P& q% |# Q+ W" k% ]% c: s
1.命令格式:8 b, y7 f8 E4 ^; w- E
6 q8 t0 J, y: \6 Z/ }cat [选项] [文件]...
7 V; `$ @) ]! Z9 q( V [5 b& n0 F6 L* C
2.命令功能:+ V* w5 b( M2 U- a3 h3 o* B$ _" C
5 i, D$ C+ Y. ?6 Ocat主要有三大功能:9 N* E, h2 W5 P: _$ F/ E
1 x! W" G y+ q6 B* I; w6 y
1.一次显示整个文件:cat filename$ _) y6 i/ X, @. V
1 N S" r4 s7 Q8 w
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
9 [0 K4 [* K8 o6 A: l
; \; E2 y/ {5 P% h& Z! D- G* z/ R3.将几个文件合并为一个文件:cat file1 file2 > file) F# ~7 B/ R* t6 I
( N! Y; }. ~' f& i: @; w) v
3.命令参数:
+ _3 a. I: n! [0 G3 s. J! R8 P; T4 v3 E
-A, --show-all 等价于 -vET
% P+ j7 M6 r" b; U' O0 |
: w; |- }! L6 W- B; |2 C-b, --number-nonblank 对非空输出行编号
1 W! z( ?; N! g+ v, g3 q9 X4 P2 U4 S
-e 等价于 -vE
! R4 |" ~6 n& b; L% z
# M# Y0 j7 K6 u2 e' Q7 n# K) M-E, --show-ends 在每行结束处显示 $8 M# o" h9 p6 j7 {
& Q, P' B9 r3 W1 T/ R-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号" L) d& k/ N7 U. y9 D
2 u' X6 S2 V; d4 R, l: [$ w/ b-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 ~0 X: J/ S0 S4 N
( W9 w- \3 }( b: ]" O9 T* B
-t 与 -vT 等价
) _0 J p" l/ G4 f' @5 ]. }( l6 P ?: ^" ]% N* V% Q4 a% n& I
-T, --show-tabs 将跳格字符显示为 ^I
' L( J8 w9 R! P6 y }1 t8 z- ^, I* ~, z
-u (被忽略)
3 F: e* Y3 a; c
) P# i2 C" {+ u f P4 t3 o" D-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外' H { D2 M1 s/ A3 D, G% r6 u/ `
6 q, T! {& X# i, d' G, o7 z3 |4.使用实例:
7 f! X2 {% k6 x4 \6 ]( _6 {, w0 L, r& n4 }7 g
实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里/ d7 [/ M" X! G* P% L& N
; D. G/ \* Y2 \4 M+ W
命令:
" \1 C; d# N1 y# Y9 M+ z M, @: b0 y5 T j/ T
cat -n log2012.log log2013.log 7 _( }: [0 P, C Z
' m! ^0 q$ j) ^5 }8 W6 ^输出:* S# j" @6 k& [/ D; I
d' G! _$ z7 q3 R" H9 l: M1 O5 a[root@localhost test]# cat log2012.log
g2 U2 ], u5 E! K
3 D# ?+ N% q6 f+ D! L, u2012-01+ u4 R* P( k! F0 l2 X/ ^
* s) r) s Q; w4 ?5 d! b
2012-027 _9 {& ~' W7 j, m$ f
! z" t3 P/ ~, K1 T0 N
% T+ \+ z2 u: o& x# L8 C1 w! T1 e, T6 J
======[root@localhost test]# cat log2013.log
T7 v; Y* p5 S/ |
5 p. G( W& l2 e, e2013-018 h& k& D/ t8 R# ?, O
" v7 O0 N: f4 S4 o, R( L' i, Z! O
2013-02
/ X, ~3 L+ l! j3 f- v
" r4 V X8 U& b, [; R/ |5 K V
/ h; m7 |* U, a+ o& i$ ^1 t D
' y/ R/ e W) f0 {( c$ `. K2013-035 b# Y$ f6 k* b9 R! g
- s& D0 W: R# G
======[root@localhost test]# cat -n log2012.log log2013.log 5 Z j& b7 y$ F- Z( B5 Q
. V# |, K0 f% P Y7 D$ }5 A 1 2012-01
: J' n7 }. w. A) r! f# Z
) e, }# y- R3 {1 }- R 2 2012-025 s6 ^2 F$ \3 K6 w1 m
9 T. y) b! Y& O 3
; m. U) ?& s3 q6 H$ P
) J! U) [+ d0 {" q4 q 4
* w7 H( k" r' ^( x" X# {0 A, {; s6 }* ~8 t# {9 k/ @. S4 J
5 ======! K2 H2 J% n% M9 x) @
. g. G& q- Q5 b4 r1 N% F' B0 d 6 2013-01
0 B: y; K+ f ?9 R M" I& `% {8 e4 G/ H ^8 @. H) ?
7 2013-024 p0 t- O* N r- U% P
+ o7 x& r6 g; U2 A# c 8! M7 h% t% Z% G; x
$ _8 d+ q3 S7 ~( J! H* V! l
9
) ]4 n. `8 \" \" v- m5 j
/ d& m" L8 j; S+ H- x, U; Y+ c 10 2013-03! d9 m" _ W& t' S, L1 R& L
0 a; M2 z9 G! s2 l 11 ======[root@localhost test]## E7 N% J; c/ Q) S+ x' ]
. x0 k4 K B+ ?7 r- H3 o) m
: Q$ j% w! q! H4 B' r说明:
5 U) y; _/ f) g1 G7 P
8 x- n" b2 X g
' P i: d) V& [2 Q3 h, b实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。 3 o4 h' I% g. p( C& L
6 o2 W( W2 K- L% x6 r7 R( L- c命令:- r% C* ?) S: Q
- g) d# }( J' C. n/ d- M
cat -b log2012.log log2013.log log.log
* \0 |8 ^( q1 R' J i# S
7 ?; n% F5 U" y) _9 @( Z输出:
+ w4 X, V- ]% v( ]* E: E$ R( v6 g9 O: w% E1 v* R# i2 N9 R
[root@localhost test]# cat -b log2012.log log2013.log log.log. R2 }$ m5 \! L/ j; U
: x0 ~% R, s. F! Y( ~
1 2012-01
+ J9 d i% X1 u" J. ~
, t- x1 @- P1 e2 K& z5 E7 ] 2 2012-02
: l# b+ T4 [% O9 N
% r) h0 N' V8 |! I, k7 }: q$ [
" L$ w# h9 H0 e
( s9 K8 o2 v7 d 3 ======
9 Q' u/ i# F/ L( T4 p/ B, _, w
/ A2 m0 X# i% }* C; j 4 2013-01
# {& S* f; |1 O3 f9 t6 e* C# l; s$ G" n
5 2013-02. r3 g6 F% M {0 o- d
+ M' R5 C) S$ @" h
S2 y, T6 I8 Z, [7 R" e3 o* ]0 ]( O6 T) G2 {& E, r6 \" \! A
6 2013-036 _" n! F# L0 m8 n
1 B: A! }4 F% W& G4 ] 7 ======[root@localhost test]#
- G( o4 v2 J, o4 T5 c' D8 k4 ]; T; q0 c. |! E0 O5 q
* w$ O6 X6 r7 e% \实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里 3 l. l6 I& r' o
6 d, r, d3 b3 y- x4 L" z
命令:
, U9 h2 K9 h2 j: A* U$ _
7 z' \+ l" @! c" M y2 K$ i输出:
. i7 P7 Q! v' x* M- s! J( x; m* y
' A4 ^2 S& t& r[root@localhost test]# cat log.log * V. A) i1 J) a6 d! S; W
, p I2 g' d% Y+ d0 G" G5 }: a4 B
[root@localhost test]# cat -n log2012.log > log.log1 q9 M: z t3 m- R7 Q3 h4 q
0 h; U9 @; `; y/ R[root@localhost test]# cat -n log.log
n& `6 {# B9 X+ [8 t C" Q% T5 v4 l8 {1 R m! ~4 M( E& |
1 2012-01
. h; k1 `+ k% D0 B' Y" A9 k: W
! m y# L' D, w% F2 O 2 2012-023 u( k# p7 f& {$ d4 w. H
- Z# B1 t9 W3 k: @7 Q
3( ?. }3 n) k L* [
" h ^6 ?2 n* t: w6 A; J9 c. l 4
`/ t" ]/ R8 D. r/ N4 w: P, w
- }8 X; @* H4 R: p( ~6 N 5 ======- C4 v1 t+ F1 t
: W# O% B8 c* |6 h0 }
[root@localhost test]#. q; l. m% O" ^+ z6 ]& _% j+ X6 `
3 l4 k) B, B8 @9 d1 _4 s9 X: n+ H, i( a/ D
实例四:使用here doc来生成文件+ \1 J4 C/ N0 X( u% O) D- G$ y
% b$ s+ H9 J M; U输出:6 r* F- |- A! J) P: O* I. _
9 s7 F, d+ s7 }/ _1 E[root@localhost test]# cat >log.txt <<EOF
7 @; u5 n$ j( u7 X9 z: m/ a+ f1 S( x7 K
> Hello: r% o; X$ {+ u6 M
/ B0 ~+ ` G) i7 x+ @) [; ^9 d2 k
> World2 h* ^# {9 ~: M5 w
# L% i) `7 l% D9 _. N( o
> Linux( z8 v" [( j; f( K/ I+ W
2 w, I, u5 n1 R- E> PWD=$(pwd)
3 i7 z5 l: M0 L9 }% ~) w$ t/ I9 k0 I$ e
> EOF
4 n. L- @) r' v/ N+ @$ `% w; v, o. \, P' @: U0 t) [( o
[root@localhost test]# ls -l log.txt ) G1 R9 F9 P" J2 \9 X
) g: T ]: b: s
-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
; f0 R6 {$ ^4 n3 |* i4 g( d! c0 m. Y0 R( F9 M* b2 T* x
[root@localhost test]# cat log.txt # G! o2 `5 l& X: L, G( v
+ Q$ Z+ D- T: g% u4 @" U7 ]$ ^
Hello
: l9 m+ @0 l8 J/ D6 x. v/ S6 Z3 a2 S0 u: E5 M; z, T$ c
World
6 g7 J) Y( i# [, S# o: z# X% S# N6 S2 ^! F' E( U% y' p
Linux
$ l; g7 L% ^- r7 j( {' R
6 q) G* `3 [* ]4 S9 Z7 vPWD=/opt/soft/test
& Q6 h; H D2 w* N2 g( K4 j6 v" Q0 _1 K" _1 [* h5 C9 C* v! H2 L
[root@localhost test]#
5 p& {. ?1 ~+ {. n& P
$ D, }2 `3 i. k' A& k8 P2 m3 ^8 t' G4 Q( p9 c1 J
说明:
3 B7 L7 W1 { Q" S& t- _
) W7 f1 P8 z% q5 f% z; `注意粗体部分,here doc可以进行字符串替换。: c1 b' K& a6 P& F
" {0 P: u7 D3 a+ H. x7 L v
! } u ~* N3 c7 I& N8 H9 {# J备注:/ f. e& F" y) m/ e2 z6 j
+ @( w* T5 ~7 _4 d
tac (反向列示)5 t- E2 b8 o9 |3 U9 h4 y. J
2 ? G W8 [0 S# |+ t0 {
命令:1 k+ N- U: Q! e R+ F \
" G6 E& h1 B+ [6 Y+ G
tac log.txt: J% \1 @$ S# n# m; D: U
0 y; O/ R- \( F% B. \3 j
输出:
, }! f5 D& t3 l& U, E% y
( |( M( A8 W+ E[root@localhost test]# tac log.txt
" _ f" Q4 |. h$ k& T! J4 H+ b: r
& }: w( G1 d- x* \+ Y' J2 @6 kPWD=/opt/soft/test5 r( C' h( {% X5 I( I0 y
+ r1 o5 a6 \5 u: j. E% rLinux
, x( ^5 P5 M" O# t
' M- ? D- J4 d$ u5 D% iWorld0 X1 e6 T* \+ D, d
. d+ O' a0 j8 {2 H: n& u- O( T
Hello
/ i% l. \. h( z0 y& G# _) A2 H% ^# A4 \. f g7 a" A4 \
说明:
* Y) R, ?* w# Z& s$ t3 d! p$ k2 n- v
, O4 _2 s! ]) `) q U: ztac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
0 D. O; z" a' K! O' i, S! G- r+ g! y$ H8 L' I$ A5 w. y+ r
9 _# A* P$ b6 [ |
|