目录及文件操作命令详解

1.1 ls 

[语法]: ls [-RadCxmlnogrtucpFbqisf1] [目录或文件......] 
[说明]: ls 命令列出指定目录下的文件,缺省目录为当前目录 ./,缺省输出顺序为纵向按字符顺序排列。 
-R 递归地列出每个子目录的内容 
-a 列出所有文件,包括第一个字符为“.”的隐藏文件 
-d 若后面参数是目录,则只列出目录名而不列出目录内容,常与-l选项连 
用以显示目录状态。 
-C 输出时多列显示 
-x 横向按字符顺序排列 
-m 输出按流式格式横向排列,文件名之间用逗号(,)分隔 
-l 长列表输出,显示文件详细信息,每行一个文件,从左至右依次是: 
文件存取模式 链接数 文件主 文件组 文件字节数 上次修改时间 
其中文件存取模式用10个字母表示,从左至右的意义如下: 
第一个字母表示文件种类,可以是以下几种情况: 
d 为目录文件 
l 为链接 
b 为块文件 
c 为字符型文件 
p 为命名管道(FIFO) 
- 为普通文件 
后面9个字母分别表示文件主、同组用户、其他用户对文件的权力,用r表示可读,w 表示可写,x 表示可执行。如果是设备文件,则在文件字节数处显示:主设备 从设备。 
-n 与-l选项相同,只是文件主用数字(即UID)显示,文件组用数字 
(即GID)表示 
-o 与-l选项相同,只是不显示文件组 
-g 与-l选项相同,只是不显示文件主 
-r 逆序排列 
-t 按时间顺序排列而非按名字 
-u 显示时间时使用上次访问时间而非上次修改时间 
-c 显示时间时使用上次修改i节点时间而非上次修改时间 
-p 若所列文件是目录文件,则在其后显示斜杠(/) 
-F 在目录文件后加’/’,在可执行文件后加’*’ 
-b 文件名中若有非打印字符,则用八进制显示该字符 
-q 文件名中的打印字符用’?’表示 
-i 显示节点号 
-s 显示文件长度时使用块长度而非字节长度 
-f 将后面的参数解释为目录并列出其中的每一项 
-1 每行仅列一项 
[例子]: 
ls 列出当前目录下的文件 
ls -al /bin 以长列表的形式列出目录 /bin 下的所有文件,包括隐藏文件 


1.2 pwd 

[语法]: pwd 
[说明]: 本命令用于显示当前的工作目录 
[例子]: 
pwd 显示出当前的工作目录 


1.3 cd 

[语法]: cd [目录] 
[说明]:本命令用于改变当前的工作目录,无参数时使用环境变量$HOME 作为其参数,$HOME 一般为注册时进入的路径。 
[例子]: 
cd 回到注册进入时的目录 
cd /tmp 进入 /tmp 目录 
cd ../ 进入上级目录 
1.4 mkdir 

[语法]: mkdir [-m 模式] [-p] 目录名 
[说明]: 本命令用于建立目录,目录的存取模式由掩码(umask)决定,要求对其父目录具有写权限,目录的UID和GID为实际UID和GID 
-m 按指定存取模式建立目录 
-p 建立目录时建立其所有不存在的父目录 
[例子]: 
mkdir tmp 在当前目录下建立子目录 tmp 
mkdir -m 777 /tmp/abc 用所有用户可读可写可执行的存取模式 
建立目录 /tmp/aaa ,存取模式参看命令 chmod 
mkdir -p /tmp/a/b/c 建立目录 /tmp/a/b/c ,若不存在目录 /tmp/a 
及/tmp/a/b 则建立之 


1.5 rmdir 

[语法]: rmdir [-p] [-s] 目录名 
[说明]: 本命令用于删除目录 
-p 删除所有已经为空的父目录 
-s 当使用-p 选项时,出现错误不提示 
[例子]: 
rmdir /tmp/abc 删除目录 /tmp/abc 
rmdir -p /tmp/a/b/c 删除目录 /tmp/a/b/c ,若目录 /tmp/a /b 
及/tmp/a 空,则删除 


1.6 cat 

[语法]: cat [-u] [-s] [-v[-t] [-e]] 文件... 
[说明]: 显示和连接一个或多个文件至标准输出 
-u 无缓冲的输出(缺省为有缓冲输出) 
-s 对不存在的文件不作提示 
-v 显示出文件中的非打印字符,控制字符显示成^n ,n为八进制数字, 
其他非打印字符显示成M-x , x 为该字符低7位的8进制数值 
-t 在使用-v 选项时,将制表符(tab) 显示成 ^I,将换页符 
(formfeed)显示成 ^ L 
-e 在使用-v 选项时,在每一行的行尾显示 $ 
[例子]: 
cat file 显示文件 
cat -s -v -e file1 file2 file3 逐个显示文件 file1 file2 file3 


1.7 head 

[语法]: head [-n] [文件 ...] 
[说明]: 将文件的头n 行显示输出,缺省值为 10 行,显示多个文件时,在每个文件的前面加上 ==> 文件名 <== 
[例子]: 
head -9999 file1 file2 显示文件 file1 和 file2 的头 9999 行 


1.8 more 

[语法]: more [-cdflrsuw] [- 行数] [+ 行数] [+ / 模式 ] [ 文件 ... ] 
[说明]: 将文件显示在终端上,每次一屏,在左下部显示 --more--,若是从文件读出而非从管道,则在后面显示百分比,表示已显示的部分,按回车键则上滚一行,按空格键则上滚一屏,未显示完时可以使用more 命令中的子命令。 
-c 显示文件之前先清屏 
-d 当输错命令时显示错误信息而不是响铃(bell) 
-f 不折叠显示长的行 
-l 不将分页控制符(CTRL D)当作页结束 
-r 一般情况下,more 不显示控制符,本选项使more 显示控制符, 
例如,将 (CTRL C) 显示成 ^ C 
-s 将多个空行转换成一个空行显示 
-u 禁止产生下划线序列 
-w 一般情况下 more 显示完后立即推出,本选项在显示完后作提 
示,敲任意键后推出 
-n 行数 指定每屏显示的行数 
+ 行号 从指定行号开始显示 
+/模式 在文件中搜索指定模式,从模式出现行的上两行开始显示 文件未显示完时,可以使用more 命令中的子命令,命令中除了! 和 / 以外均不回显,也不用敲回车,当命令破坏 more 提示行时,可用退格键恢复提示行。在以下子命令操作中,i 表示数字,缺省值为 1。 
i 空格 上滚一屏多 i 行 
i 回车 上滚 i 行 
i CTRL+D i 缺省时上滚 11 行,否则上滚 i 行 
id i 缺省时上滚 11 行,否则上滚 i 行 
iz i 缺省时上滚一屏,否则定义每屏为 i 行 
is 跳过 i 行后显示一屏 
if 跳过 i 屏后显示一屏 
i CTRL+B 跳回 i 屏后显示一屏 
b 跳回 一屏后显示一屏 
q 或 Q 推出 more 
= 显示当前行号 
v 从当前行开始编辑当前文件编辑器由环境变量 
$EDITOR定义 
h 显示帮助信息 
i / 模式 向前搜索,直至模式的第 i 次出现 , 从该行的上 两行开始显示一屏 
in 向前搜索,直至上一模式的第 i 次出现 , 从该行 的上两行开始显示一屏 
单引号 回到上次搜索的出发点,若无搜索则回到开始位置 
! 命令 激活一个sh 去执行指定的命令 
i : n 跳到后面第 i 个文件,若不存在则跳到最后一个文件 
:f 显示当前文件名和行号 
:q 或 :Q 推出 more 
. (点) 重复上次命令 
[ 例子]: 
more -c +50 file 清屏后,从第50行开始显示文件 file 
more -s -w file1 file2 file3 显示文件 file1 file2 file3 


1.9 cp 

[语法]: cp [ -p ] [ -r ] 文件 1 [ 文件 2 ...] 目标 
[说明]: 将文件1(文件2 ...)拷贝到目标上,目标不能与文件同名, 若目标是文件名,则拷贝的文件只能有一个,若目标是目录, 则拷贝的文件可以有多个,若目标文件不存在,则建立这个文件,若存在,则覆盖其以前的内容,若目标是目录,则将文件拷贝到这个目录下。 
- i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止 
- p 不仅拷贝文件内容,还有修改时间,存取模式,存取控制表, 但不拷贝 
UID 及 GID 
- r 若文件名为目录,则拷贝目录下所有文件及子目录和它们的文件,此时 
目标必须为目录 
[例子]: 
cp file1 file2 将文件 file1 拷贝到文件 file2 
cp file1 file2 /tmp 将文件 file1 和文件 file2 拷贝到目录 /tmp 下 
cp -r /tmp /mytmp 将目录 /tmp 下所有文件及其子目录拷贝至目录/mytmp 

1.10 mv 

[语法]: mv [-f] [-i] 文件1 [文件2...] 目标 
[说明]: 将文件移动至目标,若目标是文件名,则相当于文件改名 
- i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止 
- f 覆盖前不作任何提示 
[例子]: 
mv file1 file2 将文件 file1 改名为 file2 
mv file1 file2 /tmp 将文件 file1 和文件 file2 移动到目录 /tmp 下 


1.11 rm 

[语法]: rm [-f] [-i] 文件... 
或 rm -r [-f] [-i] 目录名... [文件] 
[说明]: 用来删除文件或目录 
- f 删除文件时不作提示 
- r 递归地删除目录及其所有子目录 
- i 删除文件之前先作提示 
[例子]: 
rm file1 删除文件 file1 
rm -i /tmp/* 删除目录 /tmp 下的所有文件 
rm -r /mytmp 递归地删除目录 /mytmp 


1.12 chmod 

[语法]: chmod [-R] 模式 文件... 
或 chmod [ugoa] {+|-|=} [rwxst] 文件... 
[说明]: 改变文件的存取模式,存取模式可表示为数字或符号串,例如: 
chmod nnnn file , n为0-7的数字,意义如下: 
4000 运行时可改变UID 
2000 运行时可改变GID 
1000 置粘着位 
0400 文件主可读 
0200 文件主可写 
0100 文件主可执行 
0040 同组用户可读 
0020 同组用户可写 
0010 同组用户可执行 
0004 其他用户可读 
0002 其他用户可写 
0001 其他用户可执行 
nnnn 就是上列数字相加得到的,例如 chmod 0777 file 是指将文件 file 存取权限置为所有用户可读可写可执行。 
-R 递归地改变所有子目录下所有文件的存取模式 
u 文件主 
g 同组用户 
o 其他用户 
a 所有用户 
+ 增加后列权限 
- 取消后列权限 
= 置成后列权限 
r 可读 
w 可写 
x 可执行 
s 运行时可置UID 
t 运行时可置GID 
[例子]: 
chmod 0666 file1 file2 将文件 file1 及 file2 置为所有用户可读可写 
chmod u+x file 对文件 file 增加文件主可执行权限 
chmod o-rwx 对文件file 取消其他用户的所有权限 


1.13 chown 

[语法]: chown [-R] 文件主 文件... 
[说明]: 文件的UID表示文件的文件主,文件主可用数字表示, 也可用一个有效的用户名表示,此命令改变一个文件的UID,仅当此文件的文件主或超级用户可使用。 
-R 递归地改变所有子目录下所有文件的存取模式 
[例子]: 
chown mary file 将文件 file 的文件主改为 mary 
chown 150 file 将文件 file 的UID改为150 


1.14 chgrp 

[语法]: chgrp [-R] 文件组 文件... 
[说明]: 文件的GID表示文件的文件组,文件组可用数字表示, 也可用一个有效的组名表示,此命令改变一个文件的GID,可参看chown。 
-R 递归地改变所有子目录下所有文件的存取模式 
[例子]: 
chgrp group file 将文件 file 的文件组改为 group 


1.15 cmp 

[语法]: cmp [-l] [-s] 文件1 文件2 
[说明]: 比较两个文件,若文件1 为 "-" ,则使用标准输入, 两个文件相同则无提示,不同则显示出现第一个不同时的字符数和行号。 
-l 显示每个不同处的字节数(10进制)和不同的字节(8进制) 
-s 不作任何提示,只返回码 
[例子]: 
cmp file1 file2 比较文件 file1 和 file2 
cmp -l file1 file2 比较文件file1 和 file2 的每处不同 

1.16 diff 

[语法]: diff [-be] 文件1 文件2 
[说明]: 本命令比较两个文本文件,将不同的行列出来 
-b 将一串空格或TAB转换成一个空格或TAB 
-e 生成一个编辑角本,作为ex或ed的输入可将文件1转换成文件2 
[例子]: 
diff file1 file2 
diff -b file1 file2 
diff -e file1 file2 >edscript 


1.17 wc 

[语法]: wc [-lwc] 文件... 
[说明]: 统计文件的行、字、字符数,若无指定文件,则统计标准输入 
-l 只统计行数 
-w 只统计字数 
-c 只统计字符数 
[例子]: 
wc -l file1 file2 统计文件file1和file2 的行数 


1.18 split 

[语法]: split [-n] [ 文件 [名字]] 
[说明]: split 将指定大文件分解为若干个小文件,每个文件长度为n行(n 缺省时为1000),第一个小文件名为指定的名字后跟aa,直至zz,名字缺省值为x,若未指定大文件名,则使用标准输入 
[例子]: 
split -500 largefile little 
将文件largefile 每500行写入一个文件,第一个文件名为littleaa 


1.19 touch 

[语法]: touch [-amc] [mmddhhmm[yy]] 文件... 
[说明]: 将指定文件的访问时间和修改时间改变,若指定文件不存在则创建之,若无指定时间,则使用当前时间,返回值是未成功改变时间的文件个数,包括不存在而又未能创建的文件。 
-a 只改变访问时间 
-m 只改变修改时间 
-c 若文件不存在,不创建它且不作提示 
mmddhhmm[yy] 两位表示 月日时分[年] 
[例子]: 
touch file 
更新文件file的时间 
touch 0701000097 HongKong 
将文件HongKong的时间改为97年7月1日0时0分 


1.20 file 

[语法]: file [-f 文件名文件] 文件... 
[说明]: file 对指定文件进行测试,尽量猜测出文件类型并显示出来 
-f 文件名文件 文件名文件是一个包含了文件名的文本文件, -f 选项测试 
文件名文件中所列出的文件 
[例子]: 
file * 显示当前目录下所有文件的类型 


1.21 pack 

[语法]: pack 文件... 
[说明]: pack 将指定文件转储为压缩格式,文件名后加 ".z ", 文件存取模式,访问时间,修改时间等均不变 
[例子]: 
pack largefile 将largefile 压缩后转储为largefile.z 


1.22 pcat 显示压缩文件 

[语法]: pcat 文件... 
[说明]: pcat 显示输出压缩文件 

[例子]: 
pcat largefile.z 显示压缩前的largefile 
pcat largefile.z > oldfile 显示压缩前的laregfile,并将其重定向到 
文件oldfile中 


1.23 unpack 

[语法]: unpack 文件... 
[说明]: 将压缩后的文件解压后转储为压缩前的格式 
[例子]: 
unpack largefile.z 将压缩文件largefile.z解压后转储为largefile 


1.24 find 

[语法]: find 路径名... 表达式 
[说明]: find 命令递归地遍历指定路径下的每个文件和子目录,看该文件是否能使表达式值为真,以下 n 代表一个十进制整数,+n 代表打印 n , -n 代表小于 n ,下面是合法表达式说明: 
-name 模式 文件名与模式匹配则为真,(\ 为转意符) 
-perm [-]八进制数 文件存取模式与八进制数相同则为真若有- 选项,则文件存 
取模式含有八进制数规定模式即为真 
-size n[c] 文件块长度为 n 则真(一块为512字节),若 
有c 选项,则文件字节长度为 n 则真 
-atime n 若文件的最近访问时间为 n 天前则为真, 
find 命令将改变其访问的目录的访问时间 
-mtime n 若文件的最近修改时间为 n 天前则为真 
-ctime n 若文件状态为 n 天前改变则为真 
-exec 命令 { }\; 若命令返回值为0则真,{ }内为命令参数, 
此命令必须以 \; 为结束 
-ok 命令 { }\; 与 exec 相同,只是在命令执行前先提示,若 
回答 y 则执行命令 
-print 显示输出使表达式为真的文件名 
-newer 文件 若文件的访问时间比newer 指定的文件新则真 
-depth 先下降到搜索目录的子目录,然后才至其自身 
-mount 仅查找包含指定目录的文件系统 
-local 文件在当前文件系统时为真 
-type c 文件类型为 c 则真,c 取值可为 b(块文件) c (字符文件) 
d(目录) l (符号链接) p (命名管道) f (普通文件) 
\( 表达式 \) 表达式为真则真 
-links n 文件链接数为 n 时为真 
-user 用户 当文件属于用户时为真,用户可用数字表示UID 
-nouser 当文件不属于 /etc/passwd 中的一个用户时为真 
-group 文件组 当文件属于文件组时为真,文件组可用数字表示GID 
-nogroup 当文件不属于 /etc/group 中的一个组时为真 
-fstype 类型 当文件所属文件系统类型为指定类型时真 
-inum n 当文件 i 节点号为 n 时为真 
-prune 当目录名与模式匹配时,不再搜索其子目录 
可以用逻辑操作符将简单表达式连接成复杂表达式 
逻辑操作符有 ! 表示非操作, -o 表示或操作,两个表达式并列则表示 
与操作 
[例子]: 
find / -name find* -print 
从根目录开始搜索文件名如 find* 的文件并显示之 
find ./ -exec sleep{1}\; -print 
每秒显示一个当前目录下的文件 
find $HOME \(-name a.out -o -name '*.o' \) -atime +7 -exec rm {} \; 
从$HOME目录开始搜索,删除所有文件名为a.out 或 *.o 且访问时间在7天前的文件 


1.25 grep 

[语法]: grep [选项] 模式 [文件...] 
[说明]: 在指定的文件中搜索模式,并显示所有包含模式的行,模式是一个正规表达式,在使用正规表达式时,最好将其引在单引号(') 中,若指定文件为缺省,则使用标准输入,正规表达式可以是: 
. 匹配任意一个字符 
* 匹配0个或多个*前的字符 
^ 匹配行开头 
$ 匹配行结尾 
[] 匹配[ ]中的任意一个字符,[]中可用 - 表示范围, 
例如[a-z]表示字母a 至z 中的任意一个 
\ 转意字符 
命令中的选项为: 
-b 显示块号 
-c 仅显示各指定文件中包含模式的总行数 
-i 模式中字母不区分大小写 
-h 不将包含模式的文件名显示在该行上 
-l 仅显示包含模式的文件名 
-n 显示模式所在行的行号 
-s 指定文件若不存在或不可读,不提示错误信息 
-v 显示所有不包含模式的行 
[例子]: 
grep 'good' * 在所有文件中搜索含有字符串 good 的行 
grep '^myline' mytext 在文件mytext中搜索行首出现myline字符串的行 


1.26 vi 

[语法]:vi [-wn] [-R] 文件... 
[说明]: vi 是一个基于行编辑器 ex 上的全屏幕编辑器,可以在vi 中使用 ex,ed的全部命令,vi选项中 -wn 指将编辑窗口大小置为n行,-R 为将编辑的文件置为只读模式, vi 工作模式分为命令模式和输入模式,一般情况下在命令模式下,可敲入vi命令,进入输入模式下时可以编辑要编辑的文本,命令 a A i I o O c C s S R 可进入输入模式,在输入模式下按 ESC 键可推出输入模式,回到命令模式,在命令模式中敲入: 命令,则可进入ex方式,在屏幕底部出现提示符 : ,此时可使用任意ex命令,屏幕底行也用来作/ ? ! 命令的提示行,大多数命令可以在其前面加数字,表示命令执行的重复次数,下面简单介绍一下vi 的命令集,^ 表示(CTRL)键 
^B 退回前一页,前面加数字表示重复次数,每次换页时 
保留上一页的两行 
^D 在命令模式下,表示下滚屏幕的一半,在输入模式下,表示回退至 
左边的自动缩进处 
^E 显示屏幕底线之下的一行 
^F 前进一页,前面加数字表示重复次数,每次换页时 
保留上一页的两行 
^G 显示当前文件名,当前行号和文件总行数,并用百分号当前行在 
整个文件中的位置 
^H(退格) 在命令模式下,光标左移一格;在输入模式下,删去前面的字符 
^I(TAB) 在输入模式下,产生一串空格 
^J(LF) 光标下移一行 
^L 刷新屏幕,即将屏幕重新显示 
^M(回车) 在命令模式下,光标移动至下行开头 
在输入模式下,开辟一新行 
^N 光标下移一行 
^P 光标上移一行 
^Q 在输入模式下,将其后的非打印字符作为正文插入 
^R 刷新屏幕 
^U 屏幕上滚一半,前面加数字时表示上滚的行数,此数字对 
以后的^D ^U 命令有效 
^V 在输入模式下,将其后的非打印字符作为正文插入 
^W 在输入模式下,使光标回退一个字 
^Y 显示屏幕底线之上的一行 
^Z 暂停编辑,退回上层Shell 
^[(ESC) 退出输入模式,回到命令模式 
! 暂时退出编辑,执行Shell命令 
"(双引号) 用于标志有名缓冲区,编号缓冲区1-9用于保存被删去的正文,字 
母名缓冲区a-z供用户存放自定义的正文 
$ 将光标移动到当前行尾,前加数字则表示前移行数,如2$表示移动 
到下一行行尾 
% 将光标移动到配对的小括号()或大括号{}上去 
( 退回句子开头 
) 前移到句子开头 
- 退到上一行第一个非空格字符 
. 重复上一次改变缓冲区内容的命令 
/ 模式 向前搜索模式,将光标移动到模式出现处,模式是一个正规 
表达式,(参看 grep) 
: 在屏幕底部提示:,其后可使用ex命令 
? 功能同 / ,但方向是向前查找 
[[ 光标回退至前一节分界处 
\ 转意符 
]] 光标前移至节分界处 
^(不是CTRL) 光标移至当前行第一个非空字符上 
' 连续两个'表示将光标移至其移动前的位置,'后跟字母表示光标字 
母标记的行首(参看 m 命令) 
A 在行尾插入正文,进入输入模式 
B 光标回退一个字 
C 替换光标后的内容 
D 删除光标后的内容 
E 光标前移到字尾 
F 字符 在当前行向左查找指定字符 
G 光标移动到其前面数字指定的行,若未指定则移动到最后一行 
H 光标移动到屏幕顶行,若前面有数字,则移动到屏幕上该数字 
指定的行 
I 在行开头插入正文 
J 连接两行,若前面有数字则连接数字指定的行 
L 光标移动到屏幕底行,若前面有数字,则移动到屏幕底线往上数该 
数字指定的行 
M 光标移动到屏幕中线 
N 使用模式查找/或?时,重复找下一个匹配的模式,但方向与上次相 
反,其功能同 n ,但方向相反 
O 在当前行上开辟一新行 
P 将上次被删除的正文插入光标前面,可在其前面加缓冲区编号,编 
号1-9用于保存被删去的正文,字母名缓冲区a-z供用户存放自定 
义的正文 
Q 从vi 推出进入ex命令状态 
R 替换字符串 
S 替换整行 
T 字符 向左查找字符 
U 将当前行恢复至第一次修改前的状态 
W 光标移至下一个字首 
X 删除光标前的字符 
Y 将当前行存入无名缓冲区,前面加数字表示存入的行数,也可用有 
名缓冲区来保存,以后可用命令p或P将其取出 
ZZ 存盘退出vi 
a 光标后插入正文 
b 光标回退至上一个字首 
cw 替换当前字 
c) 替换当前句子 
dw 删除一个字 
dd 删除一行 
e 光标移到下一个字末 
f 字符 在当前行向前查找字符 
h 光标左移一格 
i 在光标前插入正文 
j 光标下移一行 
k 光标上移一行 
l 光标右移一格 
m 字母 用字母标记当前行,以后可用 '字母使光标移动到当前行, 
(参看'命令) 
n 重复上次 / 或 ? 命令 
o 在当前行下开辟一新行 
p 将用户缓冲区内容放到光标位置(参看P命令) 
r 替换当前字符 
s 用一串字符替换当前字符 
t 字符 光标移动至字符前 
u 取消上次操作 
w 光标移至下一字首 
x 删除当前字符 
yw 将当前字存入无名缓冲区,前面可加"x,表示存入名字为x的有名 
缓冲区(x为a-z),也可加数字表示存入的字数,以后可用P或p命 
令取出 
yy 将当前行存入无名缓冲区,用法参看yw 
{ 光标移动至前一段开头 
| 光标移至行首,若前面加数字,则移到数字指定行的行首 
} 光标移至下一段开头 
在:提示符下,常用命令如下: 
:w 当前文件存盘 
:w! 强制存盘 
:w 文件 将内容写入指定文件 
:w! 文件 强制写入指定文件 
:x,y w 文件 将 x至 y 行写入指定文件中 
:r 文件 将文件读到光标位置 
:r ! 命令 将系统命令的输出读到光标位置 
:q 退出编辑 
:q! 强制退出 
:x 与命令ZZ相同 
:e 文件名 编辑另一文件 
:e ! 重新编辑文件,放弃任何改变 
:sh 执行sh,结束后回到编辑 
:! 命令 执行命令后回到编辑 
:n 编辑下一文件 
:n 文件表 重新定义待编辑文件表 
:set 设置 vi 的选项,例如 set nu 表示每行前显示行号,在选项前 
加no则表示清除该选项,例如 set nonu 表示每行前不显示行 
号,下面是一些常用的选项: 
ai 自动缩进 
aw 编辑下一文件前自动存盘 
ic 查找字符串时不区分大小写 
nu 每行前显示行号 
sm 输入)及}时显示与之配对的( 或 { 
slow 插入时延迟屏幕刷新 
ws 使查找能绕过文件尾从头进行 
wa 写文件之前不作对文件的检查 



第二章 设备管理 

2.1 stty 
[语法]: stty [-a] [-g] [选项] 
[说明]: 本命令设置终端,无参数时报告终端设置,本命令功能十分强大,应谨慎使用,下面仅介绍部分常用功能 
-a 显示当前终端所有设置 
-g 以能作为 stty 命令参数的方式显示终端设置 
以下是终端常用设置,在设置前加-表示清除设置: 
1.控制方式 
ispeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400 
本命令设置终端输入波特率,若为0则使用缺省波特率。 
例如 stty ispeed 9600 
ospeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400 
本命令设置终端输出波特率,参看 ispeed。 
2.输入方式 
ingbrk(-ignbrk) 忽略(不忽略)中断(BREAK) 
brkint(-brkint) 设置(清除)信号INTR为中断信号 
inlcr(-inlcr) 将换行转换(不转换)成回车 
icrnl( -icrnl) 将回车转换(不转换)成换行 
igncr(-ignrc) 忽略(不忽略)回车 
iuclc( -iuclc) 将大写字母转换(不转换)成小写字母 
3.输出方式 
olcut(-olcut) 将小写字母转换(不转换)为大写字母 
onlcr(-onlcr) 输出时将换行符转换(不转换)为回车换行 
ocrnl(-ocrnl) 输出时将回车符转换(不转换)为换行符 
4.本地方式 
echo (-echo) 设置(清除)回显 
stwrap(-stwrap) 截断(不截断)大于79个字符的行 
echoctl(-echoctr) 将控制键回显为^ 
2.2 tty 

[语法]: tty 
[说明]: 显示出终端的设备名 
[例子]: 
tty 


2.3 lp 

[语法]: lp 文件... 
[说明]: 将文件送打印机打印 
[例子]: 
lp myfile 将文件myfile 送打印机输出 


2.4 lpstat 

[语法]: lpstat [选项] [打印任务号] 
[说明]: 显示打印机状态,选项的意义如下: 
-a [打印机表] 显示打印机表中指定的打印机可否接收打印请求 
-c [打印机类名] 显示打印机种类及在该打印机种类下的成员 
-d 显示系统预设的打印机 
-p [打印机表] 显示打印机表中打印机状态 
-r 显示lp 请求程序表( lp request scheduler) 
-s 打印系统统计表 
-t 打印所有状态信息 
-u [用户] 显示由用户发出的打印请求 
-v [打印机名表] 显示每个打印机名称,是对应于该打印机设备文件的路径名 
[例子]: 
lpstat -t 打印所有状态信息 

2.5 cancel 

[语法]: cancel 打印任务号 
cancel 打印机名 
cancel -u 用户名 [打印机] 
[说明]: 本命令可按打印机名,打印任务,用户来取消打印任务 
[例子]: 
cancel -u mary 取消用户 mary 的所有打印请求 


2.6 enable 

[语法]: enable 打印机表 
[说明]: 本命令可激活一个或多个打印机 


2.7 disable 

[语法]: disable [-cw] 打印机表 
[说明]: 使一个或多个打印机不能打印 
-c 立即取消正在打印的打印请求 
-w 等正在打印的内容打完后,才禁止打印机 


2.8 sync 

[语法]: sync 
[说明]: 将磁盘缓冲区内容写回磁盘 
2.9 mount 

[语法]: mount [-r] 设备 目录 
[说明]: 将设备安装到目录下 
-r 以只读方式安装 


2.10 umount 

[语法]: umount 设备 
[说明]: 将已安装的文件系统卸下 


2.11 tar 

[语法]: tar -c[vwfbL] [设备] [块] 文件... 
tar -r[vwfbL] [设备] [块] 文件... 
tar -t[vfL] [设备] [文件...] 
tar -u[vwfbL] [设备] [块] 文件... 
tar -x[lmovwfL] [设备] [文件...] 
[说明]: 将多个文件归档,命令中各参数的意义为: 
r 附加方式归档 
x 抽取文件 
t 显示文件 
u 附加方式归档,同时删除旧版文件 
c 建立新档案文件 
v 显示所处理的文件名 
w 处理文件前,要求用户确认 
f 文件名 使用指定文件名作为档案文件 
bn 每次读写 n 块,缺省值为1,最大值为20 
m 将新的文件修改时间设为获取时的时间 
o 获取出来的文件以下达tar指令的UID和GID存储 
[例子]: 
tar cvf file.tar * 
tar tvf file.tar 


2.12 df 

[语法]: df [-t] [文件系统] 
[说明]: 显示剩余 i 节点和块数,使用 -t 选项,还显示总块数和 i 节点数 
[例子]: df -t 


2.13 du 

[语法]: du [-ars] [目录] 
[说明]: 显示磁盘空间专用情况 
-r 提供无法打开的文件信息 
-s 仅显示指定目录所占空间的总和 
-a 显示文件大小及目录总空间,其后可根文件名作参数 


第三章 进程管理 

3.1 sleep 

[语法]: sleep 时间 
[说明]: 挂起参数指定的秒数 


3.2 ps 

[语法]: ps [ -efl] [ -t 终端表] [ -u 用户表] [ -g 组表] 
[说明]: 显示出有关进程的状态 
-e 显示出现在正在运行的所有进程 
-f 显示所有信息 
-l 产生一个长列表 
-t 显示指定终端进程 
-u 显示指定用户进程 
-g 显示指定组进程 


3.3 at 

[语法]: at [-f 命令文件] [-m] [-q 队列] -t 时间 
[说明]: at命令由cron管理,在未来一个指定的时间内执行一组命令,命令可以从指定文件读入,也可从键盘读入,从键盘读入时以EOF结束,(通常为CTRL D) 
-f 从指定命令文件中读入命令 
-m 命令执行完后给用户发邮件 
-q 将命令放入指定队列 
-t 指定时间 指定的时间格式为 [[CC]YY]MMDDhhmm[.ss],CC表示 
年的前两位,YY表示年的后两位,MM表示月,DD表示日,hh表 
示时,mm表示分,ss表示秒 


3.4 kill 

[语法]: kill -信号 进程号 
[说明]: kill 将信号传递给指定进程,信号意义如下: 
1 暂停(hangup) 
2 中断(interrupt) 
3 退出(quit) 
4 非法指令(illeqgal instruction) 
5 跟踪中断(trace trap) 
6 Abort 
7 EMT 指令(Emulation trap) 
8 浮点格式异常(floating point exception) 
9 kill(不可忽略) 
10 通道错误(bus error) 
11 不合法内存段 
12 错误的系统调用参数 
13 写入不可读的连通管道 
14 alarm clock 
15 软件结束信号 
16 用户定义信号一 
17 用户定义信号二 
[例子]: 
kill -9 444 杀死进程号为 444 的进程 

第四章 系统管理和用户管理 

4.1 who 

[语法]: who 
who am i 
[说明]: 列出现在系统中的用户,who am i 显示自己 


4.2 whodo 

[语法]: whodo [-h] [-l] [用户] 
[说明]: 显示系统中用户及进程,若指定用户,则只列出该用户的信息 
-h 不显示头部信息 
-l 长列表格式输出 


4.3 passwd 

[语法]: passwd [用户] 
[说明]: 修改密码,指定用户则修改指定用户密码 


4.4 logname 

[语法]: logname 
[说明]: 取得当前用户注册名 


4.5 su 

[语法]: su [- ] [用户名] 
[说明]: su 命令使当前用户成为指定用户,若无指定,则成为超级用户,但必须输入该用户的密码,-选项表示用该用户的注册环境成为该用户 


4.6 time 

[语法]: time 命令 
[说明]: 执行命令,并在执行完后显示其运行的时间 


4.7 date 

[语法]: date 
date mmddhhmm[yy] 
[说明]: date 无参数时用于显示系统时间,修改时间时参数形式为 
月日时分[年] 


4.8 shutdown 

[语法]: shutdown [-y] [-gn] [-in] 

[说明]: UNIX 系统必须先关闭系统,再关电源 
-y 对提示的所有问题都回答 y 
-gn 给其他用户n 秒的时间退出,缺省值为60秒 
-in 系统退到第n种方式,方式如下: 
0 关机 
1 单用户模式 
2 多用户模式 
3 网络下的多用户模式 
6 关机并重新启动 


4.9 fsck 

[语法]: fsck [-y] 
[说明]: 本命令用于检查和修复文件系统,当文件系统出现混乱时,可使用本命令,-y选项表示对所有提问都回答YES 




第五章 通信和邮件 

5.1 wall 

[语法]: wall 
[说明]: 向所有用户广播通知信息,常用于警告所有用户 


5.2 mesg 

[语法]: mesg [-n] [-y] 
[说明]: mesg 用 -n 参数则禁止其他用户用 write 发消息,用 -y 参数则允许接收消息,若无参数则报告现在的状况 


5.3 write 

[语法]: write 用户 终端 
[说明]: write 与指定的终端上的用户直接对话,直到接收到文件结束符 
[例子]: 
write mary console 


5.4 mailx 

[语法]: mailx [选项] [名字] 
[说明]: 本命令用于发送和接收邮件,名字是收信人的用户名,本命令有许多内部命令,选项说明如下: 
-e 检查是否有邮件,若有则返回0 
-f 文件名 从文件中读取邮件而非从邮箱中 
-H 只显示信件标题 
-s 标题 设定标题为指定标题 
[命令说明] 
. 当前信件 
n 第 n 封信 
^ 第一封未被处理的信 
$ 最后一封信 
* 所有的信 
n-m 第n 封至第m封信 
用户 由指定用户发出的信 
/ 字符串 标题中包含字符串的信 
:c 满足指定类型c的信,类型可为 
d 已删除的信 
n 信传送的信 
o 旧信件 
r 已读过的信 
u 未读过的信 
p 一次显示多封信 
t 显示某封信的前若干行 
si 显示信件字符数 
h 显示信件标题 
d 删除信件 
u 恢复信件 
s [信件表] 文件名 
将信件存入指定文件中 
q 退出 
r 回信 
~e 编辑信件 
~r 文件 从文件中读取信件 
[例子]: 
mailx mary < myletter 

第六章 Shell 编程 

shell 不但是 Unix 的用户交互界面,还是一门程序设计语言,系统注册进入时就会执行一个shell命令文件 .profile ,下面对shell中的常用命令作简单介绍。 
$n shell 程序命令行中的第n 个参数,n为0-9,当n 为0时表示命令名 
$# 命令行中参数的个数 
$$ 本shell 命令的进程号 
$! 最后一个后台进程的代号 
$* 所有命令行参数 
$@ 与$*相似,但其值不同 
$HOME 注册时进入的目录 
$PATH 命令的搜索目录 
$PS1 系统第一个提示符,一般为$ 
$PS2 系统第二个提示符,一般为> 
shift [n] 将命令行参数往左移一位,但$0不变 
变量名=字符串 将字符串赋予变量名,以后可用$变量名引用该变量 
export 变量名表 将变量名表所列变量传递给子进程 
read 变量名表 从标准输入读字符串,传给指定变量 
echo 变量名表 将变量名表指定的变量显示到标准输出 
set 显示设置变量 
env 显示目前所有变量 
if 条件执行,语法是: if 条件 
then 指令 
fi 
case 分支执行,语法是: case 字符串变量 in 
值1) 指令... 
值2) 指令... 
... 
esac 
while 条件为真时循环,语法是: 
while 条件 
do 
指令... 
done 
until 条件为假时循环,语法是: 
until 条件 
do 
指令... 
done 
for 变量在表中时循环,语法是: 
for 变量名 in 字组表 
do 
指令... 
done 
break 从循环中退出,语法: 
break n 
n 表示跳出循环的层数 
continue 继续循环,语法: 
continue n 
n 表示退到包含continue 语句的第n 层继续循环 
exit 退出shell 
func shell内部可定义函数,语法: func 函数名() 

指令... 

expr 将其后的串解释为表达式并计算其值,运算符前后需有空格 
trap 捕获信号,语法 trap n ,捕获信号 n (信号说明参见kill) 
test 条件测试,语法 test [选项] 参数 
选项 -f 文件 若文件存在且可读则真 
-w 文件 若文件存在且可写则真 
-x 文件 若文件存在且可执行则真 
-f 文件 若文件存在且为普通文件则真 
-d 文件 若文件存在且为目录文件则真 
-p 文件 若文件存在且为fifo文件则真 
-s 文件 若文件存在且不空则真 
-z 串 若串长度为0则真 
-n 串 若串长度不为0则真 
串 若串不是空串则真 
串1=串2 若串1等于串2则真 
串1!=串2 若串1不等于串2则真 
n1 -eq n2 若n1与n2数值相当则真 
n1 -ne n2 若n1与n2数值不相当则真 
n1 -lt n2 若n1小于n2则真 
n1 -le n2 若n1小于等于n2则真 
n1 -gt n2 若n1大于n2则真 
n1 -ge n2 若n1大于等于n2则真 
可用 与 -a 或 -o 非 ! 将条件表达式连接起来 



第七章 数学计算命令 

[语法]: bc [-c] [-l] [文件...] 
[说明]: bc是一个交互式的高精度计算工具,采用类似于C语言的语法,能够从指定文件指定文件中读出命令执行,然后再进入交互式执行,事实上,bc是dc的预编译器,它自动激活dc,将语句经预编译后传递给dc,退出bc的命令是quit,bc中的ibase,obase,scale分别表示输入基数,输出基数,小数点右边的位数。 
-c bc 只编译,而不将编译结果送dc,将其送到标准输出上 
-l 预定义一个数学函数库,可在bc中使用以下函数 
s(x) sine 
c(x) cosine 
e(x) exponential 
l(x) log 
a(x) arctangent 
j(n,x) Bessel 
[例子]: 
bc -l 进入bc 
scale=10 将小数位定为10位 
e(1) 计算e的小数点后10位 
quit 退出bc 



附录 UNIX 常用命令简单说明 

UNIX 命令大多数可用联机帮助手册 man 获得帮助,下面是常用命令及简单说明,可供用户快速查找使用。 

命令 功能简述 

acctcom 等于进程记帐文件 
accton 启动或中止记帐进程 
adb 汇编语言调试工具 
admin 创建和管理SCCS文件 
ar 档案文件和库文件管理程序 
as 汇编器 
asa 回车控制 
at 在指定时间执行程序 
awk 模式搜索和处理语言 
banner 制作标题 
basename 生成文件基本名(无前。后缀) 
batch 命令的延迟执行 
bc 计算器 
bdiff 大型文件比较 
bfs 大文件搜索 
break 退出循环 
cal 打印日历表 
calendar 打印日历表 
cancel 取消打印任务 
case 分支语句 
cb C语言整理程序 
cd 改变当前目录 
cc C语言编译器 
cdc SCCS实用程序 
cflow 生成C语言流程图 
checkeq 数学公式排版命令 
chgrp 改变文件组 
chmod 改变文件存取模式 
chown 改变文件主 
chroot 改变根目录 
cksum 显示校验和 
clri 清除指定的I节点 
cmp 文件比较 
col 过滤反向换行 
comb SCCS实用程序 
comm 显示两个排序文件的公共行 
command 执行简单命令 
continue 进入下一循环 
cp 复制文件 
cpio 复制文件档案 
cpp C语言预处理程序 
crash 检查系统内存映象 
create 建立临时文件 
cref 生成交叉引用表 
cron 在指定时间执行一组命令 
crontab 为命令cron 准备crontab文件 
crypt 加密/解密 
csplit 将一个文件分解 
ct 远程终端注册 
ctags 创建供vi使用的标识符 
cu 呼叫另一UNIX系统 
cut 断开一文件中所选择的字段 
cxref 生成C程序交叉访问表 
date 打印和设置时间 
dc 桌面计算器 
dd 转换和复制文件 
delta SCCS实用程序 
deroff 去掉排版格式 
devnm 标识设备名 
df 显示可用磁盘空间 
diff 显示两个文件的差异 
diff3 显示三个文件的差异 
dircmp 目录比较 
dis 反汇编程序 
du 显示对磁盘的占用情况 
dump 对指定文件备份 
echo 回显指定参数 
ed 行编辑器 
edit 文本编辑器 
egrep 在文件中查找指定模式 
env 设置命令执行环境 
eqn 数学公式排版命令 
eval 执行指定命令 
ex 行编辑器 
exec 执行指定命令 
exit 进程中止 
expand 使表格占满行宽 
export 将变量传递给子程序 
expr 计算表达式值 
factor 因式分解 
false 返回FALSE 
fgrep 在文件中查找指定模式 
file 确定文件类型 
find 查找符号条件的文件 
fmt 安排简单的文本格式 
fold 折行 
for 循环语句 
fsck 文件系统检查和修复 
fsdb 文件系统调试程序 
fumount 强制性拆协指定资源 
function 函数说明 
fuser 列出使用文件的进程 
fwtmp 产生记帐记录 
get SCCS实用程序 
getconf 查找配置参数 
getopt 获得命令中的选择项 
getopts 获得命令中的选择项 
getty 设置终端类型、模式、行律等 
grep 在文件中查找指定模式 
head 打印文件的头若干行 
hexdump 按十六进制转储文件 
id 显示用户号 
if 条件语句 
init UNIX 初启进程 
install 安装一个文件到文件系统 
ipcrm 删除IPC队列 
ipcs 显示IPC状态 
join 连接两个文件(关系操作〕 
kill 中止指定进程 
killall 中止所有活动进程 
labelit 给文件系统提供标号 
ld 目标文件链接编辑器 
lex 词法分析程序 
line 读一行 
link 连接文件 
lint C程序检查程序 
ln 链接文件 
local 建立局部变量 
logger 显示注册信息 
login 注册 
logname 获取注册名 
look 在排序文件中查找某行 
lorder 查找目标库的次序关系 
lp 打印文件 
lpr 打印文件 
lpstat 显示打印队列状态 
ls 目录列表 
mail 发送或接收电子邮件 
mailx 发送、接收或处理电子邮件 
make 执行有选择的编译 
makekey 生成加密码 
man 显示命令用法 
mesg 接收或取消对话方式 
mkdir 建立目录 
mkfifo 建立FIFO文件 
mkfs 建立文件系统 
mknod 建立文件系统的I节点 
mount 安装文件系统 
mv 移动文件 
mvdir 移动目录 
ncheck 按节点号生成节点名清单 
neqn 数学公式排版命令 
newgrp 把用户加入到新组 
news 打印消息 
nice 改变命令执行优先级 
nl 给文件加行号 
nm 显示目标文件符号表 
nohup 忽略挂起或退出执行命令 
nroff 文本文件排版 
od 按八进制转储文件 
pack 压缩文件 
passwd 改变口令 
paste 文件合并 
pax 可移植档案管理程序 
pcat 显示压缩格式文件 
pg 分屏显示 
pr 按打印格式显示文件 
pstat 报告系统信息 
pwck 口令文件校验程序 
pwd 显示当前工作目录 
quot 检查文件系统所有权 
ratfor 转换成标准FORTRANC程序 
read 从标准输入读一行 
readonly 标记变量为只读 
red 文本编辑器 
regcmp 正规表达式编辑 
restor 文件系统恢复程序 
restore 文件系统恢复程序 
return 返回语句 
rev 颠倒文件中每行字符次序 
rm 删除文件 
rmdel SCCS使用程序 
rmdir 删除目录 
rsh(net) 远程SHELL 
rsh(sec) 受限SHELL 
runacct 运行日常记帐程序 
sact SCCS实用程序 
sag 打印系统活动图 
sar 报告系统活动 
sccsdiff SCCS实用程序 
sdb 符号调试器 
sdiff 并列显示两个文件的差别 
sed 流编辑器 
sendto 发送邮件 
set 设置选项或参数 
setmnt 建立文件系统安装表 
sh SHELL解释器 
shift 命令行参数移位 
shl SHELL层(layer)管理程序 
shutdown 关机 
size 显示目标文件长度 
sleep 挂起进程一段时间 
sort 文件排序和合并 
spell 拼写错误检查程序 
spellin 拼写错误检查 
spellout 拼写错误检查 
spline 按平滑曲线输出数据 
split 分解一个文件 
strings 在目标文件中寻找可打印字符 
strip 删除符号表 
stty 设置终端模式 
su 改变用户 
sum 显示文件校验和及块数 
sync 更新磁盘 
tabs 设置制表符 
tbl 表格排版 
tee 在管道上建立多通路 
tic 终端数据库编译程序 
time 打印执行命令所花时间 
tiemx 报告命令所花时间及活动 
touch 更新文件时间 
tput 恢复终端或查询数据库 
tr 转换字符 
trap 捕获信号 
troff 文本文件排版 
true 返回TRUE 
tsort 拓扑排序 
tty 显示终端设备名 
umask 设置文件掩码 
umount 拆卸文件系统 
uname 显示系统名 
unget SCCS实用程序 
uniq 删除文件中重复行 
units 度量单位转换 
unlink 删除文件 
unpack 将压缩文件还原 
until 循环语句 
update 更新磁盘 
val SCCS实用程序 
vc SCCS实用程序 
vi 全屏幕编辑器 
volcopy 文件系统的文字拷贝 
wait 等待所有字进程结束 
while 循环语句 
who 显示谁在使用系统 
whodo 显示哪些用户在做什么 
write 和另一用户直接对话 
xargs 建立参数表并执行命令 
yacc 语法分析程序生成器

 

下述命令参考包含94个UNIX最常用的快速总结。
apropos
用途:apropos查找使用说明的名称。
举例:apropos print(等价于man -k prink)。
arch
用途:arch获得机器体系结构的描述信息。
举例:arch。下面是arch输出的结果: sun4
将这个命令与uname进行比较。
ash
用途:ash是外壳,只用于某些系统。
举例:ash。这个命令启动ash外壳的一个实例。
at
用途:at用于确定命令执行的时刻。
举例:at 9:00am December 31。
awk
用途:awk是一种模式扫描和执行语言。
举例:awk\'{print $1}\'file.txt。这个命令执行后将打印出file.txt的第一个区域。
bash
用途:bash是GNU Bourne-Again外壳。
举例:bash[options]。这个命令启动bash外壳,它是一个增强的和sh兼容的外壳。bash的提示符为$。
biff
用途:biff通知你是否收到了邮件。
举例:biffy。这个命令叫biff通知你新邮件什么时候到达(注意,要想让biff工作,你必须同时运行 sendmail)。
cancel
用途:cancel取消挂起的打印作业。
举例:cancel23。这个命令取消23号打印作业。
cal
用途:cal显示无格式文本日历。
举例:cal。以下是命令执行后输出的列表: August 1998


cat
用途:cat将文件连接在一起并显示这些文件中的内容。
举例:cat myfile.txt。这个命令执行后显示myfile.txt中的内容。
cc
用途:cc是用于许多系统的C编译器。
举例:cc myfile.c -o myfile。这个命令执行后对myfile.c源文件进行编译并输出一个名为myfile的可执行文件。
cd
用途:cd用来改变当前目录。
举例:cd/usr/bin。这个命令执行后将当前目录更改为/usr/bin。
chfn
用途:chfn用来改变finger信息。
举例:chfn(系统将会提示你进行更改)。
chgrp
用途:chgrp用来改变文件的组所有权。
举例:chgrp users/home/bwagner/*。这个命令执行后是"users"组的每一个人都可以访问我的文件。 (bwagner代表你的用户名)
chmod
用途:chmod用来改变指定文件的权限。
举例:chmod=r myfile.txt。这个命令执行后将myfile.txt的权限更改为只读。
chown
用途:chown用来改变文件的所有权。
举例:chown bwagner myfile.txt。这个命令执行后将myfile.txt的权限授予我。
clear
用途:clear用来清除屏幕。
举例:clear。
comm
用途:comm逐行比较两个文件。
举例:comm myfile.txt yourfile.txt。这个命令执行后将myfile.txt和yourfile.txt两个文件进行比较。
compress
用途:compress用来压缩文件,在压缩后给文件以.z的扩展名。将这个命令和gzip比较一下。
举例:compress myfile.txt。这个命令执行后将myfile.txt进行压缩并给它起一个.z的扩展名。最后得到的文件名是myfile.txt.z。
cp
用途:cp用来复制文件。
举例:cp myfile.txt yourfile.txt。这个命令执行后将myfile.txt的内容复制到一个名叫yourfile.txt的文件中去。
csh
用途:csh是C外壳。
举例:csh。这个命令执行后启动C外壳。当你启动了csh后,可以判断出运行环境已改变了,因为系统提示符已从$变为%。
cu
用途:cu使用标准的拨出线路呼叫另一个系统。
举例:cu 5555555。这个命令执行后使用电话号码5555555呼叫另外一个系统。
cut
用途:cut用来删除文件中的列或行。
举例:cut -c2 myfile.txt。这个命令执行后将删除myfile.txt文件中的第2列(与cut相对的命令是paste)。
date
用途:date用来得到日期和时间。
举例:date。以下是date命令执行后输出的列表:
Wed Aug 5 19:10:42 PDT 1998
df
用途:报告磁盘中可以使用的自由空间。
举例:df。以下是该命令执行后输出的列表:
diff
用途:diff用来比较两个文件并报告这两个文件的不同之处。
举例:diff myfile.txt yourfile.txt。这个命令执行后比较myfile.txt和yourfile.txt两个文件。diff将显示这两个文件中所有的不同行。将这个命令和comm和uniq命令进行比较。
dir
用途:dir用来列出某些平台上的目录内容。
举例:dir(dir的功能和ls完全相同,但是它所带的选项更少。dir并不适合于所有的UNIX系统)。
du
用途:du报告磁盘的使用情况。
举例:du。以下是du命令执行后输出的列表。
echo
用途:echo用来显示指定的文本内容。
举例:echo"This is my workstation."。这个命令执行后将在屏幕上打印出下列信息:
This is my workstation。
ed
用途:ed是一个简单的no-frill的文本编辑器。
举例:ed。
egrep
用途:egrep用来查找文件中符合一定要求的模式。当该命令找到指定的模式时,它将会在屏幕上打印出相应的行。
举例:egrep"I am bored"myfile.txt。这个命令执行后将查找myfile.txt文件中的I am bored字符串。
elm
用途:elm是一个流行的邮件客户程序。
举例:elm。这个命令将启动elm邮件阅读器。
file
用途:file用来报告指定文件中的数据类型。
举例:file * 。以下是file命令执行后输出的列表:
find
用途:find用来查找目录中的文件。
举例:find.-name*gif。这个命令执行后查找位于我的主目录中或主目录以下带有.gif扩展名的所有文件。以下是find执行后输出的列表:
finger
用途:finger用来报告用户信息。
举例:finger bwagner。这个命令执行后将列出和我有关的当前可用的所有信息。
用途:fsck用来检查和修改文件系统。
举例:fsck/dev/dsk/cot1d0s0。fsck是一个存在潜在威胁的命令。在使用该命令前应阅读和它有关的使用说明。
ftp
用途:ftp用来在主机之间传送文件。
举例:ftp traderights.pacificnet.net。这个命令执行后将本机连接到traderights.pacificnet.net上。ftp带有非常多的选项和标志。查找该命令的使用说明可获得更进一步的信息。
g
用途:g++是GNU项目C编译器。
举例:g++ myfile.c -o myfile。这个命令执行后将对用C++编写的程序进行编译并输出名叫myfile的可执行文件。
gawk
用途:gawk是awk的GNU免费版。
举例:awk\'{print $1}\'file.txt。这个命令执行后将打印出file.txt文件的第一个区域。
gcc
用途:gcc是GNU项目C和C++编译器。
举例:gcc myfile.c -o myfile。这个命令执行后对myfile.c源文件进行编译并输出名叫myfile的可执行文件。
grep
用途:grep用来查找符合某种模式的文本行并打印出所有相应的文本行。
举例:grep ecoli hamburger.txt。这个命令执行后查找hamburger.txt文件中的单词ecoli。
gunzip
用途:gunzip用来压缩或解压缩文件(通常是那些带有.gz扩展名的文件)。
举例:gunzip myfile.txt.gz。这个命令执行后将解压缩myfile.txt文件。
gzip
用途:gzip用来压缩或解压缩文件。
举例:gzip myfile.txt。这个命令执行时对myfile.txt进行压缩,产生一个名叫myfile.txt.gz的压缩文件。该压缩文件可以使用gzip或gunzip进行解压缩(将这个命令和gunzip进行比较)。
halt
用途:halt终止系统的运行。
举例:halt。
head
用途:head在默认的情况下输出任何文件的头10行。
举例:head myfile.txt。在这个命令执行后将在屏幕上显示myfile.txt的头10行。
hostname
用途:hostname用来打印出机器的主机名。
举例:hostname。
ispell
用途:ispell是一个在Linux上使用的交互式拼写检查程序。
举例:ispell myfile.txt。这个命令将启动ispell环境并检查myfile.txt文件是否存在拼写错误。
kill
用途:kill用来终止某个进程。
举例:kill 529。这个命令执行后将终止第529号进程。
ksh
用途:ksh是Korn外壳。
举例:ksh。这个命令将启动Korn外壳。
last
用途:last用来报告某个用户已登录的日期和时间。
举例:last bwagner|head -3。这个命令执行后将输出我最近的三次登录时间。ln
用途:ln用来在文件之间建立链接。
举例:ln myfile.txt another-file.txt。这个命令执行后将在myfile.txt中建立和another-file.txt之间的链接。一旦存在这种链接,对其中某个文件的修改都会导致对另外一个文件的修改。
lp
用途:lp用来将文件发送到打印机。
举例:lp myfile.txt。这个命令执行后将myfile.txt发送到打印机。
lpr
用途:lpr用来将作业发送到打印机(lpr是lp的Berkeley等价命令)。
举例:lpr myfile.txt。这个命令执行后将myfile.txt发送到打印机。
lprm
用途:lprm用来从打印机队列中删除作业。
举例:lprm 23。这个命令执行后将从打印机列表中删除第23号作业。
lpstat
用途:lpstat用来报告挂起的打印作业状态。
举例:lpstat。
ls
用途:ls用来列出目录内容。
举例:ls/home/bwagner。这个命令执行后将列出/home/bwagner目录中的内容。ls的典型命令行开关包括 -a(列出所有文件,包括隐藏文件)和-l(用长格式列出所有目录内容)。
mail
用途:mail允许用户发送和接收邮件。
举例:cat myfile.txt|mail bwagner。这个命令执行后将myfile.txt中的内容邮寄给我(也可以交互式使用mail,只要发送mail命令就行了)。
man
用途:man是UNIX参考手册的接口。这些手册通常称为使用说明(man pages)。
举例:man mail。这个命令执行后将启动mail使用说明。
mkdir
用途:mkdir用来创建指定的目录。
举例:mkdir bozo-mail。这个命令执行后将创建一个名叫bozo-mail的目录。
more
用途:more用来在屏幕上一次显示一屏文件的内容。
举例:more myfile.txt。这个命令执行后将显示myfile.txt中的内容,一次显示一屏。这样使得阅读内容超过40行的文件很轻松。
mount
用途:mount安装和卸载文件系统。
举例:mount/dev/fd0/mnt/floppy。这个命令执行后将第一个软盘驱动器安装在/mnt/floop目录中。
mv
用途:mv用来移动文件。
举例:mv myfile.txt/usr。这个命令执行后将myfile.txt移动到目录/usr。
nroff
用途:nroff将文本文件格式化为行式打印机或终端屏幕所需要的形式。
举例:nroff myfile.txt。这个命令执行后将产生一个清楚的、格式优美的输出结果。
passwd
用途:passwd用来更改用户密码。
举例:passwd(系统会提示用户进行更改)。
paste
用途:paste用来合并文件行或输出。
举例:who|awk\'{print $1}\'|paste--。这个命令执行后获得当前用户ID并将它们按行列格式打印。两个-符号指定列的形式。
perl
用途:perl(Practical Extraction and Report Language,实际抽取和报告语言)是一种功能强大的文本扫描语言。
举例:perl-e\'print"Hello Word\\n";\'。这个命令执行后将显示如下信息:
Hello Word
perl能用于编写复杂的程序。但是,这些程序一般不能在命令行键入。相反,它们存储在perl脚本文件中(包含许多perl命令的文本文件)。
pico
用途:pico是一个免费的文本编辑器,在某些UNIX版本中可以得到(特别是Linux)。
举例:pico myfile.txt。这个命令启动pico来编辑myfile.txt。
pine
用途:pine是一个可以免费获得的电子邮件和USENET软件包(许多UNIX系统也包括它,但是Pine最常见于Linux系统中)。
举例:pine。这个命令启动pine电子邮件阅读器。
ping
用途:ping用来检查其他主机是否运行并且状态良好。
举例:ping 207.171.0.111。以下是Sparc上的ping执行后输出的列表:
207.171.0.111 is alive
对于其他系统,ping执行后输出的情况会不一样。 printenv
用途:printenv用来打印当前的所有环境变量。
举例:printenv。以下是printenv命令执行后输出的列表:
ps
用途:ps用来报告当前进程的状态。
举例:ps-a。这个命令执行后将打印出当前所有的进程。以下是输出的列表:
用途:pwd用来显示当前的目录名。
举例:pwd。这个命令执行后将打印出当前目录名。
rcp
用途:rcp用来从远程主机中复制文件。
举例:rcp tigger:/home/poo/files.txt files.poo.txt。这个命令执行后将从主机"tigger"中复制文件file.txt并在本机中给该文件改名为files.poo.txt。
rlogin
用途:rlogin代表remote login(远程登录)。rlogin用来在与用户ID信息一致的网络上进行自动登录。
举例:rlogin tigger。这个命令启动本机和"tigger"主机之间的一次远程对话。
rm
用途:rm用来删除指定空目录。
举例:rm myfile.txt。这个命令执行后将删除myfile.txt。
rmdir
用途:rmdir用来删除空目录。
举例:rmdir/mydirectory。这个命令执行后将删除/mydirectory。
sh
用途:sh是UNIX外壳。
举例:sh。这个命令将启动UNIX外壳。
sort
用途:sort将文本文件逐行分类。
举例:sort myfile.txt。这个命令将myfile.txt中的内容分类。
stty
用途:stty显示或更改终端设置。
举例:stty[options]。stty带有100万个选项。
tail
用途:tail在默认情况下显示指定文件的最后10行。
举例:tail myfile.txt。这个命令执行后,屏幕上将显示myfile.txt的最后10行。你也可以指定显示的行数,比如tail-50 myfile.txt执行后,将会在屏幕上打印出文本的最后50行。
talk
用途:talk允许你和另一个用户进行聊天。
举例:talk bwagner。这个命令邀请我进行聊天。
telnet
用途:telnet允许你和其他主机进行远程会话。
举例:telnet 202.194.14.236。这个命令将启动本机连接到202.194.14.236。
traceroute
用途:traceroute跟踪分组从节点A(你的机器)传送节点B(某个远程主机)所经过的路径。这个命令通常用来确定网络中是否存在故障。
举例:traceroute mcp.com。以下是traceroute执行后输出的列表:
用途:tty显示当前终端名。
uname
用途:uname用来获得系统信息,包括体系结构、操作系统和处理器类型。
举例:uname-a。以下是uname执行后输出的实例:
SunOS wagjag 5.6 generic sun4u sparc SUNW,Ultra-1
uniq
用途:uniq查找指定文件中的重复行并将它们删除。
举例:uniq myfile.txt。
uptime
用途:uptime报告系统到现在为止运行了多长时间。
举例:uptime。以下是该命令执行后输出的实例:
9:31pm up 4 day(s),20:36,14 users,load average:0.00,0.01,0.02
vi
用途:vi是文本编辑器。
举例:vi myfile.txt。这个命令启动vi来编辑myfile.txt。
wall
用途:wall向所有的终端发送指定消息。
举例:wall work sucks!!。这个命令执行后将在所有终端上打印出以下消息:
work sucks!!
wc
用途:wc计算并显示指定文件中的字节数、字数和行数。
举例:wc myfile.txt。这个命令执行后显示myfile.txt的统计信息。
whatis
用途:whatis显示关于指定命令的简要描述。
举例:whatis whatis。这个命令执行后显示whatis的使用说明描述信息。以下是输出的列表:
whatis(1) -display manual page descriptions
Whereis
用途:whereis用于确定文件的位置。
举例:whereis traceroute。这个命令执行后查找traceroute文件。
who
用途:who显示目前已登录用户的统计信息。
whoami
用途:whoami显示你的当前用户ID。 

 

以下只说明各指令的基本用法, 若需详细说明, 请用 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(8)

我们如要参考 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 username ]

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

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

rsh host [ -l username ] [ command ]

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

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

rsh 须要在每个可能会做为 remote host 的机器上设定一个档案,称为 .rhosts。
这个档案每一行分为两个部份,第一个是允许 login 的 hostname , 第二个部份
则是允许 login 的 username 。例如,在 ccsun7.csie.nctu.edu.tw 上头你的 
username 为 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 ,第二栏用 + 来取代任何
username 。

如一般 user 喜欢偷懒利用 " + username " 来代替列一长串 hostname ,
但是这样将会使得即使有一台 PC 上跑 UNIX 的 user 有与你相同的 
username , 也可以得到你的 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 连接上了,它将会询问你 username 
与密码,如果输入对了就可以开始进行档案传输。

在 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 ,一般的"外来客"可以利用这个 username 取
得该 server 的公共资料。不过 anonymous 在询问 password 时是要求使用
anonymous 的使用者输入其 email address,以往有许多台湾的使用者在使用
国外的 ftp server 时并没有按照人家的要求输入其 email address,而仅是
随便打一些字串,引起许多 internet user 和管理者的不满,对台湾的使用
者的风评变得很差,因此遵循各 ftp server 的使用规则也是一件相当重要的事。

f. 关於通讯用的指令:

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

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

talk username[@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 | username ] 

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

i. 更改个人使用资料:

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

passwd [ username ]

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

2. chsh
chsh 是提供使用者更换 login shell 的指令,你可经由此更换自己使用的 shell 。
posted @ 2011-05-27 09:50  留心_frankliujava  阅读(7055)  评论(0编辑  收藏  举报