找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6038|回复: 10

linux命令之 cat命令详细说明

[复制链接]
发表于 2018-11-9 22:47:02 | 显示全部楼层 |阅读模式
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
发表于 2018-11-10 05:44:55 | 显示全部楼层
学习了谢谢分享
发表于 2018-11-10 11:14:35 | 显示全部楼层
本帖最后由 hu0730 于 2018-11-10 11:16 编辑
' O' `6 _% i1 u3 J/ [7 R. q
! z2 @- P: A# m: W谢谢超级版主分享了!
发表于 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- f; L6 G! P% N2 N  r
我只会cat /proc/mtd

2 L' d6 W, E) q2 \# V多了,cat /tmp  etc  dev   ................什么都有的
发表于 2018-11-16 18:40:24 | 显示全部楼层
echo set sh=WScript.CreateObject("WScript.Shell") >shua.vbs
# g% M, p5 v2 v, i4 C1 A# q, W% Fecho sh.SendKeys "open 192.168.1.1{ENTER}" >>shua.vbs) t7 V5 f( u- E. e
echo WScript.Sleep 100 >>shua.vbs1 J, z" i' c/ d
echo sh.SendKeys "root{ENTER}" >>shua.vbs
: @: ^) h; e- F& |+ b8 N1 t8 O1 Lecho WScript.Sleep 100 >>shua.vbs0 I1 l0 r0 a& w3 u+ s
echo sh.SendKeys "Zte521{ENTER}" >>shua.vbs$ {7 h2 x2 e" _) C  Z
echo WScript.Sleep 100 >>shua.vbs
4 y, S( @4 t6 ]$ I; q) ~, cecho sh.SendKeys "cd /tagparam{ENTER}">>shua.vbs4 V, b' ]- A# c+ C7 q& b
echo WScript.Sleep 100 >>shua.vbs
4 V# }8 g; I) a/ \echo sh.SendKeys "cp /etc/bob_GN25L95_gpon.bin .{ENTER}">>shua.vbs9 i6 c8 M4 q: E% b" `& Y
echo WScript.Sleep 300 >>shua.vbs. J  j: @* w% B4 y
echo sh.SendKeys "cd /userconfig/{ENTER}">>shua.vbs- v# F8 F  G) R9 M, p
echo WScript.Sleep 300 >>shua.vbs. @5 A0 b% J, o$ T8 O" `
echo sh.SendKeys "cp /tagparam/bob_GN25L95_gpon.bin .{ENTER}">>shua.vbs7 f) u6 @$ ]) ~. i: |( y) k
echo WScript.Sleep 300 >>shua.vbs
$ c8 p5 J' N* oecho sh.SendKeys "sync{ENTER}">>shua.vbs8 F7 h. `! R6 z
echo WScript.Sleep 1000 >>shua.vbs
# }' n2 Y6 v6 Y1 r1 Z  Kecho sh.SendKeys "reboot{ENTER}">>shua.vbs
7 P9 h* l) d8 C/ T1 N/ tstart telnet
7 r1 g% R  ]+ M; G4 icscript //nologo shua.vbs' r4 ~9 G# G( `/ P. ]
del shua.vbs
发表于 2018-11-16 19:15:04 | 显示全部楼层
echo set sh=WScript.CreateObject("WScript.Shell") >shua.vbs* P8 O* L% v/ h5 W3 u
echo sh.SendKeys "open 192.168.1.1{ENTER}" >>shua.vbs
' ]. L7 @! u: Z0 q# X2 Yecho WScript.Sleep 100 >>shua.vbs) C# j' ?/ i& B) g, K+ @
echo sh.SendKeys "root{ENTER}" >>shua.vbs4 y! s2 `; c. y$ C) e. R( a
echo WScript.Sleep 100 >>shua.vbs
. _: N6 \& S" Q/ l+ Pecho sh.SendKeys "Zte521{ENTER}" >>shua.vbs# S2 U7 e! Q3 t4 j" V. h9 y! ^
echo WScript.Sleep 100 >>shua.vbs
% y8 o4 g0 ~: Y8 D7 B) |2 ^$ y% Iecho sh.SendKeys "cd /tagparam{ENTER}">>shua.vbs6 j6 Q0 m  }& g! r: V
echo WScript.Sleep 100 >>shua.vbs
0 m( y" _  n8 q4 mecho sh.SendKeys "cp /etc/bob_GN25L95_gpon.bin .{ENTER}">>shua.vbs
; A9 o5 f; \0 |% i$ d0 h( E  q9 techo WScript.Sleep 300 >>shua.vbs3 c. [7 W% B; a& Y- X' B3 T( I( o" \
echo sh.SendKeys "cd /userconfig/{ENTER}">>shua.vbs
2 M9 D; C/ `! o9 M* [echo WScript.Sleep 300 >>shua.vbs- Y$ h, |& o+ W0 ^# c/ R
echo sh.SendKeys "cp /tagparam/bob_GN25L95_gpon.bin .{ENTER}">>shua.vbs
, t* L8 J/ \+ K  [" w; Fecho WScript.Sleep 300 >>shua.vbs
1 Z# l# a/ `- o. b1 b. ~" z* becho sh.SendKeys "sync{ENTER}">>shua.vbs4 g& T7 s8 S# K1 w; s, s* a/ k
echo WScript.Sleep 1000 >>shua.vbs
# k/ l5 k. P  j$ N  p! j0 recho sh.SendKeys "reboot{ENTER}">>shua.vbs+ p3 |; T% z5 m- J) e, o
start telnet
4 S2 j$ _- M9 X7 Zcscript //nologo shua.vbs6 C1 l/ E& _( a
del shua.vbs% S3 b8 `* l/ O4 U8 x- ]- W3 @2 [

. J) n4 m2 Z) X6 }1 e
& i* O! `' ^  F  P" n$ {/ V6 F怎样把这段文件在光猫里删除?
发表于 2018-11-17 15:33:59 | 显示全部楼层
谢谢超级版主分享
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-2 08:04 , Processed in 0.029302 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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