找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7353|回复: 10

linux命令之 cat命令详细说明

[复制链接]
发表于 2018-11-9 22:47:02 | 显示全部楼层 |阅读模式
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 , M+ b6 B. L& v& o, ^' c; |+ _) v
) i3 P( h' y: _
1.命令格式:
6 {' j+ x  F5 H9 b& X( b* |9 d4 u( U6 T9 G  |
cat [选项] [文件]...% x) r( C: m/ Q+ r) P

" e8 B- E! z0 f; d* F2.命令功能:3 O% O6 d2 N6 X% p# G

- u& r2 A. b; c; H5 w, ucat主要有三大功能:
, N- d* u2 @8 {! s4 r/ ~8 ~3 w9 [- I' i
1.一次显示整个文件:cat filename
& ]( G1 c8 g. f$ J$ ]! ]* m: ]& e8 N- c$ Q6 ]: A7 `0 k, t
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.% |; L& x" l$ O7 d9 g

/ o. j$ G0 G% N2 K) g3.将几个文件合并为一个文件:cat file1 file2 > file' u- Y8 D! @9 |3 s4 G& l. S6 W
  J- o, g3 w0 W2 G# V7 }" w! ~7 x, ^
3.命令参数:0 n) f3 ]( J! R5 y" q
/ ?1 [; j* M4 V9 h
-A, --show-all           等价于 -vET
) X4 g, ^8 C% t! S4 |7 y8 {
* x* [1 s) a' ~- r  Y5 Q-b, --number-nonblank    对非空输出行编号
' X2 A. A% T$ p7 _4 n& O, s9 x, O8 X
-e                       等价于 -vE% l' }- f; L6 x5 G0 w
6 v6 {( Y# ?5 M8 T* I0 S
-E, --show-ends          在每行结束处显示 $$ Q5 r* B1 O& s  T
3 P) h; m$ L8 u7 A7 R; _9 f
-n, --number     对输出的所有行编号,由1开始对所有输出的行数编号! {" B3 u- p8 X7 p9 A5 A4 z) [! v

5 Z3 }; f# F7 X' n9 ~$ S-s, --squeeze-blank  有连续两行以上的空白行,就代换为一行的空白行 ; Z: D- I: b. M

- W- ~% f7 r4 S9 ]! ^1 E, ~; X4 T-t                       与 -vT 等价
9 a6 t/ q2 P2 b0 x+ e2 ?6 U4 U+ I! d- J4 m& t; h; V
-T, --show-tabs          将跳格字符显示为 ^I
, n* J! L/ j  R! e7 q
, x. u. {% a! V% G: v$ H-u                       (被忽略)
9 h( A# ]  |. Y& X: g" C. m8 d# \4 _* A" J  l2 F
-v, --show-nonprinting   使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外, A9 {( `1 a( g$ t7 V: {

" m  \+ w: b2 @( F/ _* n2 i4 T4.使用实例:/ l) k$ A0 O$ V# ]

: M) [. j% J! `, E  V实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里* W9 f% S0 v  c

) y& b( X7 g# S( [4 ]6 X命令:
) \; P2 J& c; R; G: W8 \2 R9 @* @4 t9 R2 {( A9 p+ S. N) Q
cat -n log2012.log log2013.log
; _( Z* Y# e7 h* }/ ~9 @6 @2 D2 D, m- m) E
输出:- L1 q1 m5 Q' W  [7 F4 s) k; @
  h7 \' A; I& w2 ]# N
[root@localhost test]# cat log2012.log 7 {; g- E% r& p" _: k8 n1 g
4 h2 t- e; U) z8 i
2012-01# M, w; w/ A7 A- c

; y( [0 q" w+ a7 b9 [2012-029 y+ y7 H$ }3 q5 E

! z' Z1 p% h6 o; L, {9 H7 ?: z* @! [6 w% y6 }5 T2 Q: |
; k& t4 h1 J+ h
======[root@localhost test]# cat log2013.log 1 [* e6 t+ u( Z) T4 M
, k4 M/ c- J  i9 |8 x$ p' \
2013-01! U" R8 D( U) H, Y' ]: w

; S; G6 N4 R) c( o4 r$ N5 h2013-02
; J# L4 M* c! F/ `2 h+ I2 }& c- y4 o: W  h& Q: V# |6 d% {" v  p8 u2 S

3 K% K- h  `2 o
$ c! S. b% n5 b' N# F+ z8 o2013-03
0 I. k! k6 k& ]* I/ @
: G" ?7 `$ Y# p4 x0 l======[root@localhost test]# cat -n log2012.log log2013.log % j0 i# C$ h" g8 X% l4 {

1 t( ^5 H3 W' k# q& d; O3 a0 N/ U: @      1  2012-01
2 c4 v& Z- o( p; a/ |7 Z& l3 [6 h1 [/ {" O( r$ \- c/ N
      2  2012-02% g; t1 Q0 ]/ L' w- @: B

$ ^2 o' ?) M) h0 ]      38 U( W% a: O8 B( S- R3 ^
, |3 v  b" W- }' [+ {; u% k6 `1 W( N
      4
& g: I- a& G# F" d, s& P( o
4 O( |1 T) D4 T8 g5 _      5  ======
3 G5 y6 l# }$ H( H$ \8 a7 u: C9 x0 b; V# c& z- w3 h' h0 w* L" t6 z
      6  2013-01( F9 s/ V8 _# o

0 B  P8 i  e: a0 r7 y) I' T4 d0 a      7  2013-02+ A, V0 u% }/ A' i. p3 _7 [

) v* t& h  {4 @3 e2 x, ]      8
3 x% T8 V9 {. F  _# b3 s! M1 a) F' p8 U) y4 f% U& _- \8 C
      9
: }) `  o8 ]5 o! O! U+ H+ r
) b, j+ J2 k% b$ ^     10  2013-03
9 z' N" \6 h0 G; h( T. j
8 {- q$ V& {* p* f; _, z& L- _" y  B: W     11  ======[root@localhost test]#
' f$ T0 j& `/ t7 r! p" l% o5 C: z/ a  U5 V( W4 h
8 f+ G  e1 ?# {% W" n! x8 U9 T1 A
说明:% @" u8 ]9 v$ j2 H, J
- l) @+ U3 Q  u/ U
& s5 W1 j& S) [+ U) x1 ]3 {  u
实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。
7 L& D6 d  ?  x/ M* E) D* D. E: p
命令:
3 C2 T5 H8 W, W( p
/ B5 R+ m' L) y. @& ecat -b log2012.log log2013.log log.log& x! Q; c2 t) \8 e* v* N4 @
8 |, [- `8 ~7 R- U3 q5 Y! L
输出:
) F9 L0 A; r, |* q" M# @! b: v' j. F
  J4 S( E. S, }. X. Y/ ?[root@localhost test]# cat -b log2012.log log2013.log log.log
' T$ m: ~5 H$ U( [! N  l
6 C: r( g) O  s3 H9 `, P7 A8 T8 _$ m& ?     1  2012-01
! Y; A# i# n- Y% c+ d
& V' \" t% H: {     2  2012-02
, [9 r" q7 T( H. Z% R2 m9 k' D& [
$ Y; S9 h4 {  l# f$ U) t3 Z8 `; d. D9 d
1 T; r" |: {( g+ v& P/ o
     3  ======, o' g0 W. o! P: ]+ k8 f

0 u) [4 h" [  p. g     4  2013-01
9 [& ^; j0 M' v' U' d3 a4 q! n0 a. E
     5  2013-02! [. m  X: Y/ V
2 ?# E4 e  m, d
: H1 N5 D9 M; u: P
: Y2 w8 t7 X4 Q
     6  2013-03
! Q1 X& T, J4 c* r+ v1 V. n* _9 `+ _/ t3 X9 [5 {+ `
     7  ======[root@localhost test]#" m, F/ ]" f3 I1 C
2 x) L1 @# [5 ^/ t

& G5 Q" v. ]4 d# h3 a8 P* O实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
5 ]. I  M6 ?  i. q! e5 A
1 e3 p. w6 [2 l命令:, D2 U. ?6 @. J  u' I

# R, P; M3 X+ q+ F输出:
  V# y( f( ]- I/ g6 |2 j
: V4 A# g( o- U( U5 V[root@localhost test]# cat log.log
3 L! K; }1 X5 C2 b
* f6 |) v' @+ O7 r& \) P[root@localhost test]# cat -n log2012.log > log.log% `3 d1 f/ l* l! W6 U

  [9 q: v6 E/ l) ?" B3 x[root@localhost test]# cat -n log.log
% U0 S$ d- y  ]  D& F- x% I! B' e6 B; L2 i( b* [( D& d
     1  2012-01" m: p; t! |5 X. v7 S5 r" O

' Z, Z8 [5 W+ c) ?# T, C     2  2012-02
7 S# j, N( s: D/ V/ R  s+ ?0 L) c, ~7 U- g  u7 o
     37 x4 B0 Y$ U! C' M, {
+ y- G' V  K( f3 _' F
     4
3 @2 p% g$ ^. U: R/ `# y% r% }2 h. p% l- P/ t
     5  ======: j( b, k# ~. G, z  C9 z
' t7 Q% L4 V! I1 n) F& h8 b3 g
[root@localhost test]#7 q. v- [6 N+ j% @
& q7 U1 }, I, b5 q. s  k) Q: T
1 ]& \+ S2 U" D& `8 Y& @
实例四:使用here doc来生成文件, T2 [* o7 f5 E

- A, n; z* r4 N' q7 o0 q3 V% X1 U输出:
* Z" _' t* z2 m# b$ c) c8 y" \0 d  f' @' X+ S- [
[root@localhost test]# cat >log.txt <<EOF/ A7 S: y* C6 t, p4 @: K. ^

/ i+ ^4 ~3 G8 c9 R4 R: j> Hello4 F. A( d  _0 {) ]9 S, ~0 l; C

% T6 `/ w7 z# }5 r9 O/ E> World
2 w, J$ V3 M$ r/ X1 f) k+ k# f# |+ S" N9 _( j0 g
> Linux" E4 [) @0 |1 s- `1 U0 I
; y3 r+ f, U, `6 a) z( p$ A
> PWD=$(pwd)
$ G2 O" Q6 I5 G4 \3 s" o0 a9 O, }
2 N0 ?" W8 w3 l0 x0 F> EOF
  z6 M" t$ P( ]: U- P2 ]9 D8 Z4 x# G' \8 X, n' x# R0 w
[root@localhost test]# ls -l log.txt # p0 h" j& R" w& N! Z
) W8 P* p  j$ S
-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
% J4 G0 {" x/ n! E  W$ t
% T( i; ^# A- G1 }" N: u% A[root@localhost test]# cat log.txt
. C. `$ C) y% b, n+ a) X$ I
" F/ v) V5 A# [  ?" q, E- oHello) K2 a* H2 \1 n  h' }4 R. P3 U
0 ]: E) v6 T. ^" [2 R
World5 w8 \" y1 q9 j! I  ~0 r
. H. j0 ?9 j+ e5 U6 d' O# d2 h8 a
Linux
3 v3 M/ G: U( i3 a3 d$ X, u- j1 e  D; x& R1 N
PWD=/opt/soft/test
2 r+ d& w5 W8 ~, P$ y9 l
; B+ n  {$ ?$ q9 P( ~[root@localhost test]#
) q- \; r9 Q# A: L3 ]* ]: T4 v+ \8 g. G3 E

' N) }% G- p! a, E6 s说明:
7 J0 q2 E# N' K. O. f4 C  T
. n7 a* Y# j, a( e) h9 ]注意粗体部分,here doc可以进行字符串替换。
: Z' y% Q1 X% Y$ T" l6 l% v! Y% i# ^( r
/ r6 o9 H% h2 B6 q* q, b$ Q/ }
备注:
! j' c4 O7 V3 n* ?. x; c3 G  N
7 h! z/ q9 g0 ]tac (反向列示)
/ n* D' [- Y. A7 `0 ^
+ _, {  D! L7 ^! R3 U命令:: X% W9 M5 n& h3 n
) ^& P6 D5 c8 m) V: E
tac log.txt+ v. J, ?/ c- l; o* x

; ]' Q, g2 B% X1 t5 s! l输出:7 ~2 i* p) K: N, W4 n9 E

8 N# K! a7 [, k/ p1 m% L) ]7 t[root@localhost test]# tac log.txt 7 g- v2 w9 O, H4 r# v
$ z- k) c! t) ~5 n
PWD=/opt/soft/test, W- n: l" j! w. |) P
, E7 `7 U& {  h8 o9 m
Linux
0 X8 @; t, F9 k& C- w# O. J8 e& X- I1 g" r
World) u$ ]+ j8 {/ ?) c, Q

; Y9 b' X; c* c  U* z  Z1 \8 f$ k  ]Hello
3 B" v( O" G; D- X  m" [# W; N2 o
说明:
0 p. i4 R1 a; K& }( o7 Q$ g7 p& O1 R
tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
: J' v& I9 `6 {" ~& Z
4 z2 P; C2 n# z* ~* R) f7 p. V$ H! o# W. O( f- O$ Y
发表于 2018-11-10 05:44:55 | 显示全部楼层
学习了谢谢分享
发表于 2018-11-10 11:14:35 | 显示全部楼层
本帖最后由 hu0730 于 2018-11-10 11:16 编辑 3 T' X) Q3 W9 G1 s! i0 |/ t) H
6 Z, }$ b  h$ M2 P% V1 X" l
谢谢超级版主分享了!
发表于 2018-11-10 11:19:14 | 显示全部楼层
不错不错,来了就坐吧。
发表于 2018-11-10 13:52:12 | 显示全部楼层
我只会cat /proc/mtd
 楼主| 发表于 2018-11-10 14:00:08 | 显示全部楼层
邪恶海盗 发表于 2018-11-10 13:52
, L$ C. D+ x; l$ q我只会cat /proc/mtd
: k) ^# T! {# U5 {' c- X
多了,cat /tmp  etc  dev   ................什么都有的
发表于 2018-11-16 18:40:24 | 显示全部楼层
echo set sh=WScript.CreateObject("WScript.Shell") >shua.vbs6 S' q5 u! m$ ^% g7 t
echo sh.SendKeys "open 192.168.1.1{ENTER}" >>shua.vbs
9 b  a6 i1 i! o3 l% recho WScript.Sleep 100 >>shua.vbs
' c/ F+ T5 t4 A8 [/ vecho sh.SendKeys "root{ENTER}" >>shua.vbs- s% M, F" X" n" T
echo WScript.Sleep 100 >>shua.vbs/ T4 s+ n6 L: T3 I/ P7 E
echo sh.SendKeys "Zte521{ENTER}" >>shua.vbs+ g" u8 W* J7 v& C. i* J# ^
echo WScript.Sleep 100 >>shua.vbs
8 z3 j+ t. p7 o' i' k5 q7 @echo sh.SendKeys "cd /tagparam{ENTER}">>shua.vbs( l' o9 M. ~! K2 F7 Q) n7 H) M
echo WScript.Sleep 100 >>shua.vbs7 e3 c" X1 h& B0 ^! L/ V
echo sh.SendKeys "cp /etc/bob_GN25L95_gpon.bin .{ENTER}">>shua.vbs% g7 p  H$ E5 J7 o
echo WScript.Sleep 300 >>shua.vbs
- ?# r0 G2 B' Recho sh.SendKeys "cd /userconfig/{ENTER}">>shua.vbs: a1 X( h( Y$ I5 H/ Q: _
echo WScript.Sleep 300 >>shua.vbs
6 G- B5 B! k1 F% Yecho sh.SendKeys "cp /tagparam/bob_GN25L95_gpon.bin .{ENTER}">>shua.vbs
. @+ Q! a# ~' Lecho WScript.Sleep 300 >>shua.vbs: |  G! E/ q$ R  D# j
echo sh.SendKeys "sync{ENTER}">>shua.vbs( s3 Y& y' P9 C$ T* _1 a
echo WScript.Sleep 1000 >>shua.vbs
% H$ z& l& f6 g6 |) o7 Yecho sh.SendKeys "reboot{ENTER}">>shua.vbs
7 B# C, U8 ?, Y4 }, ]. o; kstart telnet0 x/ ]/ l( O' `( t% d$ J
cscript //nologo shua.vbs" @& i* _5 [8 Z
del shua.vbs
发表于 2018-11-16 19:15:04 | 显示全部楼层
echo set sh=WScript.CreateObject("WScript.Shell") >shua.vbs2 o1 f4 u6 D% P! S3 E/ d
echo sh.SendKeys "open 192.168.1.1{ENTER}" >>shua.vbs/ r' a5 |6 |/ [; X0 i# |
echo WScript.Sleep 100 >>shua.vbs. Q3 y9 L- r$ O
echo sh.SendKeys "root{ENTER}" >>shua.vbs
; [* c! u" H1 \! Eecho WScript.Sleep 100 >>shua.vbs' p/ _3 u1 R% v" |
echo sh.SendKeys "Zte521{ENTER}" >>shua.vbs3 k; j, n3 u5 N1 I4 ~' d3 G
echo WScript.Sleep 100 >>shua.vbs. D1 Z1 M$ b, L8 z5 r
echo sh.SendKeys "cd /tagparam{ENTER}">>shua.vbs
! A7 k0 Y: L  s, l0 gecho WScript.Sleep 100 >>shua.vbs
1 w+ F' `3 e: Y. Yecho sh.SendKeys "cp /etc/bob_GN25L95_gpon.bin .{ENTER}">>shua.vbs
: O* x2 m- K! R4 h1 [$ ?$ x' l* wecho WScript.Sleep 300 >>shua.vbs" q# T: @& K. C4 d+ a
echo sh.SendKeys "cd /userconfig/{ENTER}">>shua.vbs! f5 H) c" c7 Q) `
echo WScript.Sleep 300 >>shua.vbs
3 v1 B' E, d1 R# W( W' ]" Xecho sh.SendKeys "cp /tagparam/bob_GN25L95_gpon.bin .{ENTER}">>shua.vbs' S& J' y$ Q- c; y
echo WScript.Sleep 300 >>shua.vbs- C* M: B# ^: o' G, b
echo sh.SendKeys "sync{ENTER}">>shua.vbs: L$ [9 V: H: ?1 {  v% B0 s
echo WScript.Sleep 1000 >>shua.vbs
7 `. G; L( g1 J7 @- |: W$ p# xecho sh.SendKeys "reboot{ENTER}">>shua.vbs
: U2 c8 u( _7 |+ e$ F( R7 O$ istart telnet( m7 P7 g  t5 M, \. R
cscript //nologo shua.vbs9 A6 R  `0 W* s( X) t! T0 u! Y
del shua.vbs: v0 @' N: f0 Q% q1 R9 D) H/ U

" I, J- `2 E, t* Q$ y% P+ {% N, y( v* p9 ~4 R- d
怎样把这段文件在光猫里删除?
发表于 2018-11-17 15:33:59 | 显示全部楼层
谢谢超级版主分享
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-12-28 06:04 , Processed in 0.042377 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表