Linux常用命令简介

来源:互联网 发布:人工智能优缺点英语 编辑:程序博客网 时间:2024/06/02 04:14

扫盲行动之Linux常用命令简介 
一、Linux常用命令
su 
su命令是最基本的命令之一,常用于不同用户间切换。例如,如果登录为 user1,要切换
为user2,只要用如下命令: 
$su user2 
然后系统提示输入user2口令,输入正确的口令之后就可以切换到user2。完成之后就可以
用exit命令返回到user1。 
su命令的常见用法是变成根用户或超级用户。如果发出不带用户名的su命令 ,则系统提示
输入根口令,输入之后则可切换为根用户。 
如果登录为根用户,则可以用su命令成为系统上任何用户而不需要口令。 

pwd 
pwd命令也是最常用最基本的命令之一,用于显示用户当前所在的目录。 

cd 
cd命令不仅显示当前状态,还改变当前状态,它的用发跟dos下的cd命令基本一致。 
cd ..可进入上一层目录 
cd -可进入上一个进入的目录 
cd ~可进入用户的home目录 

ls 
ls命令跟dos下的dir命令一样,用于显示当前目录的内容。 
如果想取得详细的信息,可用ls -l命令, 这样就可以显示目录内容的详细信息。 
如果目录下的文件太多,用一屏显示不了,可以用ls -l |more分屏显示 。 

find 
find命令用于查找文件。这个命令可以按文件名、建立或修改日期、所有者(通常是建立文
件的用户)、文件长度或文件类型进行搜索。 
find命令的基本结构如下: 
$find 
其中指定从哪个目录开始搜索。指定搜索条件。表示找到文件怎么处理。一般来说,要用
-print动作,显示 整个文件路径和名称。如果没有这个动作,则find命令进行所要搜索而
不显示结果,等于白费劲。 
例如,要搜索系统上所有名称为ye的文件,可用如下命令: 
$find / -name ye -print 
这样就可以显示出系统上所有名称为ye的文件。 

tar 
tar最初用于建立磁带备份系统,目前广泛用于建立文件发布档案。可用如下方法建立tar
档案: 
$tar cvf 
例如,如果要将当前目录中所有文件存档到ye.tar中,可用如下命令: 
$tar cvf ye.tar *.* 
要浏览档案内容,将c选项变成t。如果要浏览ye.tar档案中的内容,可用如下命令: 
$tar tvf ye.tar 
要取出档案内的内容,将c选项变成x。如果要将ye.tar档案中的内容取到当前目录中,可
用如下命令: 
$tar xvf ye.tar 

gzip 
gzip命令用于压缩文件。 例如,如果要将ye.txt文件压缩,可用如下命令: 
$gzip ye.txt 
这样就可以压缩文件并在文件名后面加上gz扩展名,变成文件ye.txt.gz。 
解压缩文件可用gzip -d命令实现: 
$gzip -d ye.txt.gz 
这样就可以解压缩文件并删除gz扩展名。除此之外还可以用gunzip命令来解 压缩文件,效
果跟用gzip -d命令一样。 
旧版的tar命令不压缩档案,可用gzip压缩。例如: 
$tar cvf ye.tar *.txt 
$gzip ye.tar 
则可建立压缩档案ye.tar.gz。 
新版的tar可以直接访问和建立gzip压缩的tar档案,只要在tar命令中加上z 选项就可以了
。例如: 
$tar czvf ye.tar *.txt 
生成压缩档案ye.tar.gz, 
$tar tzvf ye.tar *.txt 
显示压缩档案ye.tar.gz的内容,而 
$tar xzvf ye.tar *.txt 
取出压缩档案ye.tar.gz的内容。 

mkdir 
这个命令很简单,跟dos的md命令用法几乎一样,用于建立目录。 

cp 
cp命令用于复制文件或目录。 
cp命令可以一次复制多个文件,例如: 
$cp *.txt *.doc *.bak /home 
将当前目录中扩展名为txt、doc和bak的文件全部复制到/home目录中。 
如果要复制整个目录及其所有子目录,可以用cp -R命令。 

rm 
rm命令用于删除文件或目录。 
rm命令会强制删除文件,如果想要在删除时提示确认,可用rm -i命令。 
如果要删除目录,可用rm -r命令。rm -r命令在删除目录时,每删除一个文件或目录都会
显示提示,如果目录太大,响应每个提示是不现实的。这时可以用 rm -rf命令来强制删除
目录,这样即使用了-i标志也当无效处理。 

mv 
mv命令用于移动文件和更名文件。例如: 
$mv ye.txt /home 
将当前目录下的ye.txt文件移动到/home目录下, 
$mv ye.txt ye1.txt 
将ye.txt文件改名为ye1.txt。 
类似于跟cp命令,mv命令也可以一次移动多个文件,在此不再赘叙。 

reboot 
重启命令,不必多说。 

halt 
关机命令,不必多说。 


二、UNIX 常用的指令: 
以下只说明各指令的基本用法, 若需详细说明, 请用 man 去读详细的 manual. 

a. 关於档案/目录处理的指令: 

1. ls 
这是最基本的档案指令。 ls 的意义为 "list",也就是将某一个目录或是 
某一个档案的内容显示出来。 

如果你在下 ls 指令後头没有跟著任何的档名,它将会显示出目前目录中所 
有档案。 

也可以在 ls 後面加上所要察看的目录名称或档案的名称,如 

% ls /home2/X11R5 

% ls first 

ls 有一些特别的参数,可以给予使用者更多有关的资讯,如下: 

-a : 在 UNIX 中若一个目录或档案名字的第一个字元为 "." , 则使用 ls 
将不会显示出这个档案的名字,我们称此类档案为隐藏档。如 tcsh 
的初设档 .tcshrc;如果我们要察看这类档案,则必须加上参数 -a 。 

-l : 这个参数代表使用 ls 的长( long )格式,可以显示更多的资讯, 
如档案存取权,档案拥有者( owner ),档案大小,档案最後更新 
日期,甚而 symbolic link 的档案是 link 那一个档等等。如下 

% ls -l 

drwx--x--x 2 jjtseng 512 Aug 8 05:08 18 
drwx--x--x 2 jjtseng 512 Aug 8 22:00 19 
-rw------- 1 jjtseng 566 Aug 8 05:28 makefile 

2. cp 
cp 这个指令的意义是复制("COPY") , 也就是将一个或多个档案复制成另 
一个档案或者是将其复制到另一个目录去。 

cp 的用法如下: 

cp f1 f2 : 将档名为 f1 的档案复制一份为档名为 f2 的档案。 
cp f1 f2 f3 ... dir : 将档案 f1 f2 f3 ... 都以相同的档名复制一 
份放到目录 dir 里面。 
cp -r dir1 dir2 : 将 dir1 的全部内容全部复制到 dir2 里面。 

cp 也有一些参数,如下: 

-i : 此参数是当已有档名为 f2 的档案时,若迳自使用 cp 将会将原来 f2 
的内容掩盖过去,因此在要盖过之前必须先询问使用者一下。如使用者 
的回答是y(yes)才执行复制的动作。 

-r : 此参数是用来做递回复制用,可将一整颗子树都复制到另一个 
目录中。 

3. mv 
mv 的意义为 move , 主要是将一档案改名或换至另一个目录。如同 cp ,它也有 
三种格式: 

mv f1 f2 : 将档名为 f1 的档案变更成档名为 f2 的档案。 
mv dir1 dir2 : 将档名为 dir1 的目录变更成档名为 dir2 的目录。 
mv f1 f2 f3 ... dir : 将档案 f1 f2 f3 ... 都移至目录 dir 里面。 

mv 的参数有两个,-f 和 -i , 其中 -i 的意义与 cp 中的相同,均是 interactive 
询问之意。而 -f 为强迫( force ) , 就是不管有没有同名的档案,反正我就是要 
搬过去,所有其他的参数遇到 -f 均会失效。 

4. rm 
rm 的意义是 remove ,也就是用来杀掉一个档案的指令。在 UNIX 中一 
个被杀掉的档案除非是系统恰好有做备份,否则是无法像 DOS 里面一样还能够救回 
来的。所以在做 rm 动作的时候使用者应该要特别小心。 

rm 的格式如下: 

rm f1 f2 f3 ..... 

而 rm 的参数比较常用的有几个: -f , -i , 与 -r 

-f : 将会使得系统在删除时,不提出任何警告讯息。 
-i : 在除去档案之前均会询问是否真要除去。 
-r : 递回式的删除。 

小心不要随便使用 rm -rf , 否则有一天你会"欲哭无泪"...... 

5. mkdir 
mkdir 是一个让使用者建立一个目录的指令。你可以在一个目录底下使用 
midir 建立一个子目录,使用的方法如下: 

mkdir dirname1 [ dirname2 ... ] 

如此你就可以建立一个或多个目录。 

6. chdir ( cd ) 
这是让使用者用来转移工作目录用的。 
chdir 的用法如下: 

chdir dirname 

如此你就可以将目前的目录转移到 dirname 这一个目录去。 
或使用 "chdir .." 来转移到上一层目录。 

7. rmdir 
相对於 mkdir ,rmdir 是用来将一个"空的"目录杀掉的。如果一个目录下面 
没有任何档案,你就可以用 rmdir 指令将其除去。rmdir 的使用法如下: 

rmdir dirname1 [ dirname2 .... ] 

如果一个目录底下有其他的档案, rmdir 将无法将这个目录杀掉,除非使用 
rm 指令的 -r 选项。 

8. pwd 
pwd 会将目前目录的路径( path )显示出来,例如: 

9. cat/more/less 
以上三个指令均为察看档案内容的指令。cat 的意义是猫....不不不,是 
concatenate ,在字典上的意思是"连结,将…串成锁状"( 语出资工电子 
词典 cdict ),其实就是把档案的内容显示出来的意思。 cat 有许多奇怪 
的参数,较常为人所使用的是 -n 参数,也就是把显示出来的内容加上行 
号。 cat 的用法如下: 

cat [-n] :自标准输入读进内容,你可以用 pipe 将别的程式的输出转向 
给 cat . 
cat [-n] filename : 将 filename 的内容读进来,显示在标准输出上。 

问题在於 cat 它是不会停下来的,因此并不好用( 试想如果一个萤幕二十 
四行,而一个档案四百行,cat 一出来将会劈哩啪啦不断的卷上去,使用者 
很难据此得到他们所需的资讯。) 所以才有人又写了 more 出来。 

more , 跟据蔡文能老师的说法是"再多一点就好",more 可以将所观察的档案 
跟据终端机的形态一页页的显示出来,再根据使用者的要求换页或卷行。如果 
使用者要在某一个档案中搜寻一个特定的字串,则按 / 然後跟著打所要搜寻 
的单字即可进行搜寻。more 也可以找得到。more 的使用法如下: 

more filename 

如果你在使用中觉得已经看到了所要看的部份,可以按'q'离开 more 的使用。 
在使用中按'v' 亦可以使用编辑器来编辑所观看的档案。 

less 的用法与 more 极类似,原先它就是为了弥补 more 只能往前方卷页的缺 
点而设计。 less 的用法如下: 

less filename 

其与 more 不同的是它可以按 y 来往上卷一行,并且可以用"?"来往回搜寻你所 
要找的单字。 

10. chmod 
chmod 为变更档案模式用( change mode ) . 这个指令是用来更改档案的存取模 
式( access mode )。在 UNIX 一个档案上有可读(r)可写(w)可执行(x)三种模式, 
分别针对该档案的拥有者( onwer )、同群者( group member )( 你可以 ls -lg 
来观看某一档案的所属的 group ),以及其他人( other )。一个档案如果改成可 
执行模式则系统就将其视为一个可执行档,而一个目录的可执行模式代表使用者 
有进入该目录之权利。chmod 就是用来变更一些档案的模式,其使用方式如下: 

chmod [ -fR ] mode filename ... 

其参数的意义如下: 

-f Force. chmod 不会理会失败的动作。 
-R Recurive. 会将所有子树下的所有子目录及档案改为你所要改成的模式。 

mode 可以为一个三位或四位的八进位数字,来表示对某些对象的存取权。详情 
可参阅 chmod(1) 的 manual page 中有关 Absolute Modes 的说明。 

或是用一个字串来表示,请参考 chmod(1) 的说明。 
b. 关於 Process 处理的指令: 

1. ps 
ps 是用来显示目前你的 process 或系统 processes 的状况。 
以下列出比较常用的参数: 

其选项说明如下: 
-a 列出包括其他 users 的 process 状况。 
-u 显示 user - oriented 的 process 状况 。 
-x 显示包括没有 terminal 控制的 process 状况 。 
-w 使用较宽的显示模式来显示 process 状况 。 

我们可以经由 ps 取得目前 processes 的状况,如 pid , running state 等。 

2. kill 
kill 指令的用途是送一个 signal 给某一个 process 。因为大部份送的都是 
用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill 。kill 的用法 
为: 

kill [ -SIGNAL ] pid ... 
kill -l 

SIGNAL 为一个 singal 的数字,从 0 到 31 ,其中 9 是 SIGKILL ,也就是一 
般用来杀掉一些无法正常 terminate 的讯号。其馀讯号的用途可参考 sigvec(2) 
中对 signal 的说明。 

你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形 
请参阅 man kill。 

c. 关於字串处理的指令: 

1. echo 
echo 是用来显示一字串在终端机上。□ echo -n 则是当显示完之後不会有跳行的 
动作。 


2. grep/fgrep 
grep 为一过滤器,它可自一个或多个档案中过滤出具有某个字串的行,或是 
自标准输入过滤出具有某个字串的行。 

fgrep 可将欲过滤的一群字串放在某一个档案中,然後使用 fgrep 将包含有 
属於这一群字串的行过滤出来。 

grep 与 fgrep 的用法如下: 

grep [-nv] match_pattern file1 file2 .... 
fgrep [-nv] -f pattern_file file1 file2 .... 

-n 把所找到的行在行前加上行号列出 
-v 把不包含 match_pattern 的行列出 
match_pattern 所要搜寻的字串 
-f 以 pattern_file 存放所要搜寻的字串 

d. 网路上查询状况的指令: 

1. man 
man 是手册 ( manual ) 的意思。 UNIX 提供线上辅助( on-line help )的功能, 
man 就是用来让使用者在使用时查询指令、系统呼叫、标准程式库函式、各种表 
格等的使用所用的。man 的用法如下: 

man [-M path] [[section] title ] ..... 
man [-M path] -k keyword ... 

-M path man 所需要的 manual database 的路径。 
我们也可以用设定环境变数 MANPATH 的方式来取代 -M 选项。 
title 这是所要查询的目的物。 
section 为一个数字表示 manual 的分类,通常 1 代表可执行指令, 
2 代表系统呼叫( system call ) ,3 代表标准函数,等等。 

像下面 man 查询的片段: 

SEE ALSO 
apropos(1), cat(1V), col(1V), eqn(1), lpr(1), more(1), 
nroff(1), refer(1), tbl(1), troff(1), vgrind(1), vtroff(1), 
whatis(1), eqnchar(7), man(7), catman( 

我们如要参考 eqnchar(7) 的资料,则我们就输入 man 7 eqnchar , 
便能取得我们所要的辅助讯息。 
-k keyword 
用来将含有这项 keyword 的 title 列出来。 

man 在 UNIX 上是一项非常重要的指令,我们在本讲义中所述之用法均仅只是一 
个大家比较常用的用法以及简单的说明,真正详细的用法与说明还是要请你使用 
man 来得到。 

2. who 
who 指令是用来查询目前有那些人在线上。 

3. w 

w 指令是用来查询目前有那些人在线上,同时显示出那些人目前的工作。 

4. ku 
ku 可以用来搜寻整个网路上的 user ,不像 w 跟 who 只是针对 local host 的 
查询. 而且 ku 提供让使用者建立搜寻特定使用者名单的功能。你可以建立一个档 
案 information-file 以条列的方式存放你的朋友的资料,再建立一个档案 
hosts-file 来指定搜寻的机器名称。 ku 的指令格式可由 ku -h 得到。 

E. 网路指令: 

UNIX 提供网路的连接,使得你可以在各个不同的机器上做一些特殊的事情,如 
你可以在系上的 iris 图形工作站上做图形的处理,在系上的 Sun 上读 News , 
甚至到学校的计中去找别系的同学 talk 。这些工作可以利用 UNIX 的网路指 
令,在你的位子上连到各个不同的机器上工作。如此一来,即使你在寝室,也能 
轻易的连至系上或计中来工作,不用像以前的人必须泡在冷冰冰的机房面。 

这些网路的指令如下所述: 

1. rlogin 与 rsh 
rlogin 的意义是 remote login , 也就是经由网路到另外一部机器 login 。 
rlogin 的格式是: 

rlogin host [ -l uname ] 

选项 -l uname 是当你在远方的机器上的 uname 和 local host 不同的 
时後,必须输入的选项,否则 rlogin 将会假设你在那边的 uname 与 local 
host 相同,然後在第一次 login 时必然会发生错误。 

rsh 是在远方的机器上执行某些指令,而把结果传回 local host 。rsh 的格式 
如下: 

rsh host [ -l uname ] [ command ] 

如同 rlogin 的参数 -l uname , rsh 的 -l uname 也是指定 remote host 
的 uname 。而 command 则是要在 remote host 上执行的指令。如果没有 
指定 command ,则 rsh 会去执行 rlogin ,如同直接执行 rlogin 。 

不过 rsh 在执行的时候并不会像一般的 login 程序一样还会问你 password , 而 
是如果你没有设定 trust table , 则 remote host 将不会接受你的 request 。 

rsh 须要在每个可能会做为 remote host 的机器上设定一个档案,称为 .rhosts。 
这个档案每一行分为两个部份,第一个是允许 login 的 hostname , 第二个部份 
则是允许 login 的 uname 。例如,在 ccsun7.csie.nctu.edu.tw 上头你的 
uname 为 ysjuang , 而你的 home 下面的 .rhost 有以下的一行: 

ccsun6.cc.nctu.edu.tw u8217529 

则在 ccsun6.cc.nctu.edu.tw 机器上的 user u8217529 就可以用以下的方法来 
执行 rsh 程式: 

% rsh ccsun7.csie.nctu.edu.tw -l ysjuang cat mbox 

将 ysjuang 在 ccsun7.csie.nctu.edu.tw 上的 mbox 档案内容显示在 local host 
ccsun6.cc.nctu.edu.tw 上。 

而如果 .rhost 有这样的一行,则 ccsun6.cc.nctu.edu.tw 上的 user u8217529 
将可以不用输入 password 而直接经由 rsh 或 rlogin login 到 
ccsun7.csie.nctu.edu.tw 来。 

注意: 

.rhost 是一个设定可以信任的人 login 的表格,因此如果设定不当将会让 
不法之徒有可以乘机侵入系统的机会。 如果你阅读 man 5 rhosts ,将会 
发现你可以在第一栏用 + 来取代任何 hostname ,第二栏用 + 来取代任何 
uname 。 

如一般 user 喜欢偷懒利用 " + uname " 来代替列一长串 hostname , 
但是这样将会使得即使有一台 PC 上跑 UNIX 的 user 有与你相同的 
uname , 也可以得到你的 trust 而侵入你的系统。这样容易造成系统 
安全上的危险。因此本系禁止使用这样子的方式写你的 .rhost 档,如果 
发现将予以停机直到你找中心的工作人员将其改正为止。 同理,如果你的 
第二个栏位为 + ,如" hostname + " ,则你是允许在某一部机器上的"所有" 
user 可以不用经由输入 password 来进入你的帐号,是壹种更危险的行为。 
所以请自行小心。 

2. telnet 
telnet 是一个提供 user 经由网路连到 remote host。 
telnet 的 格式如下: 

telnet [ hostname | ip-address ] [ port ] 

hostname 为一个像 ccsun1 或是 ccsun1.cc.nctu.edu.tw 的 name address, 
ip-address 则为一个由四个小於 255 的数字组成的 ip address ,如 ccsun1 
的 ip-address 为 140.113.17.173 ,ccsun1.cc.nctu.edu.tw 的 ip-address 
为 140.113.4.11 。你可以利用 telnet ccsun1 或 telnet 140.113.17.173 来 
连到 ccsun1。 

port 为一些特殊的程式所提供给外界的沟通点,如资工系的 MUD 其 server 便 
提供一些 port 让 user 由这些 port 进入 MUD 程式。详情请参阅 telnet(1) 
的说明。 


3. ftp 
ftp 的意义是 File Transfer Program ,是一个很常应用在网路档案传输的 
程式。ftp 的格式如下: 

ftp [ hostname | ip-address ] 

其中 hostname | ip-address 的意义跟 telnet 中的相同。 

在进入 ftp 之後,如果与 remote host 连接上了,它将会询问你 uname 
与密码,如果输入对了就可以开始进行档案传输。 

在 ftp 中有许多的命令,详细的使用方式请参考 ftp(1) ,这里仅列出较常 
用的 cd , lcd , mkdir , put , mput , get , mget , binary , ascii , 
prompt , help 与 quit 的使用方式。 

ascii 将传输模式设为 ascii 模式。通常用於传送文字档。 

binary 将传输模式设为 binary 模式,通常用於传送执行档,压缩档与影像 
档等。 
cd remote-directory 将 remote host 上的工作目录改变。 

lcd [ directory ] 更改 local host 的工作目录。 

ls [ remote-directory ] [ local-file ] 列出 remote host 上的档案。 

get remote-file [ local-file ] 取得远方的档案。 

mget remote-files 可使用通用字元一次取得多个档案。 

put local-file [ remote-file] 将 local host 的档案送到 remote host。 

mput local-files 可使用通用字元一次将多个档案放到 remote host 上。 

help [ command ] 线上辅助指令。 

mkdir directory-name 在 remote host 造一个目录。 

prompt 更改交谈模式,若为 on 则在 mput 与 mget 时每作一个档案之传 
输时均会询问。 

quit/bye 离开ftp . 

利用 ftp ,我们便可以在不同的机器上将所需要的资料做转移,某些特别的 
机器更存放大量的资料以供各地的使用者抓取,本校较著名的 ftp server 
有 NCTUCCCA 与系上的 ftp.csie.nctu.edu.tw 。这些 ftp server 均有提 
供一个 user 称为 anonymous ,一般的"外来客"可以利用这个 uname 取 
得该 server 的公共资料。不过 anonymous 在询问 password 时是要求使用 
anonymous 的使用者输入其 email address,以往有许多台湾的使用者在使用 
国外的 ftp server 时并没有按照人家的要求输入其 email address,而仅是 
随便打一些字串,引起许多 internet user 和管理者的不满,对台湾的使用 
者的风评变得很差,因此遵循各 ftp server 的使用规则也是一件相当重要的事。 

f. 关於通讯用的指令: 

1. write 
这个指令是提供使用者传送讯息给另一个使用者,使用方式: 
write uname [tty] 

2. talk/ytalk/cytalk/ctalk 
UNIX 专用的交谈程式。会将萤幕分隔开为你的区域和交谈对象的区域, 
同时也可和不同机器的使用者交谈。使用方式: 

talk uname[@host] [tty] 

3. mesg 
选择是否接受他人的 messege , 若为 messege no 则他人的 messege 将无法 
传送给你,同时他也无法干扰你的工作。使用方法: 

mesg [-n|-y] 

4. mail/elm 
在网路上的 email 程式,可经由此程式将信件 mail 给他人。 使用方式: 

mail [username] 
mail -f mailboxfile 

如有信件,则直接键入 mail 可以读取你的 mail . 

elm 提供较 mail 更为方便的介面,而且可做线上的 alias . 你可以进入 elm 
使用上下左右键来选读取的信件,并可按 h 取得线上的 help 文件。 

使用方式: 

elm [usernmae] 
elm -f mailboxfile 

g. 编译器( Compiler ): 
Compiler 的用处在於将你所撰写的程式翻译成一个可执行档案。在资工系常 
用的程式语言是 C , pascal , FORTRAN 等。你可以先写好一个 C 或 Pascal 
或 FORTRAN 的原始程式档,再用这些 compiler 将其翻成可执行档。你可以 
用这个方法来制造你自己的特殊指令。 

1. cc/gcc (C Compiler) 
/usr/bin/cc 
/usr/local/bin/gcc 

语法: cc [ -o execfile ] source 
gcc [ -o execfile ] source 

execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可 
执行档会以 a.out 做为档名。 source 为一个以 .c 做为结尾的 C 程式档。 
请参阅 cc(1) 的说明。 

2. pc (Pascal Compiler) 
/usr/local/bin/pc 

语法: pc [ -o execfile ] source 

execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可 
执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 Pascal 程 
式档。 请参阅 /net/home5/lang/man 中 pc(1) 的说明。 

3. f77 (Fortran Compiler) 
/net/home5/lang/f77 

语法: f77 [ -o execfile ] source 

execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可 
执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 FORTRAN 程 
式档。 

h. 有关列印的指令: 
以下为印表所会用到的指令,在本系的印表机有 lp1 , lp2 ( 点矩阵印表机 ), 
lw , sp , ps , compaq ( 雷射印表机 ),供使用者使用。 

1. lpr 
lpr 为用来将一个档案印至列表机的指令。 

用法: 
lpr -P[ printer ] file1 file2 file3 .... 

或 
lpr -P[ printer ] < file1 

例子: 
lpr -Plp1 hello.c hello.lst hello.map 
lpr -Plp1 < hello.c 

前者以参数输入所要印出的档案内容,後者列印标准输入档案( standard input ) 
的内容,因已将 hello.c 转向到标准输入,故会印出 hello.c 的档案内容。 

2. lpq 
lpq 是用来观察 printer queue 上的 Jobs 。 

用法: 
lpq -P[ printer ] 


3. lprm 
lprm 是用来取消列印要求的指令。 通常我们有时会印错,或是误送非文字档 
资料至 printer , 此时就必须利用 lprm 取消列印 request ,以免造成资源 
的浪费。 

用法: 
lprm -P[ printer ] [ Jobs id | uname ] 

lprm 用来清除 printer queue 中的 Jobs , 如果你使用 Job Id 作为参数,则 
它将此 Job 自printer queue 清除,如果你用 uname作为参数,则它将此 queue 
中所有 Owner 为此 uname 的 Jobs 清除。 

i. 更改个人使用资料: 

1. passwd 
passwd 是用来更改你的使用密码,用法为: 

passwd [ uname ] 

在使用 passwd 的时候,它会先问你的旧密码,然後询问两次要更改的密码,确定 
无误後才将你的密码改掉。 

2. chsh 
chsh 是提供使用者更换 login shell 的指令,你可经由此更换自己使用的 shell 。 



=================================================================== 

1、grep、fgrep和egrep命令 

  这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的
字 
符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。
gr 
ep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和
 
可 
选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。 

  这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是
一 
些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序时,可以用它来寻找
某 
一个函数,或是相关的词组。grep命令的搜索功能比fgrep强大,因为grep命令的搜索模式
 
可 
以是正则表达式,而fgrep却不能。有关正则表达式请参见shell一章。 

  该组命令中的每一个命令都有一组选项,利用这些选项可以改变其输出方式。例如,
可 
以在搜索到的文本行上加入行号,或者只输出文本行的行号,或者输出所有与搜索模式不
匹 
配的文本行,或只简单地输出已搜索到指定模式的文件名,并且可以指定在查找模式时忽
略 
大小写。 

  这组命令在指定的输入文件中查找与模式匹配的行。如果没有指定文件,则从标准输
入 
中读取。正常情况下,每个匹配的行被显示到标准输出。如果要查找的文件是多个,则在
每 
一行输出之前加上文件名。 

  语法: 

  grep [选项] [查找模式] [文件名1,文件名2,……] 

  egrep [选项] [查找模式] [文件名1,文件名2,……] 

  fgrep [选项] [查找模式] [文件名1,文件名2,……] 

  这组命令各选项的含义为: 

  - E 每个模式作为一个扩展的正则表达式对待。 

  - F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。 

  - b在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。 

  - c 只显示匹配行的数量。 

  - i 比较时不区分大小写。 

  - h 在查找多个文件时,指示grep不要将文件名加入到输出之前。 

  - l 显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现匹配
串 
时,不重复显示此文件名。 

  - n 在输出前加上匹配串所在行的行号(文件首行行号为1)。 

  - v 只显示不包含匹配串的行。 

  - x 只显示整行严格匹配的行。 

  - e expression 指定检索使用的模式。用于防止以“-”开头的模式被解释为命令选
项 
。 

  - f expfile 从expfile文件中获取要搜索的模式,一个模式占一行。 

  对该组命令的使用还需注意以下方面: 

  在命令后键入搜索的模式,再键入要搜索的文件。其中,文件名列表中也可以使用特
殊 
字符,如“*”等,用来生成文件名列表。如果想在搜索的模式中包含有空格的字符串,可
 
以 
用单引号把要搜索的模式括起来,用来表明搜索的模式是由包含空格的字符串组成。否则
, 
Shell将把空格认为是命令行参数的定界符,而grep命令将把搜索模式中的单词解释为文件
 
名 
列表中的一部分。在下面的例子中,grep命令在文件example中搜索模式“text file”。
 

  $ grep ’text file’ example 

   用户可以在命令行上用Shell特殊字符来生成将要搜索的文件名列表。在下面的例子
 
中 
,特殊字符“*”用来生成一个文件名列表,该列表包含当前目录下所有的文件。该命令将
 
搜 
索出当前目录下所有文件中与模式匹配的行。 

  $ grep data * 

   特殊字符在搜索一组指定的文件时非常有用。例如,如果想搜索所有的C程序源文件
 
中 
特定的模式,您可以用“*.c”来指定文件名列表。假设用户的 C程序中包含一些不必要的
 
转 
向语句(goto语句),想要找到这些语句,可以用如下的命令来搜索并显示所有包含goto
语 
句的代码行: 

  $ grep goto *.c 

  用户可以在命令行上键入搜索模式,也可以使用-f选项从指定文件中读取要搜索的模
式 
。在文件中,每个搜索模式占一行。如果经常要搜索一组常见字符串时,这个功能非常有
用 
。在下面的例子中,用户要在文件exam中搜索字符串“editor”和“create”,就把要搜
索 
的模式放置在文件mypats中,然后,grep命令从文件mypats中读取要搜索的模式。 

  $ cat mypats 

  editor 

  create 

  $ grep -f mypats exam 

  文件查找命令 

2、find命令 

  功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件
, 
功能很强大。 

  语法:find 起始目录 寻找条件 操作 

  说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条
件 
的文件并对之采取相关的操作。 

  该命令提供的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件。逻辑
运 
算符and、or、not的含义为: 

  (1)and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的
条 
件都满足时,寻找条件才算满足。例如: 

  $ find –name ’tmp’ –xtype c -user ’inin’ 

  该命令寻找三个给定条件都满足的所有文件。 

  (2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满
 
足 
时,寻找条件就算满足。例如: 

  $ find –name ’tmp’ –o –name ’mina*’ 
  
  该命令查询文件名为’tmp’或是匹配’mina*’的所有文件。 

  (3)not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文
件 
。例如: 

  $ find ! –name ’tmp’ 

  该命令查询文件名不是’tmp’的所有文件。 

  需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免
Sh 
ell本身对括号引起误解,在话号前需要加转义字符“”来去除括号的意义。 

  例:$ find (–name ’tmp’ –xtype c -user ’inin’ ) 

  寻找条件有以下选项: 

  首先,下列各个选项中的n值可以有三种输入方式,假设n为20,则: 

  +20 表示20以后(21,22,23等) 

  -20 表示20以前(19,18,17等) 

  20 表示正好是20 

  1. 以名称和文件属性查找。 

  - name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、[
] 
。 

  - lname ’字串’ 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符

、?、[]。 

  -gid n 查找属于ID号为n的用户组的所有文件。 

  -uid n 查找属于ID号为n的用户的所有文件。 

  -group ’字串’ 查找属于用户组名为所给字串的所有的文件。 

  -user ’字串’ 查找属于用户名为所给字串的所有的文件。 

  -empty 查找大小为0的目录或文件。 

  -path ’字串’ 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[]
 
。 


  -perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。 

  -size n[bckw] 查找指定文件大小的文件,n后面的字符表示单位,缺省为b,代表
51 
2字节的块。 

  -type x 查找类型为x的文件,x为下列字符之一: 

  b 块设备文件 

  c 字符设备文件 

  d 目录文件 

  p 命名管道(FIFO) 

  f 普通文件 

  l 符号链接文件(symbolic links) 

  s socket文件 

  -xtype x 与-type基本相同,但只查找符号链接文件。 

  2. 以时间为条件查找 

  - amin n 查找n分钟以前被访问过的所有文件。 

  - atime n 查找n天以前被访问过的所有文件。 

  - cmin n 查找n分钟以前文件状态被修改过的所有文件。 

  - ctime n 查找n天以前文件状态被修改过的所有文件。 

  - mmin n 查找n分钟以前文件内容被修改过的所有文件。 

  - mtime n 查找n天以前文件内容被修改过的所有文件。 

  3. 可执行的操作 

  - exec 命令名称 {} 对符合条件的文件执行所给的Linux 命令,而不询问用户是否需
 
要 
执行该命令。{}表示命令的参数即为所找到的文件;命令的末尾必须以“ ;”结束。 


  - ok 命令名称 { } 对符合条件的文件执行所给的Linux 命令,与exec不同的是,它
会 
询问用户是否需要执行该命令。 

  - ls 详细列出所找到的所有文件。 

  - fprintf 文件名 将找到的文件名写入指定文件。 

  - print 在标准输出设备上显示查找出的文件名。 

  - printf 格式 格式的写法请参考有关C语言的书。 

  例1:查找当前目录中所有以main开头的文件,并显示这些文件的内容。 

  $ find . - name ‘main*’ - exec more {} ; 

  例2:删除当前目录下所有一周之内没有被访问过的a .out或*.o文件。 

  $ find . (- name a.out - o - name ‘*.o’) 

  > - atime +7 - exec rm {} ; 

  说明如下: 

  命令中的“.”表示当前目录,此时find将从当前目录开始,逐个在其子目录中查找满
 
足 
后面指定条件的文件。(和)表示括号(),其中的“”称为转义符。之所以这样写是由
于 
对Shell而言,(和)另有不同的含义,而不是这里的用于组合条件的用途。“- name a.
ou 
t”是指要查找名为a.out的文件;“- name ‘*.o’”是指要查找所有名字以 .o结尾的文
 
件 
。这两个- name之间的- o表示逻辑或(or),即查找名字为a.out或名字以 .o结尾的文件
 
, 
find在当前目录及其子目录下找到这佯的文件之后,再进行判断,看其最后访问时间是否
在 
7天以前(条件-atime +7),若是,则对该文件执行命令rm(- exec rm{ };)。其中{ 

代 
表当前查到的符合条件的文件名,;则是语法所要求的。上述命令中第一行的最后一个是
续 
行符。当命令太长而在一行写不下时,可输入一个,之后系统将显示一个>,指示用户继续
 
输 
入命令。 

3、locate命令 

  locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数
据 
库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地
 
来 
搜寻所需文件了。 

  该命令的一般形式为: 

  locate 相关字 

  例如:查找相关字issue 

  $ locate issue 

  /etc/issue 

  /etc/issue.net 

  /usr/man/man5/issue.5 

  /usr/man/man5/issue.net.5 

--
页面执行时间:129.633毫秒

原创粉丝点击