unix常用命令
上一篇 / 下一篇 2007-10-15 00:00:00 / 个人分类:UNIX/LINUX
a. 关於档案/目录处理的指令:
;yn2~+m2Jd(m:W0
7Kc5Jd!V;S01. ls 这是最基本的档案指令。 ls 的意义为 "list",也就是将某一个目录或是 某一个档案的内容显示出来。 如果你在下 ls 指令後头没有跟著任何的档名,它将会显示出目前目录中所 有档案。 也可以在 ls 後面加上所要察看的目录名称或档案的名称,如
F8G*u:e*Y*?/h'q0ITPUB个人空间}d#V e0AM"Yen
% ls /home2/X11R5 ITPUB个人空间 H6]$_:~ F6Op@^
znX3nIk0% ls first ITPUB个人空间4CHS3U)_I&y7h
[+r.M0dj(]&Z0ls 有一些特别的参数,可以给予使用者更多有关的资讯,如下: ITPUB个人空间0j2Yf4uj;n\8_!A
8?/D"R"|?Gb0-a : 在 UNIX 中若一个目录或档案名字的第一个字元为 "." , 则使用 ls 将不会显示出这个档案的名字,我们称此类档案为隐藏档。如 tcsh 的初设档 .tcshrc;如果我们要察看这类档案,则必须加上参数 -a 。
e3_#c3E|7ZI0ITPUB个人空间K0B1`:FS|$uf%Zy
-l : 这个参数代表使用 ls 的长( long )格式,可以显示更多的资讯, 如档案存取权,档案拥有者( owner ),档案大小,档案最後更新 日期,甚而 symbolic link 的档案是 link 那一个档等等。如下
*p]i3qj0
*Jh$\8ub-d)Y9p0% ls -l
,_gub3U&`aja0
"~f9K
|,h/a.D0FT0drwx--x--x 2 jjtseng 512 Aug 8 05:08 18 ITPUB个人空间`-frJ#z G#c
drwx--x--x 2 jjtseng 512 Aug 8 22:00 19 ITPUB个人空间7W s
O/Q3GcUL
-rw------- 1 jjtseng 566 Aug 8 05:28 makefile ITPUB个人空间)T&Z4Q8YxYS\
){vD8V4t9q'kcU/]02. cp ITPUB个人空间e}:c/H*}E8NFv
cp 这个指令的意义是复制("COPY") , 也就是将一个或多个档案复制成另 一个档案或者是将其复制到另一个目录去。
%zp[&yt$?0
?'z `V
dt I{0cp 的用法如下: ITPUB个人空间&m
|J
r\C ?#f
.JR?;jzd0cp f1 f2 : 将档名为 f1 的档案复制一份为档名为 f2 的档案。
\;\:};y+u.G_Z.C0cp f1 f2 f3 ... dir : 将档案 f1 f2 f3 ... 都以相同的档名复制一 份放到目录 dir 里面。 ITPUB个人空间 IY2k;h:fRv"V&`/POx
cp -r dir1 dir2 : 将 dir1 的全部内容全部复制到 dir2 里面。
k#f}8D-?-h](o^-n~0
|hABD^Y0cp 也有一些参数,如下:
*zR ^P.Ey6B"j(mA;?0ITPUB个人空间.Tr5q
N"m#aC
-i : 此参数是当已有档名为 f2 的档案时,若迳自使用 cp 将会将原来 f2 的内容掩盖过去,因此在要盖过之前必须先询问使用者一下。如使用者 的回答是y(yes)才执行复制的动作。
]7Ti1CZ;|jJ+Ff0
3Y9bSIxAs;lZ0-r : 此参数是用来做递回复制用,可将一整颗子树都复制到另一个 目录中。 ITPUB个人空间.jzJPH
!F(?b+_ ^
w`nX03. mv
(Y T8BH(I"c@D0mv 的意义为 move , 主要是将一档案改名或换至另一个目录。如同 cp ,它也有 三种格式:
gQE)p#l9N+L0
F!JE*{v*K|0mv f1 f2 : 将档名为 f1 的档案变更成档名为 f2 的档案。
rT(?@2N6^2Di0mv dir1 dir2 : 将档名为 dir1 的目录变更成档名为 dir2 的目录。
N!Z8S4_Z_k4U[0mv f1 f2 f3 ... dir : 将档案 f1 f2 f3 ... 都移至目录 dir 里面。
Sqz}.w3yO"BG!}C0ITPUB个人空间Ip0rM8f!^,]
mv 的参数有两个,-f 和 -i , 其中 -i 的意义与 cp 中的相同,均是 interactive 询问之意。而 -f 为强迫( force ) , 就是不管有没有同名的档案,反正我就是要 搬过去,所有其他的参数遇到 -f 均会失效。
$y8j&wx6^]u;iRl0ITPUB个人空间6|P
Vv5TR
4. rm ITPUB个人空间u
Etx.MC
rm 的意义是 remove ,也就是用来杀掉一个档案的指令。在 UNIX 中一 个被杀掉的档案除非是系统恰好有做备份,否则是无法像 DOS 里面一样还能够救回 来的。所以在做 rm 动作的时候使用者应该要特别小心。
3lI9cJdNh&a0
a[-Kf7e$cl U/dZ'[g0rm 的格式如下: ITPUB个人空间P)l3MJ@
ro+YY1ZOqd'B/u0rm f1 f2 f3 ..... 而 rm 的参数比较常用的有几个: -f , -i , 与 -r ITPUB个人空间lg%MvZ;?z7S
2YIf%Y_Jn#u
d\"Z0-f : 将会使得系统在删除时,不提出任何警告讯息。 ITPUB个人空间n RWZ&o
r9c
-i : 在除去档案之前均会询问是否真要除去。
"Nq/D8N^#?@e
]0-r : 递回式的删除。 小心不要随便使用 rm -rf , 否则有一天你会"欲哭无泪"...... ITPUB个人空间 ClOX
F,Ed&|Ph
ITPUB个人空间;^H0yXT!M
E%PH
5. mkdir ITPUB个人空间.i/JR~BO8~T
mkdir 是一个让使用者建立一个目录的指令。你可以在一个目录底下使用 ITPUB个人空间 ?}F0J^2P
midir 建立一个子目录,使用的方法如下:
aVI`,u4}0
'X9jj"m;nV0M#CV_0mkdir dirname1 [ dirname2 ... ] 如此你就可以建立一个或多个目录。
v,y'Z)Z?0
s*f]Sp06. chdir ( cd ) 这是让使用者用来转移工作目录用的。 ITPUB个人空间v;Y+Q([7^|
RB4h
chdir 的用法如下: ITPUB个人空间k1P'Y| N&ls
^ P3Hec|E Mx0chdir dirname 如此你就可以将目前的目录转移到 dirname 这一个目录去。 或使用 "chdir .." 来转移到上一层目录。
lJfE|(_oS$zu0ITPUB个人空间.q+^bC\WX }I7h
7. rmdir 相对於 mkdir ,rmdir 是用来将一个"空的"目录杀掉的。如果一个目录下面 没有任何档案,你就可以用 rmdir 指令将其除去。rmdir 的使用法如下:
G_"k^$UP_,A0ITPUB个人空间^(o*a$k#iM-W8e-Z
rmdir dirname1 [ dirname2 .... ] 如果一个目录底下有其他的档案, rmdir 将无法将这个目录杀掉,除非使用
m;\G`(hq0rm 指令的 -r 选项。 ITPUB个人空间 KQ6T"VGgi9Cd
X$e Ga?rmG08. pwd ITPUB个人空间sK"w._0m h~r
pwd 会将目前目录的路径( path )显示出来,例如:
4j0R1Xj P*m0
%H#N'r;t;O8[)e$Y09. cat/more/less 以上三个指令均为察看档案内容的指令。cat 的意义是猫....不不不,是 ITPUB个人空间:X5a~l)L!?S Q&p
concatenate ,在字典上的意思是"连结,将…串成锁状"( 语出资工电子 词典 cdict ),其实就是把档案的内容显示出来的意思。 cat 有许多奇怪 的参数,较常为人所使用的是 -n 参数,也就是把显示出来的内容加上行 号。 cat 的用法如下: ITPUB个人空间
pC!V
Nhp C
E0p&k.h$N.TIT0cat [-n] :自标准输入读进内容,你可以用 pipe 将别的程式的输出转向 给 cat . ITPUB个人空间)qM'NS*V
cat [-n] filename : 将 filename 的内容读进来,显示在标准输出上。 问题在於 cat 它是不会停下来的,因此并不好用( 试想如果一个萤幕二十 四行,而一个档案四百行,cat 一出来将会劈哩啪啦不断的卷上去,使用者 很难据此得到他们所需的资讯。) 所以才有人又写了 more 出来。
(H O9Tg/o"N,U
D*c0ITPUB个人空间jr!g!v
~5j)p
more , 跟据蔡文能老师的说法是"再多一点就好",more 可以将所观察的档案 跟据终端机的形态一页页的显示出来,再根据使用者的要求换页或卷行。如果 使用者要在某一个档案中搜寻一个特定的字串,则按 / 然後跟著打所要搜寻 的单字即可进行搜寻。more 也可以找得到。more 的使用法如下: ITPUB个人空间H4xZ5c9KXo
U/@Q(H7N,B9W0more filename 如果你在使用中觉得已经看到了所要看的部份,可以按´q´离开 more 的使用。 在使用中按´v´ 亦可以使用编辑器来编辑所观看的档案。
]&U'g+B6i9}*xa#sZufv0
IA@'ce;U[ HH(z0less 的用法与 more 极类似,原先它就是为了弥补 more 只能往前方卷页的缺 点而设计。 less 的用法如下: ITPUB个人空间\F*B
L:}*Ze2x
ITPUB个人空间 B0Ro+vK(z
less filename 其与 more 不同的是它可以按 y 来往上卷一行,并且可以用"?"来往回搜寻你所 要找的单字。 ITPUB个人空间,P9nO e:{GgP
5kw8f%_5?
~U010. chmod ITPUB个人空间m"`C$w_3]0Yp`
chmod 为变更档案模式用( change mode ) . 这个指令是用来更改档案的存取模 式( access mode )。在 UNIX 一个档案上有可读(r)可写(w)可执行(x)三种模式, 分别针对该档案的拥有者( onwer )、同群者( group member )( 你可以 ls -lg 来观看某一档案的所属的 group ),以及其他人( other )。一个档案如果改成可 执行模式则系统就将其视为一个可执行档,而一个目录的可执行模式代表使用者 有进入该目录之权利。chmod 就是用来变更一些档案的模式,其使用方式如下: ITPUB个人空间[pYL;p{o
ITPUB个人空间neR [9V'W
chmod [ -fR ] mode filename ... 其参数的意义如下:
x
j"{]&f'`_0ITPUB个人空间]C [][Y2[:@6Q
-f Force. chmod 不会理会失败的动作。
T1PDw ^0-R Recurive. 会将所有子树下的所有子目录及档案改为你所要改成的模式。
IK8K8n/{T0
E\O\;Wj6P0IPkt0mode 可以为一个三位或四位的八进位数字,来表示对某些对象的存取权。详情 可参阅 chmod(1) 的 manual page 中有关 Absolute Modes 的说明。 或是用一个字串来表示,请参考 chmod(1) 的说明。
%f{ P&M!D
Ws0b. 关於 Process 处理的指令: ITPUB个人空间6KS(z9k'TW9h
ITPUB个人空间i%Un5qe
1. ps
JzVoWWe
k,Cv0ps 是用来显示目前你的 process 或系统 processes 的状况。 以下列出比较常用的参数: 其选项说明如下: ITPUB个人空间gB4LIb1\
-a 列出包括其他 users 的 process 状况。
L2A#T%pIK,W;m1S0-u 显示 user - oriented 的 process 状况 。
5fj3ya"G%g0-x 显示包括没有 terminal 控制的 process 状况。
T*[u2E
xri+U1T.p0-w 使用较宽的显示模式来显示 process 状况 。 我们可以经由 ps 取得目前 processes 的状况,如 pid , running state 等。
sg^Y'n2G'} w0
)~O*?0MWP2?B02. kill
{F{$b,RH0kill 指令的用途是送一个 signal 给某一个 process 。因为大部份送的都是 用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill 。kill 的用法 为: ITPUB个人空间 [$z
xs#@S
Cfnl
t3Q\W.xhL0kill [ -SIGNAL ] pid ...
~QiHcSoI0kill -l ITPUB个人空间-kZE~a
]o;xM8sJ%os;A2p0SIGNAL 为一个 singal 的数字,从 0 到 31 ,其中 9 是 SIGKILL ,也就是一 般用来杀掉一些无法正常 terminate 的讯号。其馀讯号的用途可参考 sigvec(2) 中对 signal 的说明。 你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形 请参阅 man kill。
ZlK-g;PG0ITPUB个人空间u9G x.J.E:|T-A
c. 关於字串处理的指令: ITPUB个人空间
cp H4e1{ m
ITPUB个人空间/Z!mXmx5M(`,V
1. echo
t6Ct3{L-\6V.T0echo 是用来显示一字串在终端机上。□ echo -n 则是当显示完之後不会有跳行的动作。 ITPUB个人空间bc#C
I!i
].c+w-FG0
:m;RWEf02. grep/fgrep ITPUB个人空间}7T$fxDro
grep 为一过滤器,它可自一个或多个档案中过滤出具有某个字串的行,或是 自标准输入过滤出具有某个字串的行。
;p!C-VBiqI0
s)\P}-hZ Ns0fgrep 可将欲过滤的一群字串放在某一个档案中,然後使用 fgrep 将包含有 属於这一群字串的行过滤出来。 ITPUB个人空间dz}`k}._b_'Z~5d~
VV\*_(`/y0grep 与 fgrep 的用法如下:
p GC
[k@V0ITPUB个人空间Qc+a Y @
grep [-nv] match_pattern file1 file2 .... ITPUB个人空间/tY"PKE
fgrep [-nv] -f pattern_file file1 file2 ....
&cp_/u;m1O[+]"R0
C'H y6{5K(Q0-n 把所找到的行在行前加上行号列出