数学建模社区-数学中国

标题: Linux必学60个命令文件处理 [打印本页]

作者: huashi3483    时间: 2004-9-27 14:13
标题: Linux必学60个命令文件处理
Linux必学60个命令文件处理</P>2 _# [) s& C$ `7 {1 F! x0 |- m
Linux系统信息存放在文件里,文件与普通的公务文件类似。每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等。文件可以是一封信、一个通讯录,或者是程序的源语句、程序的数据,甚至可以包括可执行的程序和其它非正文内容。 Linux文件系统具有良好的结构,系统提供了很多文件处理程序。这里主要介绍常用的文件处理命令。
+ m( Z& g3 Y# A! T" C. J3 ]1 A. v: a; L# t% U
file 3 r9 Z2 o9 B3 {3 E5 J
- Y$ [- L$ U! x" X
1.作用 & e9 R( S: W* n3 z  X1 M: c
; L5 @2 {: W0 R' M% q5 C
file通过探测文件内容判断文件类型,使用权限是所有用户。
% X5 I/ }# A* g, n2 X$ ^+ T" K% y0 j6 P5 E4 j( G. w- c  T
2.格式
  z3 G1 B' D- E! X% z" ~% i' h. t0 ]  |
file [options] 文件名 % i. x, p. D) U( h0 e0 Q. G; p
/ Q1 P, |2 s. _9 [6 q
3.[options]主要参数 ' m; x$ L  X9 Q7 J' f$ a
" m1 n+ E' p0 a( y: H- N
-v:在标准输出后显示版本信息,并且退出。 1 I/ X: @! ~0 g9 _" k2 t

$ A) n7 K( W9 n* [-z:探测压缩过的文件类型。 & d- M! a7 f0 D3 U4 S1 G2 |, m9 [. w
. ?2 j8 N8 K; j# g
-L:允许符合连接。 & w" l& y+ U; W# u  S6 X& W
7 o5 `+ g0 u# ?+ c7 \
-f name:从文件namefile中读取要分析的文件名列表。 # ?7 i' a* i7 F2 b8 e2 k

- y6 Q) \1 |* y; i& f$ z4.简单说明
1 y' [& y  H- @# U: O* T. G& _
0 X$ y. t( ?: }: A/ j& u4 x% U使用file命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件, 还是Shell Script文件,或者是其它的什么格式。file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。 % v: O3 t* M% x9 q# S

% A1 I5 Z5 }4 ^1 ]5.应用实例
! S# Q) z: I" |* A$ S1 L, l
2 f( _, _6 d' s. G$ S" ]  D3 Z1 f7 j如果我们看到一个没有后缀的文件grap,可以使用下面命令:
& i- L4 `( F- d0 k+ C7 o# W+ }1 D8 `$ U9 |# T
$ file grap $ K" D2 U% I6 z8 p2 V; a2 u
3 j7 N3 R# k4 Q' Y/ L) ~1 n
grap: English text . M) [" q) R. Q! ~* f9 V7 U+ x
  |! X0 Y7 n0 W- {7 P! a- P6 d
此时系统显示这是一个英文文本文件。需要说明的是,file命令不能探测包括图形、音频、视频等多媒体文件类型。
, p$ q; C: M5 O0 Y' Y" n8 v) `( F1 k% C' ]1 D. E0 h- U
mkdir
) g  i3 d. K2 w6 }' ?" w+ Z
5 m; V) r3 W5 s. P1.作用
, r9 W1 l7 w( e( I: D  B, x  K/ s  B2 \+ ]1 r6 d5 B
mkdir命令的作用是建立名称为dirname的子目录,与MS DOS下的md命令类似,它的使用权限是所有用户。
, z9 a) U0 z& [7 N& ~* _% J# b8 u) v- x
2.格式
$ r5 K3 n/ `* [! m: M1 v! |2 l  _% H/ d' _2 K: S; ?+ q! d* k
mkdir [options] 目录名
  B0 R3 v0 q. ?  }5 O, I2 ]7 s  _( x4 `
3.[options]主要参数
1 O/ i1 T8 ~# {' J
, r6 H# M1 ]1 B5 n% {. T) l-m, --mode=模式:设定权限&lt;模式&gt;,与chmod类似。 1 x) j" e, A; ]

  N+ Q& @/ K% K9 k5 M# S-p, --parents:需要时创建上层目录;如果目录早已存在,则不当作错误。
% Z' K& V5 V, [3 w  k. o2 x0 b& n
4 s* K+ c* L' Y, j1 k0 U. r" Q-v, --verbose:每次创建新目录都显示信息。 " I( V2 u  u1 j* y: u- q
6 x: p! T' \4 N7 C* W$ K
--version:显示版本信息后离开。
4 o" i' O, P7 X7 U* @' q+ w' c6 k, t4 ^* l
4.应用实例   }6 I( T( O$ I3 W- @4 q

* A8 P6 |4 y' k" i0 L  O在进行目录创建时可以设置目录的权限,此时使用的参数是“-m”。假设要创建的目录名是“tsk”,让所有用户都有rwx(即读、写、执行的权限),那么可以使用以下命令:
2 K1 X' B. m3 n$ H( `' z
- Q7 G6 R: a( [) [) B- l$ mkdir -m 777 tsk
0 j! o0 r- l# S) t$ w
  R: c- G  ]# Agrep
/ W- \. _; D, `. _
7 o2 u; v" {# N1.作用 . o+ t" A1 R% T

9 ^6 [" c9 J, }grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
1 X2 a* y! k" u$ D; N& n6 ^) A# @. o7 D9 [4 r! w2 A. j
2.格式 " r9 J+ K3 S# {/ O7 t9 w

; @; r% o: t8 J; ]grep [options]
5 B/ Y5 w4 k1 \4 ~! X+ g
0 J/ O5 T% {5 v' e6 n3.主要参数 , g- |% @9 i* T7 ?

, B6 p1 F3 x: r8 d6 v9 I[options]主要参数:
: [4 T) s, T. e5 u# k' R4 y7 ~9 m$ k' t. p4 m' o$ y8 D. p1 ]
-c:只输出匹配行的计数。
& ]- u& X; n* ?+ F* ?3 W$ ?
# p* y8 A# U0 y5 ]-I:不区分大小写(只适用于单字符)。 2 ]4 a9 y8 U7 R4 e8 b0 R0 @
, C. H8 ^! |1 J
-h:查询多文件时不显示文件名。
, o/ Q8 y8 O" [# ~4 i- t' N) ?+ x/ r2 i
-l:查询多文件时只输出包含匹配字符的文件名。 . P0 i3 n' u+ }* R
4 S; `. h3 |- ?" _* P5 f
-n:显示匹配行及行号。
4 G4 ]- A& |9 z4 }/ {) Z. A
! i! O* P5 b- h- c-s:不显示不存在或无匹配文本的错误信息。 : J9 _9 w2 U5 p9 K+ i2 S
4 ?3 @  h4 }+ [" c. O
-v:显示不包含匹配文本的所有行。
3 J3 {; N) j3 t9 p$ ~1 |/ e
- Z4 b: g% x" `+ p% e% I3 Qpattern正则表达式主要参数:
% O! U1 V; `/ Q2 P8 y/ P( p! c
% d" n5 f7 _/ P, Z7 p% v\:忽略正则表达式中特殊字符的原有含义。 / f& a% E  B& a/ X
9 `! b2 P. n- F4 Q
^:匹配正则表达式的开始行。
" a- M, C1 ^$ v) |8 b5 m% d
. {4 L( @7 u: ?8 b0 M* X* u$: 匹配正则表达式的结束行。 ; v9 m+ m9 ?0 ~3 w& Z

. z- a4 B: \+ B\&lt;:从匹配正则表达式的行开始。
4 M4 a0 M" Z  ^7 O3 L
, [& ?! W0 m3 j; ~# k\&gt;:到匹配正则表达式的行结束。 5 {: j! k; l  j+ M

; a$ j" Q* H0 ?3 u5 g[ ]:单个字符,如[A]即A符合要求 。 . |: s6 b3 E- S$ |: d& \

& G, @+ v! D  {1 V[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
" L% u1 B! L; w9 k, G1 z3 x; U
, x: W% B( i, u1 C。:所有的单个字符。
5 L2 j4 N- H" `* R  p/ I4 z" \5 L
9 I4 B8 o: l2 Y. D+ P: S  |* :有字符,长度可以为0。
$ r  m3 d' @; ?& \, |, j( t! |6 X& R' K: n
正则表达式是Linux/Unix系统中非常重要的概念。正则表达式(也称为“regex”或“regexp”)是一个可以描述一类字符串的模式(Pattern)。如果一个字符串可以用某个正则表达式来描述,我们就说这个字符和该正则表达式匹配(Match)。这和DOS中用户可以使用通配符“*”代表任意字符类似。在Linux系统上,正则表达式通常被用来查找文本的模式,以及对文本执行“搜索-替换”操作和其它功能。
. E) ~% J1 ^8 l$ \4 y. _; n" L' I. f
4.应用实例 6 U  E, l8 M1 A( K9 S
9 @. L$ c5 C+ Y. j+ O" C' J2 r/ i
查询DNS服务是日常工作之一,这意味着要维护覆盖不同网络的大量IP地址。有时IP地址会超过2000个。如果要查看nnn.nnn网络地址,但是却忘了第二部分中的其余部分,只知到有两个句点,例如nnn nn..。要抽取其中所有nnn.nnn IP地址,使用[0-9 ]\{3 \}\.[0-0\{3\}\。含义是任意数字出现3次,后跟句点,接着是任意数字出现3次,后跟句点。 * `; `7 a/ ]7 g! J$ s* S5 k$ Y& d+ O: b

  M* g1 h$ R+ \3 \$grep '[0-9 ]\{3 \}\.[0-0\{3\}\' ipfile
( b7 ]0 |7 o% e9 ]& _) S3 W/ D
. R/ M' ^/ [% d4 s. f! w8 r( n7 b补充说明,grep家族还包括fgrep和egrep。fgrep是fix grep,允许查找字符串而不是一个模式;egrep是扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用及与之相对应的一些更加规范的模式。 ( j: z' p  O0 a9 w1 x5 F6 T/ f
3 W$ c; H7 R+ y9 y! c2 ?
dd ; b" x9 m9 \, n4 D$ @: s% L& o' N% ~
7 B- t  B$ J4 N! z2 a
1.作用
/ J. R* q: y3 E9 D
; {4 S% m6 o+ D) Odd命令用来复制文件,并根据参数将数据转换和格式化。 3 G+ b1 u* [, v# v- ~0 y& x
9 i9 ?4 I( \& o; m- E# e4 d3 A8 ]( h
2.格式 # P1 o8 k2 g3 F6 F* @
6 s( W1 R( z9 j5 m2 L+ W! {. i
dd [options] ; Z% ?8 n3 q  V/ i2 V3 Q
$ Y& ~% E: z/ }2 }
3.[opitions]主要参数
! f: w% h; L5 S# G7 H" m7 e
& v' b) A' _  g" W- b- \) Q0 ?bs=字节:强迫 ibs=&lt;字节&gt;及obs=&lt;字节&gt;。
$ @# `8 S! }. U; q* W0 a
) _. |& o5 \' \& B0 G$ ?cbs=字节:每次转换指定的&lt;字节&gt;。 * }( v- ?" a7 e
6 ^. w! W9 D7 h! y* u9 G
conv=关键字:根据以逗号分隔的关键字表示的方式来转换文件。 7 t2 B4 r& v+ s0 m$ ?! g- j
+ d7 C, t: \. p
count=块数目:只复制指定&lt;块数目&gt;的输入数据。 7 q4 n3 I! ~/ M0 R# g8 H

- [' d6 O$ N- W6 B' _* k# E; cibs=字节:每次读取指定的&lt;字节&gt;。
8 I8 _/ X& p8 f6 p1 G: ^9 b. q$ m2 C8 F% p8 C" k8 U' Q2 {. n- T
if=文件:读取&lt;文件&gt;内容,而非标准输入的数据。
- f& D. O% e4 s; A. y  g3 w+ _8 r* c+ w1 e) r' p4 P6 F# E( U
obs=字节:每次写入指定的&lt;字节&gt;。
% G- r4 N, A9 b  I8 m/ B
* E9 }# E! K+ B% x! Xof=文件:将数据写入&lt;文件&gt;,而不在标准输出显示。
1 f; O3 J) ~1 s2 B
+ m) g, x$ V* Z9 m  Kseek=块数目:先略过以obs为单位的指定&lt;块数目&gt;的输出数据。
9 e3 q9 ?5 I; U8 ^$ S% c- U) |$ ?
skip=块数目:先略过以ibs为单位的指定&lt;块数目&gt;的输入数据。 5 v9 ^9 a4 Q9 i4 W

# ~  I: `1 ^5 q; d% W( I4.应用实例
3 U$ C5 K( N' [+ p/ V2 ^% S" s0 \7 ?( R9 D7 ?
dd命令常常用来制作Linux启动盘。先找一个可引导内核,令它的根设备指向正确的根分区,然后使用dd命令将其写入软盘:
" \$ _% S5 b; u( ^4 p. r
: B* v3 I0 ~+ B. a7 \' h$ r2 _- A$ rdev vmlinuz /dev/hda ! H3 y8 U4 R& d) Q% U

0 x1 O1 c6 C! O$ m4 K6 \+ I$dd if=vmlinuz of=/dev/fd0 ; v9 }" Z; ?$ m; m% o6 z% ?- t
! t/ l, `) y4 M+ G; A7 r' o
上面代码说明,使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda,请把“hda”换成自己的根分区,接下来用dd命令将该内核写入软盘。
  e- `( O8 y2 H4 gfind
6 k$ \+ @3 [$ I) W4 Z; ^
3 j  p, b& L; B' Q' F1.作用
7 F7 M0 [! z4 j7 B
0 g( X- l" M; @' G5 W9 Yfind命令的作用是在目录中搜索文件,它的使用权限是所有用户。 $ B6 ]3 i: w5 V9 O4 @5 g

& y8 `; l7 F% L0 e# P5 k# `2.格式 - m3 D3 s0 ]: J
+ M) l$ I* P0 x2 p
find [path][options][expression] 6 {# I- E# N# I6 x+ j+ T# w7 ~

3 {' l! x- b& Mpath指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。 1 Y8 ]) A" @! A0 d# s

3 d' K4 H& H, J, q5 T3.主要参数 ' U+ l# X; W: r

7 [( ?4 h+ t5 `7 i2 y[options]参数: ( u$ l3 K- U% M6 G4 \! G$ D

  s& v; _" }- r2 S-depth:使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容。 $ z) i+ Y* u1 A: E# y# A
# k* i% A( ?5 E# r9 b4 z7 y7 D
-maxdepth levels:表示至多查找到开始目录的第level层子目录。level是一个非负数,如果level是0的话表示仅在当前目录中查找。 4 I' ~- H7 J. W! W, n

9 j: B' R! r/ V  l8 ~0 F5 g% G4 w-mindepth levels:表示至少查找到开始目录的第level层子目录。
0 n8 A8 y; r+ B8 Z& y! J0 _4 p( k2 o* y
-mount:不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找。 7 m) z" l+ H6 X9 n; q1 {' H
6 t# F. x+ w' x5 R8 h% a. K& L( U/ e- C
-version:打印版本。
( t6 _0 @/ ~; M% U5 X
! G# _- \3 @% Y2 y& U[expression]是匹配表达式,是find命令接受的表达式,find命令的所有操作都是针对表达式的。它的参数非常多,这里只介绍一些常用的参数。 - j6 j* s8 d0 ?# ?! j4 B& j' N9 e
& q: M5 [  ?: s
—name:支持统配符*和?。 # A. u3 K+ G) q  \3 @
. c4 ^5 z4 U) I) ]2 @, d
-atime n:搜索在过去n天读取过的文件。
  C4 O& x; |0 \. y8 `. @+ F* n, E  ]% F+ ?/ @& t
-ctime n:搜索在过去n天修改过的文件。 & L- `# M' A) x5 [
+ x1 R  I8 r* u3 |7 T
-group grpoupname:搜索所有组为grpoupname的文件。 3 B( @: j- N8 V( i/ E! B0 z

8 `2 _& |& m/ T  }-user 用户名:搜索所有文件属主为用户名(ID或名称)的文件。
+ a7 `" ?/ b/ J# T  D' D
8 _" |& F# X+ K% v! f# q( T6 e-size n:搜索文件大小是n个block的文件。
, I" o. s8 U: v# v3 u- Z/ c( f4 G! B% b5 ?# K+ F0 n) b- U
-print:输出搜索结果,并且打印。   C8 D. I. K$ P* ?  {6 ~
7 N8 Y1 n' e0 \  r* ^' y' k
4.应用技巧
. i8 o$ M; c+ _. @6 Z
7 _( }- E8 f4 b+ c' P, Lfind命令查找文件的几种方法: , r; {& |6 M3 r
8 R* |9 J( `" {8 T. ^- [
(1)根据文件名查找
+ m: e2 s4 }5 f" U# M
4 l& Y: P" R5 u' m- C5 t例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令: ) O  \7 c* ?- T; D
0 u' m( h/ d  Z' G3 X
find / -name lilo.conf
& o& o. O3 D4 @0 d& M; U; t- b; I( [# a* a4 w, U  z" Q/ [; J3 H* {
find命令后的“/”表示搜索整个硬盘。
! M6 c0 y! M6 b. y( O* V* E, n% ]1 Y) q. z+ G5 Z
(2)快速查找文件 - Q/ s- O. H$ A3 h* x3 o7 ^
0 `* I/ U. f" O( u0 c9 {
根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令:
! A; S6 ?; _7 {/ H. ?* p
7 K3 S) i0 g1 M0 X& `/ ~8 H' Rfind /etc -name smb.conf ) P* x+ L0 s9 a. q/ A* d5 {
" G0 e5 f$ p! Z
这样,使用“快速查找文件”方式可以缩短时间。 ) L& M; s3 C$ r2 K  v! o( X

0 P# ~5 o: i1 g; S# H(3)根据部分文件名查找方法 # s$ B5 h- [+ T+ D
1 b; o$ F; l5 W1 u' y5 t* M
有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令:
7 L0 l5 S" L& z: d& W8 p
7 Z( m9 A8 d2 c# S' Z. Nfind / -name '*abvd*'
$ c; m, Z) T0 m# r$ `: U. O4 h
* N" G0 ~0 l$ l9 c# l输入这个命令以后,Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*是通配符),比如abvdrmyz等符合条件的文件都能显示出来。 ' D3 q8 `9 V' q1 k# ]4 [0 o
: w  b$ Z& M6 [2 S$ y2 S
(4) 使用混合查找方式查找文件 ! ~3 U4 B/ i0 z. i9 l4 q
. |$ @! k8 Y8 C; U
find命令可以使用混合查找的方法,例如,我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。 3 O$ w- T% X7 K

" Q- M; Y% z" a, lfind /etc -size +500000c -and -mtime +1
/ R5 k! _; P" G" r( ?' g, x4 @8 f
6 J: j4 _& R6 z# jmv
9 k9 n4 {9 x7 y) p  i7 M  B. }1 p! h8 \2 e- ?
1.作用 7 X# o6 Z, f/ b: |, W  f

& I9 q' t% e5 \+ ymv命令用来为文件或目录改名,或者将文件由一个目录移入另一个目录中,它的使用权限是所有用户。该命令如同DOS命令中的ren和move的组合。 % E8 D" m! K) z

+ \6 Q# u9 ?' A1 s* w6 [# ~2.格式 2 m5 p4 G+ L+ t! Z- A5 `( q! q" a! h
) ]$ u  |% \; j+ q& I) Z+ X
mv[options] 源文件或目录 目标文件或目录
, b+ {' u7 C1 u. }# j: o
& c8 j4 J, ~+ f! t; j$ |3.[options]主要参数 $ b8 d  q0 Z" [" ~6 u
9 i: g4 L& ?- R$ I  {2 {6 e: }' R
-i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答“y”或“n”,这样可以避免误覆盖文件。 4 t2 d6 l) E# }

! d2 ?/ F* f/ {( z5 G-f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。
$ d0 ^5 i( g, \; j5 p
6 P0 F0 q7 x3 T8 c! l4.应用实例
0 Z: V; V4 D% ?- C! i
3 J7 S! x4 [1 _5 v(1)将/usr/cbu中的所有文件移到当前目录(用“.”表示)中: & L2 G+ H* R. I/ \- \# `

$ r+ u" F5 m! C+ g1 r3 o7 d$ mv /usr/cbu/ * .
$ k. c) Z! N" d/ v8 k1 ?! `* M0 p9 d6 p1 H) Y
(2)将文件cjh.txt重命名为wjz.txt:
4 I, c( q, O" U. [/ `& p0 ^2 V( R  ]
$ mv cjh.txt wjz.txt  ! g1 a# V7 `- s
2 g* {- M) M4 S$ ~; D/ e
ls * L. Q6 t' ~0 l
; m' \/ N" l; L2 r+ }6 _
1.作用
1 ~; J; P/ s3 C! v2 d5 ~* q% `$ L1 V0 w+ K
ls命令用于显示目录内容,类似DOS下的dir命令,它的使用权限是所有用户。
* t- |2 ~& H0 b. g  G, S' @& F
# f- a; m, d. d2.格式
$ Q( c. t8 _9 O, b$ U# Z
" y0 Q. `+ H8 ]ls [options][filename]
' q+ _/ q6 t& q0 ]! |, v: s# F  t# T  K+ M7 d+ s/ i# `
3.options主要参数 5 a# ?2 Z3 [; s' q8 l; |" h' p, V

+ `$ L0 V$ K3 \+ K-a, --all:不隐藏任何以“.” 字符开始的项目。
( n, O# f- b, G' t8 p9 p# [( a" e$ i0 X
-A, --almost-all:列出除了“ . ”及 “.. ”以外的任何项目。
! L: V* {/ I% m+ K/ [8 I/ n' y8 n( t
--author:印出每个文件著作者。 5 n' p) g0 A- N* C

% \  n' J/ J- ]+ E9 P-b, --escape:以八进制溢出序列表示不可打印的字符。 ) O4 c/ R' L% H5 u2 f6 `: h4 o

2 b2 q9 O$ d; W' n) `" T--block-size=大小:块以指定&lt;大小&gt;的字节为单位。 8 ~( a/ e  X8 f" R, [/ `
! k! ]; j. J! x0 O& T) n
-B, --ignore-backups:不列出任何以 ~ 字符结束的项目。
$ G$ {! g$ `" j: w8 D. E* o0 y$ S" [9 |) E/ H8 X. i5 {
-f:不进行排序,-aU参数生效,-lst参数失效。 0 \  L* l" L* I; G
! B6 K, y: b8 \0 B" O
-F, --classify:加上文件类型的指示符号 (*/=@| 其中一个)。
& G* t7 \: n) ^+ I* E
2 h6 G# c8 X, @* @5 Q; x-g:like -l, but do not list owner。 / L( [+ H1 r# ]' P# [& W

; n/ I0 p5 s/ f-G, --no-group:inhibit display of group information。 0 _) U1 S8 y& w
2 }. O2 J' h% V( d; j
-i, --inode:列出每个文件的inode号。 7 g6 ]& D" N& H* @5 @( u

' F7 E- E# V# Z0 m+ ~; p-I, --ignore=样式:不印出任何符合Shell万用字符&lt;样式&gt;的项目。
, y# u' N7 D1 [1 K. h2 w  U- r- t% v: _* v# W/ |5 H
-k:即--block-size=1K。
  U9 B0 C4 b0 m  `/ t, u' S2 q* K7 e* N% b; P
-l:使用较长格式列出信息。 * l5 q$ H( v4 _' y$ _

! t, `* O4 {; E$ `: L. c( {-L, --dereference:当显示符号链接的文件信息时,显示符号链接所指示的对象,而并非符号链接本身的信息。
5 o+ r, L1 R8 F. Y% i  ^
) {. B, s9 }9 _0 p9 s3 {6 B7 s-m:所有项目以逗号分隔,并填满整行行宽。   C  J8 K" R& v7 R  c6 [( I" m3 s
/ q" e0 T+ Z& u" D. g
-n, --numeric-uid-gid:类似-l,但列出UID及GID号。
6 k( A) \* X2 R- U7 k( x: _% m1 X* {7 Q0 K
-N, --literal:列出未经处理的项目名称,例如不特别处理控制字符。 & s9 s& m: O4 E* f: m

) H& W( @- R6 t' z) G-p, --file-type:加上文件类型的指示符号 (/=@| 其中一个)。
8 w. ~; _  n1 l) U1 M. Y3 D- U0 \/ S
1 p% W" s; t( l5 [# ^$ s-Q, --quote-name:将项目名称括上双引号。
% s# z" e+ |! ?$ B/ v: _
* \$ G2 j# X+ a, K! J" ?) n: a-r, --reverse:依相反次序排列。
' K1 |6 f0 G$ D7 \) g. f/ _# C7 v6 |7 ^" i5 `: [/ f
-R, --recursive:同时列出所有子目录层。 - q8 h4 D9 {+ z2 F+ o2 |/ ^/ z
  k* ?, l1 U+ y5 b: D* N, p
-s, --size:以块大小为序。 8 t' Q9 \/ l4 F1 C& f# \) e

% x6 w, P2 T9 P1 ]7 m4.应用举例
4 N5 X1 K5 S: p, a* k! k- b% K, g3 _7 s3 Y
ls命令是Linux系统使用频率最多的命令,它的参数也是Linux命令中最多的。使用ls命令时会有几种不同的颜色,其中蓝色表示是目录,绿色表示是可执行文件,红色表示是压缩文件,浅蓝色表示是链接文件,加粗的黑色表示符号链接,灰色表示是其它格式文件。ls最常使用的是ls- l,见图1所示。 ( h$ r7 s, T' a1 H5 b  u
: C4 U+ Z( n" L$ i6 v) d
; j* B  F& [! @  H& s- u' R
% s5 F- A6 q$ f& a2 L0 z
- V0 e2 s( O* E9 f- H
图1 使用ls-l命令 6 G2 G0 o* |/ Z+ R, X' M

( _/ ]( {+ W- v' m8 \" ]8 j! U: D( m& p9 ?3 h
文件类型开头是由10个字符构成的字符串。其中第一个字符表示文件类型,它可以是下述类型之一:-(普通文件)、d(目录)、l(符号链接)、b(块设备文件)、c(字符设备文件)。后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件属主的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读(r)、写(w)和执行权限(x)。对于目录,表示进入权限。s表示当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组 ID)。t表示设置标志位(留在内存,不被换出)。如果该文件是目录,那么在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果它是可执行文件,那么在该文件执行后,指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。接着显示的是文件大小、生成时间、文件或命令名称。
  J$ M% Y7 Y$ O& V8 jdiff
9 g3 r( g3 T' y/ V2 I  G
6 j/ u3 ~: A" N7 W' q% k6 `+ m1.作用 9 X4 b3 ~+ {3 q9 ]0 C6 ?

1 e* x( [" n, C. X/ R+ sdiff命令用于两个文件之间的比较,并指出两者的不同,它的使用权限是所有用户。 0 @, M& m2 r  k5 K4 m. [% y

. O0 f8 B5 r- z0 T. H2.格式
( i8 P+ |8 S7 U! `8 n! B6 w& {0 o6 ?/ j/ B; o8 T
diff [options] 源文件 目标文件
) p, t) i( `  O0 U" S
, h7 y, R! J, b& C3.[options]主要参数
  b) ]% ?3 w  }- |2 q( x8 q: {: Y6 t9 R4 `
-a:将所有文件当作文本文件来处理。 ) O* Y) a) I* t, G
/ k& b* c3 F0 ]
-b:忽略空格造成的不同。
, N. m' [+ p8 o7 R1 Q
* D: w2 ?1 m- {9 b# ?1 a-B:忽略空行造成的不同。
9 t4 }- q; ~0 p# u3 g- m3 Q6 J6 F; n
-c:使用纲要输出格式。 5 Y) o9 K0 t7 ?2 h4 X: v7 H, |+ e

/ W, Q) F) O9 v' T7 _  q3 M) C-H:利用试探法加速对大文件的搜索。
0 @) `( }) w; Z, C8 T: E- r; H; `8 [  D4 |" a1 j1 K
-I:忽略大小写的变化。 ' ?% I+ Q9 o9 [( w7 p0 K; D

9 K; d; e, h, \5 G6 H-n --rcs:输出RCS格式。   }# N5 c- V# L8 C3 ?' n

- B3 P  R+ B. ]4 O. O, Icmp
: D6 R: L4 |8 |% X
7 P1 h  C" S$ N% z1 q5 |1.作用
! U* j5 S0 h% t, y, U! w, J, B' A5 ^8 s7 O
cmp(“compare”的缩写)命令用来简要指出两个文件是否存在差异,它的使用权限是所有用户。 8 u  Z( ?. \( `2 ?( \

8 }2 q1 _7 E& A2.格式 0 a7 f- w7 R, N/ e

. u! v9 r" B) i# J3 u5 Xcmp[options] 文件名
% F5 R8 P$ @4 D  T9 Z6 r$ W( ^' K% ]
3.[options]主要参数
, w( o3 D3 S) V5 P& {
7 `0 a9 h0 _4 y6 Y( l. Q% O-l: 将字节以十进制的方式输出,并方便将两个文件中不同的以八进制的方式输出。 : w& h+ k% ^; w

( X3 i) t2 ?5 q+ j/ o# o6 Qcat
0 {" N. X3 x2 s: W) q! a( k. ?
1 U) g- h( N7 s1.作用 4 R8 `3 g% C+ E: J
3 z, D5 i3 `0 O; D+ }+ f" y* _
cat(“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息,它的使用权限是所有用户。
: }3 V: Q/ ^8 x+ Y( Z* ?; g  B' R, z" Q% V
2.格式
, u7 g2 s$ c' W( X  A: s9 M* }6 D9 \- G' b& G) g: d
cat [options] 文件1 文件2……
' ^9 o$ q, M# ]* D# Q# j& C
. l* K5 E0 c9 r8 \% p2 X3.[options]主要参数
1 `  T6 I5 V, l! w6 B- z* m0 y( v( I$ h  P" p# G- D
-n:由第一行开始对所有输出的行数编号。
) e% J8 o: W) ~9 ]$ n# X* s, E2 I1 f* j) I" P, b) k& a& ~
-b:和-n相似,只不过对于空白行不编号。
5 q7 o( C4 d$ Y7 o" ]2 ]+ t1 n2 O5 z" k0 z
-s:当遇到有连续两行以上的空白行时,就代换为一行的空白行。 2 d8 g& y, R& K5 A& z5 k

# X  B5 G' M4 r5 I9 Y/ S0 t0 y7 A1 {4.应用举例
5 @+ p# P% X) d: ?% b( @+ t; i6 R5 {" N! K5 ^/ n+ I% F. Y
(1)cat命令一个最简单的用处是显示文本文件的内容。例如,我们想在命令行看一下README文件的内容,可以使用命令: 5 X) F7 y1 S: w) t
1 T. P8 |: V3 i, k+ i
$ cat README  ( ~% r1 ?! f# n" \# U

9 {6 v, N. j- ?(2)有时需要将几个文件处理成一个文件,并将这种处理的结果保存到一个单独的输出文件。cat命令在其输入上接受一个或多个文件,并将它们作为一个单独的文件打印到它的输出。例如,把README和INSTALL的文件内容加上行号(空白行不加)之后,将内容附加到一个新文本文件File1 中:
9 J( L" Z) [: d2 B* ?& s& d4 w5 S! [
$ cat README INSTALL File1 1 Q, }+ {- C4 H' G+ }

, g# S  ^3 \% H: S- d(3)cat还有一个重要的功能就是可以对行进行编号,见图2所示。这种功能对于程序文档的编制,以及法律和科学文档的编制很方便,打印在左边的行号使得参考文档的某一部分变得容易,这些在编程、科学研究、业务报告甚至是立法工作中都是非常重要的。 3 s9 T* \7 |3 X

; B& n* U' X: C4 F0 _- j$ c
7 W, `1 ^6 @6 E: p1 f3 x
* m  H7 ^4 B3 r, X! c
- \& I* S& [9 V2 d! i, i! a图2 使用cat命令/etc/named.conf文件进行编号
8 E: b' X/ @1 g: D. a4 g* ]
- n) z4 {, T/ y  O0 ~. v0 I
  n- ?: {& T# ~4 |对行进行编号功能有-b(只能对非空白行进行编号)和-n(可以对所有行进行编号)两个参数:
% Y- o, a$ _; s: b5 g8 _( P: o% g
; n" [2 L$ g  l3 z$ }$ cat -b /etc/named.conf # H! G# I: n6 |8 F1 l& a! ^! @9 G
6 E3 h! h4 b. [3 Z6 ^4 e% w
ln
1 m# \4 g) L6 I* q" X
% e0 W! h0 M$ O3 H  W. M% V# Q! s1.作用
9 A' @, @# ]) I! i9 d) a% t' |3 d1 Q
ln命令用来在文件之间创建链接,它的使用权限是所有用户。 / O/ z6 l/ a! k) q3 \5 r3 @/ d' ^

+ o. [) b/ G5 u+ a+ A2.格式
7 ~4 P- e& J" u5 R1 w/ f2 \: Z1 }( T- ?" c. Y' j2 \0 L
ln [options] 源文件 [链接名]
$ r8 y6 X. T! G; ?& Q* m' V1 [/ w4 R
- X# a+ I" \+ |' q3.参数 * E/ Q  v% O* H1 a

2 a/ z7 X3 a2 W* _- d$ j& s& O, `-f:链结时先将源文件删除。 6 @7 \! Z- S8 w3 }$ Z. @
1 s# ?% G" a: k, I
-d:允许系统管理者硬链结自己的目录。 . b* F3 \3 ~8 K6 K2 _

4 N% L' q2 u" r: H# Q$ `-s:进行软链结(Symbolic Link)。
, K/ R; n! v! S- r: w
1 R8 N2 V. x" S5 @7 f% R0 ?; U$ I-b:将在链结时会被覆盖或删除的文件进行备份。 8 j. M% E. o' g% \

4 Y  ~. u* W5 \4 s' l( A链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。
" l2 C1 ]) z# u$ \  s( t4 A7 E! L$ J$ n
硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。
1 t5 F4 J5 r" \, M4 b( m
. |# X1 S' Z9 v. U, P, }与硬连接相对应,Lnux系统中还存在另一种连接,称为符号连接(Symbilc Link),也叫软连接。软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。   l% v: |- U/ \# M

7 D+ T, F" {/ p/ M4 [2 ]! p动手联系
: x6 H$ \* h3 k
/ v- m1 ^! T. @: r/ V8 K9 i. t( T6 S上面我们介绍了Linux文件处理命令,下面介绍几个实例,大家可以动手练习一下刚才讲过的命令。 4 f  f# z: C. C! O& I% J$ ]

5 ~+ W! I  j7 X4 Y4 u0 y1.利用符号链接快速访问关键目录
. M0 t% p3 u) {* T
% ?. e1 y* Y: ?- w9 b9 x# N4 V; F% {7 y符号链接是一个非常实用的功能。假设有一些目录或文件需要频繁使用,但由于Linux的文件和目录结构等原因,这个文件或目录在很深的子目录中。比如,Apache Web服务器文档位于系统的/usr/local/httpd/htdocs中,并且不想每次都要从主目录进入这样一个长的路径之中(实际上,这个路径也非常不容易记忆)。
7 z7 o9 M6 U$ w( M/ Z
* i/ L, T5 @* k. V9 l为了解决这个问题,可以在主目录中创建一个符号链接,这样在需要进入该目录时,只需进入这个链接即可。
" c1 \; o9 e* e/ h
* v3 ]" C7 H" r; _为了能方便地进入Web服务器(/usr/local/httpd/htdocs)文档所在的目录,在主目录下可以使用以下命令: , X4 A' a& `( c( R

, \/ y6 C: a0 d. O# K0 S( w$ ln -s /usr/local/httpd/htdocs gg
( s+ U/ Z  N, ?! @+ f- _( x& e
" V& l! D1 v! M2 V/ W这样每次进入gg目录就可访问Web服务器的文档,以后如果不再访问Web服务器的文档时,删除gg即可,而真正的Web服务器的文档并没有删除。
9 T  {; ]- ?# W( |' F3 M1 K6 w" L- h' z9 W. @7 \5 Y
2.使用dd命令将init.rd格式的root.ram内容导入内存 2 a( i6 v. v1 R

! _+ O# p( B1 fdd if=/dev/fd0 of=floppy.fd 3 r; \% i9 {5 \

$ j2 _2 |! a1 ~3 P% c) ~1 R7 O. @dd if=root.ram of=/dev/ram0 # & a& _. k/ H7 _$ X5 z7 g! \# G

8 \9 q* H- q/ t' ^. E7 W! g# C3.grep命令系统调用
9 ~. Q5 }/ E( C9 Z4 v$ }4 c% O- {7 ~3 J
grep是Linux/Unix中使用最广泛的命令之一,许多Linux系统内部都可以调用它。
! j4 H& h$ N* E9 A3 q, [8 o1 R/ L
2 k% _0 U8 ~% O" F% G" k8 j(1)如果要查询目录列表中的目录,方法如下:
1 W# l7 S$ M# M3 P4 t: {
- Y3 @  a4 T  u! i6 d8 `7 ]: [) ~$ ls -l | grep '∧d' 5 o$ x/ T( B4 x& W& c+ \
2 t  d4 U) a+ Q
(2)如果在一个目录中查询不包含目录的所有文件,方法如下:
5 p1 q4 s0 j! Z: i1 u! }, [3 h: Q# ^% Z
$ ls -l | grep '∧[∧d]' 1 L: a& T  a$ B4 @

" C+ t& H+ A* o- S- H6 l(3)用find命令调用grep,如所有C源代码中的“Chinput”,方法如下: 8 J$ u) l- b" b# J, H

# j. n! o1 ^) J6 g+ [6 N$find /ZhXwin -name *.c -exec grep -q -s Chinput {} \;-print
5 J# T, S$ p9 W/ u- C' M& Q5 B# v2 P1 X* {
</P>
8 W2 P0 f1 o9 i2 X: d8 N </P>
作者: 一人    时间: 2007-8-14 18:31
最后一个
作者: neilhua    时间: 2010-2-16 17:36
楼主,辛苦了,谢谢!!!楼主,辛苦了,谢谢!!!
作者: 978462113    时间: 2010-4-22 13:34
楼主不错····顶·················
作者: hezhao    时间: 2010-6-10 07:36
不错,顶一个!
作者: 流水秋鸿    时间: 2010-12-1 10:41
好辛苦,学习了- i) o( O$ p/ b3 j6 ~  D$ ?* j3 ~

作者: huahouq    时间: 2010-12-6 21:05
楼主不错····顶·················
作者: 0tanggula    时间: 2010-12-17 14:01





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5