Linux编程白皮书(三)[转贴]
(2007-11-27 11:55)
分类: 其他编程
74.sync
(1)简介
sync:清空LINUX文件系统的缓冲区。
在系统的CPU停止工作以前必须调用该命令来将系统的缓冲区写入硬盘。REBOOT和HALT指令都将调用该命令来清空缓冲区。LINUX的优点之一就是磁盘存取速度快,这是因为它将不用的内存都拿来作缓冲区了,这带来的问题就是在系统前必须将缓冲清空,否则就会丢失信息和数据。请看Linus本人是如何说的:“sync这个命令只保证在一定时间内将数据写入硬盘,这需要一定的时间写完所有的数据,如果用户在执行这条命令后马上关机的话,请稍等片刻。”(但是REBOOT和HALT命令会代替用户作这些工作。)
update -周期性地清空LINUX文件系统的缓冲区。
它有两种工作模式,一种是缺省地每5秒钟写一些块(不调用sync),一种是每30秒调用一次sync。在系统启动时update作业应该越早运行越好,在SLACKWARE版本中在/etc/rc.d/rc.S中的第二条命令就是运行update。它的进程号一般是13。
(2)部分参数说明
update[选项]
-S:只使用sync工作。
-a秒:设定调用sync的时间间隔,缺省是30秒。
-f秒:设定缺省工作方式的时间间隔,缺省是5秒。
75.su
(1)简介
su:改变用户的ID或成为超级用户。
作者为Julianne Frances Hargh(jfh@tab.com)。
su可一让用户在一个登录的shell中不用退出就可以变成另外一个用户,如果后面不跟参数,则su缺省地变成超级用户。执行su命令时,程序会让用户输入密码,如果密码不正确,则程序将给出出错信息后退出,所有su的动作都会被系统记录在一个log文件中,以便探测谁在恶意攻击系统。su之后,当前的所有环境变量都会被传递过去,但是路径值$PATH将被重置为/bin:/usr/bin(对一般用户)或/sbin:/bin:/usr/sbin:/usr/bin(对超级用户)这两个缺省值可以通过改变文件/etc/login.defs中的ENV_PATH值和ENY_SUPATH的值来改变。
(2)部分参数说明
su [-][用户名[参数]]
su后面可以跟参数,例如su用户名-c命令,就会在改变用户ID后执行相应的命令并退出。
(3)范例。变更为用户fangh:
lark:->su fangh
Password:
>whoani
fangh
>
76.sudo
(1)简介
sudu:以超级用户的身份执行某些命令。
visudo:编辑可以使用sudo命令的用户列表。
在系统管理中,有时需要给予某些用户的部分系统特权以便执行某些系统命令。例如shutdown,halt,lpc等命令,但是系统管理员又不愿意给予他们全部的系统特权,这时sudo命令就非常有用了。Sudo允许经过同意的用户以超级用户的身份执行指令。Sudo一/etc/sudoers这个文件来判定谁是授权的用户。Sudo将会提示用户输入密码开始一段N分钟的可以使用的时间(其中N是在安装的进修定义的且缺省值为5分钟结束后自动退出)。
Sudoers这个文件是由一个选择性的主机别名(host alias)域,一个选择性的指令别名(command alias)域以及用户说明(user specification)域所组成的。所有的指令别名或主机别名必须需以他们自己的关键字作为开始(Host_Alias/Cmnd_Alias)。注意,只有第一次使用的用户(在用户说明域里有记录的用户)使用时会有说明。
用户说明域格式:
用户 有权限[:有权组]. . .
有权组::=主机类别=[op]指令类别[,[op]指令类别]. . .
主机类别::=小写的主机名或主机别名。
指令类别::=指令或指令别名。
op::=‘!’否定符。
主机别名域格式:
Host_Alias主机别名=主机列表
Host_Alias::=一个关键字。
主机别名::=一个大写的别名。
主机列表::=以逗号间隔的一些主机名
指令别名域格式:
Cmnd_Alias指令别名=指令列表
Cmnd_Alias::=一个关键字。
指令别名::=一个大写的别名。
指令列表::=以逗号间隔的一些指令。
在“#”符号后面是注解。太长的行可以使用“\”来分成新的行。保留的别名“ALL”在{Host,Cmnd}_Alias里都可以使用。不要使用关键字“ALL”来定义一个别名,这个别名无效。
注意,“ALL”代表全部的主机跟指令。
用户可以使用这个语法从所有定义中掉一些项目:
user host =ALL,!ALIASI,!/etc/halt. . .
sudoers文件的范例文件:
# Host alias specification
Host_Alias HUB=houdini.rootgroup.com:\
REMOTE=merlin,kodiakthorn,spirit
Host_Alias MACHINES=kalkan,alpo,milkbones
Host_Alias SERVERS=houdini,merlin,kodiakthorn,spirit
#Command alias specification
Cmnd_Alias LPCS=/usr/etc/lpc,/usr/ucb/lprm
Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh
Cmnd_Alias MISC=/bin/rm,/bin/cat:\
SHUTDOWN=/etc/halt,/etc/shutdown
# User specification
britt REMOTE=SHUTDOWN:ALL=LPCS
robh ALL=ALL,!SHELLS
nieusma SERVERS=SHUTDOWN,/etc/reboot:\
HUB=ALL,!SHELLS
jill houdini.rootgroup.com=/etc/shutdown,MISC
markm HUB=ALL,!MISC,!/etc/shutdown,!/etc/halt
billp ALL=/usr/local/bin/top:MACHINES=SHELLS
davechieb merlin=ALL:SERVES=/etc/halt:\
kodiakthorn=ALL
上面的sudoers说明文件是由4个主机别名说明,4个指令别名说明以及7个用户说明所组成的。Britt被允许在远端机器(merlin,kodiakthorn,还有sprirt)上执行/etc/halt,/etc/shutdown,/usr/etc/lpq以及/usr/ucb/lprm。Rohn被允许在任何机器上执行除了SHELL指令以外的任何指令。Jill被允许在机器houdini上执行/etc/shotdown,/bin/rm,以及/bin/cat。Davehieb可以在机器merlin以及kodiakthor上执行任何指令并且可以halt服务器。
Sudoers文件应该用visudo编辑,它会锁住该文件并且检查语法,以避免产生错误的文件。Sudo被设计成用4.3BSD的syslogging来记录,但是也可以使用用户自己的log进程来记录如果一个没有被授权的用户执行了sudo的话,将会有一封mail从该用户处寄送到当地的管理员处(Linux缺省是root)。所有的设定都是在安装时定义的由sudo.h及Makefile定义,但是Linux缺省的是安装好的执行文件,用户如果要更改的话,需要重新编译与安装。
允许巢状的主机以及指令别名。
允许在sudoers文件中使用host specifie,以便使全局符号(user ALL,!SERVERS,. . .=commands)。
允许在sudores文件里的用户别名(就如同主机/指令别名一样)。
(2)部分参数说明
sudo命令
(3)范例。用sudo来halt机器:
lark:->sudo halt
77.tail
(1)简介
tail:显示文件的最后一部分
(2)部分参数说明
tail [-c[+]N[bkm]][-n[+]N][-fqv][--bytes=[+]N[bkm]]
[--lines=[+]N][--follow][--quiet][--silent][--verbose]
[--help][--version][文件名列表]
tail缺省显示文件名列表中的每个文件的最后十行,如果没有文件名或文件名为“-”则其从标准输入中读取文件,如果有多个文件则其会在文件前面加上“= =>文件名<==”以便区分。
-c N, --bytes N:显示文件后部的N比特大小的部分,N后面可以跟bkm参数。
b:512比特的块。
k:1k的块。
m:1M的块。
-f:--follow:如果文件大小在增长的话,tail将跟随文件增长而显示。
-l, -n N, --lines N:显示文件末尾的N行。
-v,--verbose:一直输出“= =>文件名<= =”形式的文件名。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。显示文件/etc/DIR_COLORS的最后三行:
lark:->tail -v -n 3/etc/DIR_COLORS
= => /etc/DIR_COLORS<= =
.xbm 01:35
.xpm 01:35
.tif 01:35
lark:->
78.tar
(1)简介
tar:GNU版的文件打包备份的工具。
(2)部分参数说明
tar [-] A --catenate --concatenate | c --create |d --diff --compare |r --append | t --list | u-update |x
-extract --get [--atime -preserve][-b, --block-size N][-B, --read--full-blocks][-C, --directory DIR][
--checkpoint][-f, --file[HOSTNAME:]F][--force-local][-F,--info--script F--neo--volume-script F][
-G, --incrementat][-g, --listed-incremental F][-h, --dereference][-i, --ignore-zeros][--ignore-failed-
read][-k, --keep-old-fils][-k, --starting-file F][-l,--one-file-system][-L, --tape-lengthN][-m,
--modification-time][-M,--multi-volume] [-N, --after-date DATE, --newer DATE][-o, --old-
archive, --portability][-O, --to-stdout][-p, --same-permissions, --preserve-permissions][-P, --absolute-paths] [--preserve][-R, --record-number][--remove-files]
[-s,--same-order, --preserve-order][--same-owner]
[-s,--sparse][-T,--files-from F][--null][--totals][-v,--verbose][-v, --label NAME]
[-version] [-w, --inteactive, --confirmation][-W,--verify][--exclude FILE][-X,--exclude-from FILE]
[-Z, --compress,--uncompress][-z, --gzip, --ungzip],[-use-compress-progran PROG][--block-compress][-[0-7][lmh]]
[文件名列表]
[目录名列表]
tar是对一般用户最易用和最可靠的实用程序,从归档介质(可以是一个磁带机,也可以是普通文件)上保留和恢复文件,也能从之个文件归档中抽取单个文件。
-A, --catenate, --concatenate:向归档文件中追加另一个tar文件。
-c, --create:建立新的归档文件。
-d, --diff, -compare:将归档文件和文件系统上的文件作比较。
--delete:从归档文件中删除文件(不能够用在磁带机上)。
-r, --append:向归档文件末尾追加文件。
-t, --list:对归档文件列目录。
-u, --update:只追加比归档文件中的文件新的文件。
-x, -extract, --get:从归档文件中解出文件。
--atime-preserve:不改变文件的访问次数。
-b, --block-size N:块大小为N乘以512比特(N缺省为20)。
-B, --read-full-bolcks:为兼容4.2BSD而设。
-C,--directory DIR:将目录名改为DIR。
--checkpoint:在读归档文件时输出文件名。
-f, --file[HOSTNAME:]F:使用设备F来储存归档文件。
-force-local:强制设定归档文件为本地文件。
-F, --info-script F --new-volume-script F为在每盘磁的结尾执行设定的脚本文件。
-G, --incremental:用老的GNU格式来打包/列出/解开归档文件。
-g, --listed-incremental F:用新的GNU格式打包/列出/解开归档文件。
-h, --dereference:不保存符号连接而保存其指向的文件。
-i, --ignore-zores:忽略零block的文件。
--ignore-failed-read:在文件不可读时不退出。
-k, --keep-old-files:在从归档文件中释放文件时不改写现有文件。
-K,--starting-file F:从归档文件的第F个文件开始。
-l, --one-file-system:只在本地文件系统产生归档文件。
-L, --tape-length N:在写完N*1024byte后换磁带。
-m, --modification-time:归档时不改变文件的修改时间。
-M, --multi-volume:存放/列出/解开多卷的归档文件。
-N, --after-date DATE, --newer DATE:只存放比日期DATE新的文件。
-o, --old-archive,--portability:和旧的V7格式存放(缺省为ANSI格式)。
-O, --to-stdout:将文件解开到标准输出。
-p, --same-permissions, --preserve-permissions:解开文件时恢复所有访问限制。
-P, --absolute-paths:解开文件时使用绝对路径。
--preserve:同-p -s。
-R, --record-number:显示归档文件内部的所有记录数。
--remover-files:将文件归档后删除源文件。
-s, --same-order, --preserve-order:显示同归档文件中顺序一样的文件名。
--same-owner:解开文件时恢复原所有者。
-S, --sparse:有效存放稀疏文件。
-T, --files-from F:从文件F中读取要释放或解开的文件名。
--null:使能-T参数可以读取有空格的文件名,屏蔽参数-C。
--totals:在创建文件时显示总字节数。
-v, --verbose:处理过程中输出相关信息。
-V, --label NAME:用卷标名NAME来命名归档文件。
--version:输出版本号。
--w, --interactive, --confirmation:进行每一步操作前要确认。
-W, --verify:在打包文件后进行校验。
--exclude FILE:不将文件FILE归档。
-X, --exclude-from FILE:不将文件FILE中列出的文件归档。
-Z, --compress, --uncompress:用compress来压缩归档文件。
-z, --gzip, --ungzip:用gzip来压缩归档文件。
-use-compress-program PROG:用自定义的压缩程序PROG来压缩归档文件。
-block-compress:将压缩的归档文件做成块,以便磁带机使用。
-[0-7][1mh]:设定磁带驱动器和密度。
(3)范例。将当前目录下所有.txt文件打包并压缩到归档文件bak.tar.gz:
lark:>tar czvf bak.tar.gz ./* .txt
./tcsh.txt
将目录./sec打包到归档文件sec.tar.gz:
lark:->tar czvf sec.tar.gz ./sec
./sec/
./sec/advance_edu.tgz
./sec/email
./sec/doc.tar
lark:->
79.tcsh
(1)简介
tcsh:一个带有文件名自动补充和行编辑功能的C shell。
tcsh是著名的伯克利UNIX的C SHELL的增强版本,它既可以作为一个交互式的登录SHELL又可以作为脚本文件的处理器。
(2)部分参数说明
-b:强迫tcsh中止对参数的处理,在此选项之后的参数都作为传递给tcsh的命令来处理。
-c:若用-c参数,则tcsh执行完后面所跟的命令后退出。
-d:从文件-/.cshdirs中读入目录堆栈。
-Dname[=value]:设置环境变量name的值为value。
-e:tcsh执行命令后返回值为非零值时则退出tcsh。
-f:tcsh忽略配置文件-/.tcshrc,这样启动tcsh的过程会加快。
-F:tcsh使用fork来代替cfork以产生新进程。
-i:即使标准输入不为终端,也成为交互式的shell。
-l:表明此shell为登录shell。
-m:tcsh从当前目录下读取-/.tcshrc即使此目录不为当前用户的根目录。
-n:读入命令但是并不执行。
-q:tcsh接受SIGQUIT信号。
-s:从标准输入到接受命令。
-t:使tcsh只处理单行命令,当一行写不下的时候,用“/”可以在下一行接着输入。
tcsh在作为登录shell启动时,首先读取系统配置文件/etc/csh.cshrc和/etc/csh.login.接着到用户的根目录下去读取-/.tcshrc,如果没有-/.tcshrc则去读取-/.cshrc,接着读取-/.history,-/.login最后是-/.cshdirs。非登录shell启动时只读取/etc/csh.cshrc和-/.tcshrc。
·命令行编辑器:使用方向键来编辑,上下键在历史记录中选择命令,左右键在命令行上前后移动进行编辑。
·命令补充和列表:在用户键入命令时,经常不能记住命令或目录的全名,这时候tcsh可以帮助用户将剩余部分补全,例如用户键入“/usr/lost”但是忘记后面的部分,这时候用户只需要键入TAB键,tcsh就会自动将剩余的部分补全--“/usr/lost+found./”,当用户给出的部分有多个匹配的情况下例如“/usr/l”则TAB将无法补全,这时候用户只须键入“Ctrl+D”则tcsh将替用户列出所有匹配的情况:“lib/local@lost+found/”,用户就可以自己选择了。
·拼写检查:在设置变量correct的值为cmd后,则tcsh会对用户输入错误的命令给出提示:
>set correct=cmd
>ls/usr/bin
CORRECT>ls/usr/bin(y|n|e|a)?
如果回答yes就会将lz更正为ls。此外,tcsh所占内存比ash要大400k,为1.2M左右,如果用户内存不足的话可以换用其他shell。
以上的介绍只是一些粗略的介绍,TCSH的强大功能有待于用户在实践中去发掘。或使用man tcsh去查看tcsh的用户手册。
80.tee
(1)简介
tee:从标准输入中读取,向标准输出和其他文件中写入。
(2)部分参数说明
tee [-ai] [--append] [--ignore-interrupts] [--help]
[--version] [文件名列表]
-a, --append:将标准输入追加到输出文件的后面而不是缺省的覆盖它。
-i, --ignore-interrupt:忽略中断信号。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。将输入重定向到标准输出和文件out中:
lark:->tee out
this is a test
this is a test
lark:->cat out
this is a test
fish:->
81.test
(1)简介
test:比较文件类型并返回相应的值。
(2)部分参数说明
test[表达式]
test[--help, --version]
test在表达式为真的时候返回0,在表达式为假的时候返回1,可行的表达式如下:
-b文件名:如果文件存在且为块文件则为真。
-c文件名:如果文件存在且为字符文件则为真。
-d文件名:如果文件存在且为目录则为真。
-e文件名:如果文件存在则为真。
-f文件名:如果文件存在且为普通文件则为真。
-g文件名:如果文件存在且为设置组则为真。
-k文件名:如果文件是真实文件则为真。
-L文件名:如果文件存在且为符号连接文件则为真。
-p文件名:如果文件存在且为管道文件则为真。
-r文件名:如果文件存在且可读则为真。
-s文件名:如果文件存在且比上一个文件大则为真。
-S文件名:如果文件存在且为socket文件则为真。
-t[fd]:如果fd在一个终端上打开则为真。
-u文件名:如果文件存在且其设置用户ID的位为1则为真。
-w文件名:如果文件存在且可写则为真。
-x文件名:如果文件存在且可执行则为真。
-O文件名:如果文件存在且其属主为有效用户则为真。
-G文件名:如果文件存在且其属组为有效组则为真。
文件1 -nt文件2:如果文件1比文件2新则为真。
文件1 -ot 文件2:如果文件1比文件2旧则为真。
-z字符串:如果字符长度为0则为真。
-n字符串:如果字符串长度不为0则为真。
字符串1=字符串2:如果两字符串相等则为真。
字符串1!=字符串2:如果两字符串不相等则为真。
!表达式:如果表达式为假则为真。
表达式1-a表达式2:表达式1和表达式2都为真则返回真。
表达式1-o表达式2:表达式1或表达式2只要有一个为真就返回真。
参数1 OP参数2:OP为-eq, -ne, -lt, -gt, 或-ge。
此命令一般是为shell编程使用。
82.time
time:取得以秒为单位的当前时间。
此条命令取得从00:00:00 GMT,January 1,1970开始的总时间。
(2)范例
lark:->time
0.170u 0.400s 12:48.52 0.0% 0+0k 0+0io 2229pf+0w
lark:->
83.top
(1)简介
top:显示系统的最高进程。
top这个命令可以即时显示当前系统最占CPU时间的进程,它同时提供一个交互的界面让用户可以观察系统进程情况,它可以按照CPU使用情况,占内存大小,运行的时间来对进程排序,这是系统管理的一项必不可少的工具。
(2)部分参数说明
top[-][d delay][q][c][S][s][i]
d:设定刷新屏幕的时间间隔。
q:此选项使得top刷新时间为零,如果是超级用户使用这个选项的话,则top将以最高优先级运行。
S:设定累积模式,即一个进程的CPU时间包括它的所有死子进程消耗的时间。
s:使top以安全方式运行,即对外界输入不作反应。
I:忽略死进程和僵尸进程。
c:显示命令行。
在运行top时按h键就可以观看top交互命令的帮助。
(3)范例
lark:->top
10:16pm up2 days, 7:53, 2users, load average;0.14, 0.08,0.06
66 processes:5sleeping, 1 running, 0 zombie, 0stopped
CPUstates:4.7%user, 1.3%system, 5.6%nice,94.4%idle
Mem:63104Kav, 60608K used, 2496K free, 35332Kshrd, 9836Kbuff
Swap:128516K av, 292used, 128224K free
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
5968 root 15 0 11672 11672 1520 S 0 4.1 18.4 3:41X
10944 fangh 17 0 460 460 344 R 0 1.1 0.7 0:00top
10356 bbs 1 0 384 384 292 S 0 0.1 0.6 0:00 bbsnnrp
10359 bbs 1 0 396 396 282 S 0 0.1 0.6 0:00 bbsnnrp
9526 root 1 0 500 500 388S 0 0.1 0.7 0:00 in.telnetd
7823 chenxy 1 0 2144 2144 1232S 0 0.1 3.3 0:00 cxterm
1 root 0 0 320 320 252 S 0 0.0 0.5 0:05 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
3 root -12-12 0 0 0 SW 0 0.0 0.0 0:00 kswapd
4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 nfsion
5 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 nfsiod
6 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 nfsiod
7 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 nfsiod
9502 root 0 0 292 292 236 S 0 0.0 0.4 0:00 agetty
120 root 0 0 544 544 400 S 0 0.0 0.8 0:12 nmbd
14 root 0 0 284 284 228 S 0 0.0 0.4 0:00 kerneld
84.touch
(1)简介
touch:改变文件的时间参数。
touch将文件的访问时间,修改时间设置为系统的当前时间,如果该文件不存在则建立一个空的新文件。
(2)部分参数说明
touch [-acfm] [-r reference-file] [-t MMDDhhmm[[CC]YY][.SS]] [-dtime]
[--time={atime, access,use,mtime,modify}] [--date=time]
[--file=reference-file] [--no-create][--help] [--version]
-a, --time=atime, --time=access, --time=use:只改变访问时间。
-c, --no-create:如果目标文件不存在,也不建立空文件。
-d, --date time是:使用time来代替目前时间。
-f:为了同BSD版本的touch兼容。
-m, --time=mtime, --time=modify:只改变修改时间。
-r, --file reference-file:用文件reference-file的时间来代替当前时间。
-t MMDDhhmm[[CC]YY][.ss]:使用此种格式的时间来代替当前时间。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。将当前目录下的文件的时间参数修改为当前时间:
lark:->touch *
lark:-> ls -l
total 1883
drwx------ 2 fangh users 1024 Sep 21:07 Mail/
-rw-r--r-- 1 fangh users 71209 Sep 21:07 bak.tar.gz
drwx------ 7 fangh users 1024 Sep 21:07 circle/
-rw-rw-r-- 1 fangh users 1208006 Sep 21:07 circle.tgz
-rw-r--r-- 1 fangh users 378880 Sep 21:07 sec.tar.gz
-rw-r--r-- 1 fangh userw 252409 Sep 21:07 tcsh.txt
lark:->
85.tr
(1)简介
tr:替换或删除字符。
从标准输入中读取输入,经处理后输出到标准输出。
(2)部分参数说明
tr [-cat] [--complement] [--squeeze-repeats] [--truncate-set] [--truncate-set 1] 字符串1字符串2
tr {-s, --squeeze-repeats} [-c][--complement]字符串
tr{-d, --delete} [-c] 字符串1
tr{-d, --delete} {-s, --squeeze-repeats} [-c] [--complement]字符串1字符串2
-c, --complemen:补足字符串1。
-d, --delete:删除字符串1而不是替换。
-s, --squeeze-repeats:将字符串的顺序替换为一个顺序。
-t, --truncate-set1:将字符串1比字符串二长的地方截断。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。将输入中的abc替换为ddd:
lark:->tr abc ddd
I love abc
I love ddd
86.tty
(1)简介
tty:显示目前终端所用的tty。
tty的返回值:
0:标准输入是一个tty。
1:标准输入是一个tty。
2:给出错误参数。
3:发生写错误
(2)部分参数说明
tty [-a] [--silent] [--quiet] [-help] [--version] -s, --silent, --quiet:不输出任何信息,只给出返回值。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。显示目前终端所用的tty:
lark:->tty
/dev/ttypl
lark:->
87.umout,mount
(1)简介
mount:装载一个文件系统。
umount:卸下一个文件系统。
(2)部分参数说明
mount [-hV]
mount -a [-fFnrvw] [-t vfstype]
mount [-fnrvw] [-o options [, . . .]] device | dir
mount [-fnrvw] [-t vfstype] [-o options] device dir
umount [-h V]
umount -a [-n] [-v] [-t vfstypes]
umount [-n] [-v] special | node. . .
-V:输出版权信息。
-h:输出帮助信息。
-v:校验模式。
-a:mount在文件/etc/fstab中的所有文件系统。
-F:同-a联用,并行mount所有文件系统。
-f:同-v联用,不作真实mount过程只是检查输出。
-n:mount文件系统后不久写入文件/etc/mtab。
-r:将文件系统mount为只读模式。
-w:将文件系统mount为读写模式。
-t vfstype:指定文件系统类型。
现有可mount的系统类型在/usr/scr/linux/fs/filesystems.c中定义:
minix, ext, ext2, xiafs, hpfs, msdos, umdos, vfat, proc,
nfs, iso9660, smbfs, ncpfs, affs, ufs, romfs, sysv, xenix
-o选项:设定mount的一些参数:
async:文件系统必须被异步写入。
atime:每次访问时将i节点的访问时间更新。
auto:自动选择文件系统类型。
defaults:使用缺省选项suid, dev, exec, auto, nouser, async。
dev:解释文件系统上的特殊设备文件。
exec:允许运行文件系统上的可执行文件。
noatime:每次访问时不将i节点的访问时间更新。
noauto:禁止自动选择文件系统类型。
nodev:禁止解释文件系统上的特殊设备文件。
noexec:禁止运行文件文件系统上的可执行文件。
nosuid:根本上设定用户ID位和设定组位起作用。
nouser:禁止非超级用户使用。
remount:重新mount一个已经mount的文件系统。
ro:将文件系统mount为只读模式。
rw:将文件系统mount为读写模式。
suid:允许设定用户ID位和设定组位起作用。
sync:文件系统必须被同步写入。
user:允许非超级用户使用。
不加参数则列出系统目前mount的文件系统。
(3)范例。列出系统目前mount的文件系统。
lark:->mount
/dev/hdal on / type ext2_(rw)
none on/ proc type proc(rw)
/dev/hda3 on/home type ext2(rw)
/dev/hda2on/usr/local type ext2(rw)
lark:->
加载光驱:
lark:->mount/dev/hdb/mnt
88.uname
(1)简介
uname:显示系统信息。
(2)部分参数说明
uname [-snrvma][--sysname][--nodename][--release]
[--machine][--all][--help][--version]
-m, --machine:显示机器硬件种类。
-n, --nodename:显示机器网络节点名。
-r, --release:显示操作系统发布版本。
-s, --sysname:显示操作系统名称。
-v:显示操作系统版本。
-a, -all:显示上面的所有信息。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。显示机器lark的全部信息:
lark:->uname -a
Linux lark 2.0.30 #3 Tue Jun 24 03:49:52 CDT 1997 I586 unkown
lark:->
89.unarj, unzip, lha
(1)简介
在DOS下最常用的压缩软件有adj, pkzip和早期的lha,他们产生的压缩文件如何在Linux下展开呢?这就要用到unarj, unzip,lha这三个工具软件了,其用法同其在dos下的同类软件用法几乎一样。只是请注意unarj和lha都是版权软件,是没有源码的,不属于GNU。且unarj和unzip只能解压不能压缩。
(2)部分参数说明
unarj 1压缩文件名:查看压缩文件目录。
unarj x压缩文件名:解开压缩文件。
unzip -v压缩文件名:查看压缩文件目录。
unzip -d 压缩文件名:解开压缩文件。
lha l压缩文件名:查看压缩文件目录。
lha x压缩文件名:解开压缩文件。
lha a压缩文件名 源文件名:压缩新文件。
90.uniq
(1)简介
uniq:从一个排好序的文件中删除重复的行。
(2)部分参数说明
uniq [-cdu] [-f skip-fields] [-s skip-chars] [-w check-chars]
[-# skip-fields] [+#skip-chars] [--count]
[--skip-chars=skip-chars] [--check-chars=check-chars]
[--help] [-version][输入文件][输出文件]
-u, --unique:只输出独一无二的行。
-d, --repeated:只输出重复的行。
-c, --count:输出重复行的重复次数。
-number, -f, --skin-fields=number:选择开始比较的域,number为忽略掉的域,各域之间是以TAB或空格键分开的。
+number, -s, --skip-chars=number;选择开始比较的字符,number为忽略掉的字符。
-w, --check-chars=number:选择比较多少个字符。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
如不指定输入文件则以标准输入代替,如不指定输出文件则以标准输出代替。
(3)范例。处理文件sourcefile,输出到标准输出:
lark:->cat sourcefile
abcd
abcd
abcde123
abcd
lark->uniq -c sourcefile
2 abcd
1 abcde123
1 abcd
lark:->
91.uudecode,uuencode
(1)简介
uuencode:将一个二进制文件编码为一个文本文件。
uudecode:将uuencode产生的文件复原。
在Internet尚未十分发达的时候,很多用户只能使用E-mail,要交换软件的话是一件十分麻烦的事情,因为不能用E-Mail直接传送二进制文件,于是uuencode和uudecode就成为十分有用的两个工具。uuencode产生的文本文件以begin644为开始标志,以end为结束标志,在这中间的就是编码过的文件。编码后的文件将比源文件大35%左右。uuencode产生的文件将输出到标准输出,如要存成文件,请使用管道功能将其重定向到一个磁盘文件中。
(2)部分参数说明
uuencode源文件名 编码时使用的文件名
uudecode 要解码的文件名
(3)范例。对文件sourcefile进行编码:
lark:->uuencode sourcefile sf
begin 664sf
886)C9'IA8F-D"F%B8V1E,3(S"F%B8V0*'
end
lark:->
将目录temp打包、压缩、编码后mail给用户fangh:
lark:->tar cvf -./tepm |gzip |uuencode temp.tar.gz |mail fangh
./temp/
./temp/sourcefil
lark:->
92.vi
(1)简介
vi:功能强大的UNIX编辑器。
vi是UNIX世界里最通用的全屏编辑器,所有UNIX机器都提供本编辑器。Linux里提供的是vi的加强板-vim,但是是同vi完全兼容的。vi的原意是“visual”即可视编辑器,用户键入的会立即被显示出来。其强大的编辑功能可能同任何一个最新的编辑器相媲美,学会vi可以让用户在任何一台UNIX机器无论是SUN,HP,AIX,SGI,还是Linux或FreeBSD上都可以得心应手地编辑文件。
(2)部分参数说明
只要在命令上键入vi就可以进入vi的编辑环境。
vi有两种状态,输入状态以及指令状态。用户在输入状态下可以输入文字资料指令状态是用来执行打开文件、存档、离开vi等操作命令,执行vi后首先进入指令状态,此时输入的任何字符都作为指令来处理。输入“vi文件名”则vi自动装入文件或开始一个新文件,vi屏幕的左方会出现波浪号 “-”,代表本行为空行。
如果进入输入状态呢?以下为相应的指令:
追加(append):
a从光标所在位置后面开始追加文字,光标后的文字随追加的文字向后移动。
A从光标所在列最后面的地方开始追加文字。
插入(insert):
i 从光标所在位置前面开始插入文字,光标后的文字随追加的文字向后移动。
I从光标所在列的第一个非空白字符前面开始插入文字。
开始(open):
o在光标所在列下新增一列并进入输入状态。
O在光标所在列上方新增一列并进入输入状态。
x删除光标所在字符。
dd删除光标所在的列。
r 修改光标所在字符接下来要修正的字符。
R 进入改写状态,新增文字会覆盖原先文字。
s删除光标所在字符,并进入输入状态。
S 删除光标所在的列,并进入输入状态。
在vi下如何移动光标
指令
说明
功能键
0
移动到光标所在列的最前面
[Home]
$
移动到光标所在列的最后面
[End]
[Ctrl] [d]
向下半页
(1)简介
sync:清空LINUX文件系统的缓冲区。
在系统的CPU停止工作以前必须调用该命令来将系统的缓冲区写入硬盘。REBOOT和HALT指令都将调用该命令来清空缓冲区。LINUX的优点之一就是磁盘存取速度快,这是因为它将不用的内存都拿来作缓冲区了,这带来的问题就是在系统前必须将缓冲清空,否则就会丢失信息和数据。请看Linus本人是如何说的:“sync这个命令只保证在一定时间内将数据写入硬盘,这需要一定的时间写完所有的数据,如果用户在执行这条命令后马上关机的话,请稍等片刻。”(但是REBOOT和HALT命令会代替用户作这些工作。)
update -周期性地清空LINUX文件系统的缓冲区。
它有两种工作模式,一种是缺省地每5秒钟写一些块(不调用sync),一种是每30秒调用一次sync。在系统启动时update作业应该越早运行越好,在SLACKWARE版本中在/etc/rc.d/rc.S中的第二条命令就是运行update。它的进程号一般是13。
(2)部分参数说明
update[选项]
-S:只使用sync工作。
-a秒:设定调用sync的时间间隔,缺省是30秒。
-f秒:设定缺省工作方式的时间间隔,缺省是5秒。
75.su
(1)简介
su:改变用户的ID或成为超级用户。
作者为Julianne Frances Hargh(jfh@tab.com)。
su可一让用户在一个登录的shell中不用退出就可以变成另外一个用户,如果后面不跟参数,则su缺省地变成超级用户。执行su命令时,程序会让用户输入密码,如果密码不正确,则程序将给出出错信息后退出,所有su的动作都会被系统记录在一个log文件中,以便探测谁在恶意攻击系统。su之后,当前的所有环境变量都会被传递过去,但是路径值$PATH将被重置为/bin:/usr/bin(对一般用户)或/sbin:/bin:/usr/sbin:/usr/bin(对超级用户)这两个缺省值可以通过改变文件/etc/login.defs中的ENV_PATH值和ENY_SUPATH的值来改变。
(2)部分参数说明
su [-][用户名[参数]]
su后面可以跟参数,例如su用户名-c命令,就会在改变用户ID后执行相应的命令并退出。
(3)范例。变更为用户fangh:
lark:->su fangh
Password:
>whoani
fangh
>
76.sudo
(1)简介
sudu:以超级用户的身份执行某些命令。
visudo:编辑可以使用sudo命令的用户列表。
在系统管理中,有时需要给予某些用户的部分系统特权以便执行某些系统命令。例如shutdown,halt,lpc等命令,但是系统管理员又不愿意给予他们全部的系统特权,这时sudo命令就非常有用了。Sudo允许经过同意的用户以超级用户的身份执行指令。Sudo一/etc/sudoers这个文件来判定谁是授权的用户。Sudo将会提示用户输入密码开始一段N分钟的可以使用的时间(其中N是在安装的进修定义的且缺省值为5分钟结束后自动退出)。
Sudoers这个文件是由一个选择性的主机别名(host alias)域,一个选择性的指令别名(command alias)域以及用户说明(user specification)域所组成的。所有的指令别名或主机别名必须需以他们自己的关键字作为开始(Host_Alias/Cmnd_Alias)。注意,只有第一次使用的用户(在用户说明域里有记录的用户)使用时会有说明。
用户说明域格式:
用户 有权限[:有权组]. . .
有权组::=主机类别=[op]指令类别[,[op]指令类别]. . .
主机类别::=小写的主机名或主机别名。
指令类别::=指令或指令别名。
op::=‘!’否定符。
主机别名域格式:
Host_Alias主机别名=主机列表
Host_Alias::=一个关键字。
主机别名::=一个大写的别名。
主机列表::=以逗号间隔的一些主机名
指令别名域格式:
Cmnd_Alias指令别名=指令列表
Cmnd_Alias::=一个关键字。
指令别名::=一个大写的别名。
指令列表::=以逗号间隔的一些指令。
在“#”符号后面是注解。太长的行可以使用“\”来分成新的行。保留的别名“ALL”在{Host,Cmnd}_Alias里都可以使用。不要使用关键字“ALL”来定义一个别名,这个别名无效。
注意,“ALL”代表全部的主机跟指令。
用户可以使用这个语法从所有定义中掉一些项目:
user host =ALL,!ALIASI,!/etc/halt. . .
sudoers文件的范例文件:
# Host alias specification
Host_Alias HUB=houdini.rootgroup.com:\
REMOTE=merlin,kodiakthorn,spirit
Host_Alias MACHINES=kalkan,alpo,milkbones
Host_Alias SERVERS=houdini,merlin,kodiakthorn,spirit
#Command alias specification
Cmnd_Alias LPCS=/usr/etc/lpc,/usr/ucb/lprm
Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh
Cmnd_Alias MISC=/bin/rm,/bin/cat:\
SHUTDOWN=/etc/halt,/etc/shutdown
# User specification
britt REMOTE=SHUTDOWN:ALL=LPCS
robh ALL=ALL,!SHELLS
nieusma SERVERS=SHUTDOWN,/etc/reboot:\
HUB=ALL,!SHELLS
jill houdini.rootgroup.com=/etc/shutdown,MISC
markm HUB=ALL,!MISC,!/etc/shutdown,!/etc/halt
billp ALL=/usr/local/bin/top:MACHINES=SHELLS
davechieb merlin=ALL:SERVES=/etc/halt:\
kodiakthorn=ALL
上面的sudoers说明文件是由4个主机别名说明,4个指令别名说明以及7个用户说明所组成的。Britt被允许在远端机器(merlin,kodiakthorn,还有sprirt)上执行/etc/halt,/etc/shutdown,/usr/etc/lpq以及/usr/ucb/lprm。Rohn被允许在任何机器上执行除了SHELL指令以外的任何指令。Jill被允许在机器houdini上执行/etc/shotdown,/bin/rm,以及/bin/cat。Davehieb可以在机器merlin以及kodiakthor上执行任何指令并且可以halt服务器。
Sudoers文件应该用visudo编辑,它会锁住该文件并且检查语法,以避免产生错误的文件。Sudo被设计成用4.3BSD的syslogging来记录,但是也可以使用用户自己的log进程来记录如果一个没有被授权的用户执行了sudo的话,将会有一封mail从该用户处寄送到当地的管理员处(Linux缺省是root)。所有的设定都是在安装时定义的由sudo.h及Makefile定义,但是Linux缺省的是安装好的执行文件,用户如果要更改的话,需要重新编译与安装。
允许巢状的主机以及指令别名。
允许在sudoers文件中使用host specifie,以便使全局符号(user ALL,!SERVERS,. . .=commands)。
允许在sudores文件里的用户别名(就如同主机/指令别名一样)。
(2)部分参数说明
sudo命令
(3)范例。用sudo来halt机器:
lark:->sudo halt
77.tail
(1)简介
tail:显示文件的最后一部分
(2)部分参数说明
tail [-c[+]N[bkm]][-n[+]N][-fqv][--bytes=[+]N[bkm]]
[--lines=[+]N][--follow][--quiet][--silent][--verbose]
[--help][--version][文件名列表]
tail缺省显示文件名列表中的每个文件的最后十行,如果没有文件名或文件名为“-”则其从标准输入中读取文件,如果有多个文件则其会在文件前面加上“= =>文件名<==”以便区分。
-c N, --bytes N:显示文件后部的N比特大小的部分,N后面可以跟bkm参数。
b:512比特的块。
k:1k的块。
m:1M的块。
-f:--follow:如果文件大小在增长的话,tail将跟随文件增长而显示。
-l, -n N, --lines N:显示文件末尾的N行。
-v,--verbose:一直输出“= =>文件名<= =”形式的文件名。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。显示文件/etc/DIR_COLORS的最后三行:
lark:->tail -v -n 3/etc/DIR_COLORS
= => /etc/DIR_COLORS<= =
.xbm 01:35
.xpm 01:35
.tif 01:35
lark:->
78.tar
(1)简介
tar:GNU版的文件打包备份的工具。
(2)部分参数说明
tar [-] A --catenate --concatenate | c --create |d --diff --compare |r --append | t --list | u-update |x
-extract --get [--atime -preserve][-b, --block-size N][-B, --read--full-blocks][-C, --directory DIR][
--checkpoint][-f, --file[HOSTNAME:]F][--force-local][-F,--info--script F--neo--volume-script F][
-G, --incrementat][-g, --listed-incremental F][-h, --dereference][-i, --ignore-zeros][--ignore-failed-
read][-k, --keep-old-fils][-k, --starting-file F][-l,--one-file-system][-L, --tape-lengthN][-m,
--modification-time][-M,--multi-volume] [-N, --after-date DATE, --newer DATE][-o, --old-
archive, --portability][-O, --to-stdout][-p, --same-permissions, --preserve-permissions][-P, --absolute-paths] [--preserve][-R, --record-number][--remove-files]
[-s,--same-order, --preserve-order][--same-owner]
[-s,--sparse][-T,--files-from F][--null][--totals][-v,--verbose][-v, --label NAME]
[-version] [-w, --inteactive, --confirmation][-W,--verify][--exclude FILE][-X,--exclude-from FILE]
[-Z, --compress,--uncompress][-z, --gzip, --ungzip],[-use-compress-progran PROG][--block-compress][-[0-7][lmh]]
[文件名列表]
[目录名列表]
tar是对一般用户最易用和最可靠的实用程序,从归档介质(可以是一个磁带机,也可以是普通文件)上保留和恢复文件,也能从之个文件归档中抽取单个文件。
-A, --catenate, --concatenate:向归档文件中追加另一个tar文件。
-c, --create:建立新的归档文件。
-d, --diff, -compare:将归档文件和文件系统上的文件作比较。
--delete:从归档文件中删除文件(不能够用在磁带机上)。
-r, --append:向归档文件末尾追加文件。
-t, --list:对归档文件列目录。
-u, --update:只追加比归档文件中的文件新的文件。
-x, -extract, --get:从归档文件中解出文件。
--atime-preserve:不改变文件的访问次数。
-b, --block-size N:块大小为N乘以512比特(N缺省为20)。
-B, --read-full-bolcks:为兼容4.2BSD而设。
-C,--directory DIR:将目录名改为DIR。
--checkpoint:在读归档文件时输出文件名。
-f, --file[HOSTNAME:]F:使用设备F来储存归档文件。
-force-local:强制设定归档文件为本地文件。
-F, --info-script F --new-volume-script F为在每盘磁的结尾执行设定的脚本文件。
-G, --incremental:用老的GNU格式来打包/列出/解开归档文件。
-g, --listed-incremental F:用新的GNU格式打包/列出/解开归档文件。
-h, --dereference:不保存符号连接而保存其指向的文件。
-i, --ignore-zores:忽略零block的文件。
--ignore-failed-read:在文件不可读时不退出。
-k, --keep-old-files:在从归档文件中释放文件时不改写现有文件。
-K,--starting-file F:从归档文件的第F个文件开始。
-l, --one-file-system:只在本地文件系统产生归档文件。
-L, --tape-length N:在写完N*1024byte后换磁带。
-m, --modification-time:归档时不改变文件的修改时间。
-M, --multi-volume:存放/列出/解开多卷的归档文件。
-N, --after-date DATE, --newer DATE:只存放比日期DATE新的文件。
-o, --old-archive,--portability:和旧的V7格式存放(缺省为ANSI格式)。
-O, --to-stdout:将文件解开到标准输出。
-p, --same-permissions, --preserve-permissions:解开文件时恢复所有访问限制。
-P, --absolute-paths:解开文件时使用绝对路径。
--preserve:同-p -s。
-R, --record-number:显示归档文件内部的所有记录数。
--remover-files:将文件归档后删除源文件。
-s, --same-order, --preserve-order:显示同归档文件中顺序一样的文件名。
--same-owner:解开文件时恢复原所有者。
-S, --sparse:有效存放稀疏文件。
-T, --files-from F:从文件F中读取要释放或解开的文件名。
--null:使能-T参数可以读取有空格的文件名,屏蔽参数-C。
--totals:在创建文件时显示总字节数。
-v, --verbose:处理过程中输出相关信息。
-V, --label NAME:用卷标名NAME来命名归档文件。
--version:输出版本号。
--w, --interactive, --confirmation:进行每一步操作前要确认。
-W, --verify:在打包文件后进行校验。
--exclude FILE:不将文件FILE归档。
-X, --exclude-from FILE:不将文件FILE中列出的文件归档。
-Z, --compress, --uncompress:用compress来压缩归档文件。
-z, --gzip, --ungzip:用gzip来压缩归档文件。
-use-compress-program PROG:用自定义的压缩程序PROG来压缩归档文件。
-block-compress:将压缩的归档文件做成块,以便磁带机使用。
-[0-7][1mh]:设定磁带驱动器和密度。
(3)范例。将当前目录下所有.txt文件打包并压缩到归档文件bak.tar.gz:
lark:>tar czvf bak.tar.gz ./* .txt
./tcsh.txt
将目录./sec打包到归档文件sec.tar.gz:
lark:->tar czvf sec.tar.gz ./sec
./sec/
./sec/advance_edu.tgz
./sec/email
./sec/doc.tar
lark:->
79.tcsh
(1)简介
tcsh:一个带有文件名自动补充和行编辑功能的C shell。
tcsh是著名的伯克利UNIX的C SHELL的增强版本,它既可以作为一个交互式的登录SHELL又可以作为脚本文件的处理器。
(2)部分参数说明
-b:强迫tcsh中止对参数的处理,在此选项之后的参数都作为传递给tcsh的命令来处理。
-c:若用-c参数,则tcsh执行完后面所跟的命令后退出。
-d:从文件-/.cshdirs中读入目录堆栈。
-Dname[=value]:设置环境变量name的值为value。
-e:tcsh执行命令后返回值为非零值时则退出tcsh。
-f:tcsh忽略配置文件-/.tcshrc,这样启动tcsh的过程会加快。
-F:tcsh使用fork来代替cfork以产生新进程。
-i:即使标准输入不为终端,也成为交互式的shell。
-l:表明此shell为登录shell。
-m:tcsh从当前目录下读取-/.tcshrc即使此目录不为当前用户的根目录。
-n:读入命令但是并不执行。
-q:tcsh接受SIGQUIT信号。
-s:从标准输入到接受命令。
-t:使tcsh只处理单行命令,当一行写不下的时候,用“/”可以在下一行接着输入。
tcsh在作为登录shell启动时,首先读取系统配置文件/etc/csh.cshrc和/etc/csh.login.接着到用户的根目录下去读取-/.tcshrc,如果没有-/.tcshrc则去读取-/.cshrc,接着读取-/.history,-/.login最后是-/.cshdirs。非登录shell启动时只读取/etc/csh.cshrc和-/.tcshrc。
·命令行编辑器:使用方向键来编辑,上下键在历史记录中选择命令,左右键在命令行上前后移动进行编辑。
·命令补充和列表:在用户键入命令时,经常不能记住命令或目录的全名,这时候tcsh可以帮助用户将剩余部分补全,例如用户键入“/usr/lost”但是忘记后面的部分,这时候用户只需要键入TAB键,tcsh就会自动将剩余的部分补全--“/usr/lost+found./”,当用户给出的部分有多个匹配的情况下例如“/usr/l”则TAB将无法补全,这时候用户只须键入“Ctrl+D”则tcsh将替用户列出所有匹配的情况:“lib/local@lost+found/”,用户就可以自己选择了。
·拼写检查:在设置变量correct的值为cmd后,则tcsh会对用户输入错误的命令给出提示:
>set correct=cmd
>ls/usr/bin
CORRECT>ls/usr/bin(y|n|e|a)?
如果回答yes就会将lz更正为ls。此外,tcsh所占内存比ash要大400k,为1.2M左右,如果用户内存不足的话可以换用其他shell。
以上的介绍只是一些粗略的介绍,TCSH的强大功能有待于用户在实践中去发掘。或使用man tcsh去查看tcsh的用户手册。
80.tee
(1)简介
tee:从标准输入中读取,向标准输出和其他文件中写入。
(2)部分参数说明
tee [-ai] [--append] [--ignore-interrupts] [--help]
[--version] [文件名列表]
-a, --append:将标准输入追加到输出文件的后面而不是缺省的覆盖它。
-i, --ignore-interrupt:忽略中断信号。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。将输入重定向到标准输出和文件out中:
lark:->tee out
this is a test
this is a test
lark:->cat out
this is a test
fish:->
81.test
(1)简介
test:比较文件类型并返回相应的值。
(2)部分参数说明
test[表达式]
test[--help, --version]
test在表达式为真的时候返回0,在表达式为假的时候返回1,可行的表达式如下:
-b文件名:如果文件存在且为块文件则为真。
-c文件名:如果文件存在且为字符文件则为真。
-d文件名:如果文件存在且为目录则为真。
-e文件名:如果文件存在则为真。
-f文件名:如果文件存在且为普通文件则为真。
-g文件名:如果文件存在且为设置组则为真。
-k文件名:如果文件是真实文件则为真。
-L文件名:如果文件存在且为符号连接文件则为真。
-p文件名:如果文件存在且为管道文件则为真。
-r文件名:如果文件存在且可读则为真。
-s文件名:如果文件存在且比上一个文件大则为真。
-S文件名:如果文件存在且为socket文件则为真。
-t[fd]:如果fd在一个终端上打开则为真。
-u文件名:如果文件存在且其设置用户ID的位为1则为真。
-w文件名:如果文件存在且可写则为真。
-x文件名:如果文件存在且可执行则为真。
-O文件名:如果文件存在且其属主为有效用户则为真。
-G文件名:如果文件存在且其属组为有效组则为真。
文件1 -nt文件2:如果文件1比文件2新则为真。
文件1 -ot 文件2:如果文件1比文件2旧则为真。
-z字符串:如果字符长度为0则为真。
-n字符串:如果字符串长度不为0则为真。
字符串1=字符串2:如果两字符串相等则为真。
字符串1!=字符串2:如果两字符串不相等则为真。
!表达式:如果表达式为假则为真。
表达式1-a表达式2:表达式1和表达式2都为真则返回真。
表达式1-o表达式2:表达式1或表达式2只要有一个为真就返回真。
参数1 OP参数2:OP为-eq, -ne, -lt, -gt, 或-ge。
此命令一般是为shell编程使用。
82.time
time:取得以秒为单位的当前时间。
此条命令取得从00:00:00 GMT,January 1,1970开始的总时间。
(2)范例
lark:->time
0.170u 0.400s 12:48.52 0.0% 0+0k 0+0io 2229pf+0w
lark:->
83.top
(1)简介
top:显示系统的最高进程。
top这个命令可以即时显示当前系统最占CPU时间的进程,它同时提供一个交互的界面让用户可以观察系统进程情况,它可以按照CPU使用情况,占内存大小,运行的时间来对进程排序,这是系统管理的一项必不可少的工具。
(2)部分参数说明
top[-][d delay][q][c][S][s][i]
d:设定刷新屏幕的时间间隔。
q:此选项使得top刷新时间为零,如果是超级用户使用这个选项的话,则top将以最高优先级运行。
S:设定累积模式,即一个进程的CPU时间包括它的所有死子进程消耗的时间。
s:使top以安全方式运行,即对外界输入不作反应。
I:忽略死进程和僵尸进程。
c:显示命令行。
在运行top时按h键就可以观看top交互命令的帮助。
(3)范例
lark:->top
10:16pm up2 days, 7:53, 2users, load average;0.14, 0.08,0.06
66 processes:5sleeping, 1 running, 0 zombie, 0stopped
CPUstates:4.7%user, 1.3%system, 5.6%nice,94.4%idle
Mem:63104Kav, 60608K used, 2496K free, 35332Kshrd, 9836Kbuff
Swap:128516K av, 292used, 128224K free
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
5968 root 15 0 11672 11672 1520 S 0 4.1 18.4 3:41X
10944 fangh 17 0 460 460 344 R 0 1.1 0.7 0:00top
10356 bbs 1 0 384 384 292 S 0 0.1 0.6 0:00 bbsnnrp
10359 bbs 1 0 396 396 282 S 0 0.1 0.6 0:00 bbsnnrp
9526 root 1 0 500 500 388S 0 0.1 0.7 0:00 in.telnetd
7823 chenxy 1 0 2144 2144 1232S 0 0.1 3.3 0:00 cxterm
1 root 0 0 320 320 252 S 0 0.0 0.5 0:05 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
3 root -12-12 0 0 0 SW 0 0.0 0.0 0:00 kswapd
4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 nfsion
5 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 nfsiod
6 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 nfsiod
7 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 nfsiod
9502 root 0 0 292 292 236 S 0 0.0 0.4 0:00 agetty
120 root 0 0 544 544 400 S 0 0.0 0.8 0:12 nmbd
14 root 0 0 284 284 228 S 0 0.0 0.4 0:00 kerneld
84.touch
(1)简介
touch:改变文件的时间参数。
touch将文件的访问时间,修改时间设置为系统的当前时间,如果该文件不存在则建立一个空的新文件。
(2)部分参数说明
touch [-acfm] [-r reference-file] [-t MMDDhhmm[[CC]YY][.SS]] [-dtime]
[--time={atime, access,use,mtime,modify}] [--date=time]
[--file=reference-file] [--no-create][--help] [--version]
-a, --time=atime, --time=access, --time=use:只改变访问时间。
-c, --no-create:如果目标文件不存在,也不建立空文件。
-d, --date time是:使用time来代替目前时间。
-f:为了同BSD版本的touch兼容。
-m, --time=mtime, --time=modify:只改变修改时间。
-r, --file reference-file:用文件reference-file的时间来代替当前时间。
-t MMDDhhmm[[CC]YY][.ss]:使用此种格式的时间来代替当前时间。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。将当前目录下的文件的时间参数修改为当前时间:
lark:->touch *
lark:-> ls -l
total 1883
drwx------ 2 fangh users 1024 Sep 21:07 Mail/
-rw-r--r-- 1 fangh users 71209 Sep 21:07 bak.tar.gz
drwx------ 7 fangh users 1024 Sep 21:07 circle/
-rw-rw-r-- 1 fangh users 1208006 Sep 21:07 circle.tgz
-rw-r--r-- 1 fangh users 378880 Sep 21:07 sec.tar.gz
-rw-r--r-- 1 fangh userw 252409 Sep 21:07 tcsh.txt
lark:->
85.tr
(1)简介
tr:替换或删除字符。
从标准输入中读取输入,经处理后输出到标准输出。
(2)部分参数说明
tr [-cat] [--complement] [--squeeze-repeats] [--truncate-set] [--truncate-set 1] 字符串1字符串2
tr {-s, --squeeze-repeats} [-c][--complement]字符串
tr{-d, --delete} [-c] 字符串1
tr{-d, --delete} {-s, --squeeze-repeats} [-c] [--complement]字符串1字符串2
-c, --complemen:补足字符串1。
-d, --delete:删除字符串1而不是替换。
-s, --squeeze-repeats:将字符串的顺序替换为一个顺序。
-t, --truncate-set1:将字符串1比字符串二长的地方截断。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。将输入中的abc替换为ddd:
lark:->tr abc ddd
I love abc
I love ddd
86.tty
(1)简介
tty:显示目前终端所用的tty。
tty的返回值:
0:标准输入是一个tty。
1:标准输入是一个tty。
2:给出错误参数。
3:发生写错误
(2)部分参数说明
tty [-a] [--silent] [--quiet] [-help] [--version] -s, --silent, --quiet:不输出任何信息,只给出返回值。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。显示目前终端所用的tty:
lark:->tty
/dev/ttypl
lark:->
87.umout,mount
(1)简介
mount:装载一个文件系统。
umount:卸下一个文件系统。
(2)部分参数说明
mount [-hV]
mount -a [-fFnrvw] [-t vfstype]
mount [-fnrvw] [-o options [, . . .]] device | dir
mount [-fnrvw] [-t vfstype] [-o options] device dir
umount [-h V]
umount -a [-n] [-v] [-t vfstypes]
umount [-n] [-v] special | node. . .
-V:输出版权信息。
-h:输出帮助信息。
-v:校验模式。
-a:mount在文件/etc/fstab中的所有文件系统。
-F:同-a联用,并行mount所有文件系统。
-f:同-v联用,不作真实mount过程只是检查输出。
-n:mount文件系统后不久写入文件/etc/mtab。
-r:将文件系统mount为只读模式。
-w:将文件系统mount为读写模式。
-t vfstype:指定文件系统类型。
现有可mount的系统类型在/usr/scr/linux/fs/filesystems.c中定义:
minix, ext, ext2, xiafs, hpfs, msdos, umdos, vfat, proc,
nfs, iso9660, smbfs, ncpfs, affs, ufs, romfs, sysv, xenix
-o选项:设定mount的一些参数:
async:文件系统必须被异步写入。
atime:每次访问时将i节点的访问时间更新。
auto:自动选择文件系统类型。
defaults:使用缺省选项suid, dev, exec, auto, nouser, async。
dev:解释文件系统上的特殊设备文件。
exec:允许运行文件系统上的可执行文件。
noatime:每次访问时不将i节点的访问时间更新。
noauto:禁止自动选择文件系统类型。
nodev:禁止解释文件系统上的特殊设备文件。
noexec:禁止运行文件文件系统上的可执行文件。
nosuid:根本上设定用户ID位和设定组位起作用。
nouser:禁止非超级用户使用。
remount:重新mount一个已经mount的文件系统。
ro:将文件系统mount为只读模式。
rw:将文件系统mount为读写模式。
suid:允许设定用户ID位和设定组位起作用。
sync:文件系统必须被同步写入。
user:允许非超级用户使用。
不加参数则列出系统目前mount的文件系统。
(3)范例。列出系统目前mount的文件系统。
lark:->mount
/dev/hdal on / type ext2_(rw)
none on/ proc type proc(rw)
/dev/hda3 on/home type ext2(rw)
/dev/hda2on/usr/local type ext2(rw)
lark:->
加载光驱:
lark:->mount/dev/hdb/mnt
88.uname
(1)简介
uname:显示系统信息。
(2)部分参数说明
uname [-snrvma][--sysname][--nodename][--release]
[--machine][--all][--help][--version]
-m, --machine:显示机器硬件种类。
-n, --nodename:显示机器网络节点名。
-r, --release:显示操作系统发布版本。
-s, --sysname:显示操作系统名称。
-v:显示操作系统版本。
-a, -all:显示上面的所有信息。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。显示机器lark的全部信息:
lark:->uname -a
Linux lark 2.0.30 #3 Tue Jun 24 03:49:52 CDT 1997 I586 unkown
lark:->
89.unarj, unzip, lha
(1)简介
在DOS下最常用的压缩软件有adj, pkzip和早期的lha,他们产生的压缩文件如何在Linux下展开呢?这就要用到unarj, unzip,lha这三个工具软件了,其用法同其在dos下的同类软件用法几乎一样。只是请注意unarj和lha都是版权软件,是没有源码的,不属于GNU。且unarj和unzip只能解压不能压缩。
(2)部分参数说明
unarj 1压缩文件名:查看压缩文件目录。
unarj x压缩文件名:解开压缩文件。
unzip -v压缩文件名:查看压缩文件目录。
unzip -d 压缩文件名:解开压缩文件。
lha l压缩文件名:查看压缩文件目录。
lha x压缩文件名:解开压缩文件。
lha a压缩文件名 源文件名:压缩新文件。
90.uniq
(1)简介
uniq:从一个排好序的文件中删除重复的行。
(2)部分参数说明
uniq [-cdu] [-f skip-fields] [-s skip-chars] [-w check-chars]
[-# skip-fields] [+#skip-chars] [--count]
[--skip-chars=skip-chars] [--check-chars=check-chars]
[--help] [-version][输入文件][输出文件]
-u, --unique:只输出独一无二的行。
-d, --repeated:只输出重复的行。
-c, --count:输出重复行的重复次数。
-number, -f, --skin-fields=number:选择开始比较的域,number为忽略掉的域,各域之间是以TAB或空格键分开的。
+number, -s, --skip-chars=number;选择开始比较的字符,number为忽略掉的字符。
-w, --check-chars=number:选择比较多少个字符。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
如不指定输入文件则以标准输入代替,如不指定输出文件则以标准输出代替。
(3)范例。处理文件sourcefile,输出到标准输出:
lark:->cat sourcefile
abcd
abcd
abcde123
abcd
lark->uniq -c sourcefile
2 abcd
1 abcde123
1 abcd
lark:->
91.uudecode,uuencode
(1)简介
uuencode:将一个二进制文件编码为一个文本文件。
uudecode:将uuencode产生的文件复原。
在Internet尚未十分发达的时候,很多用户只能使用E-mail,要交换软件的话是一件十分麻烦的事情,因为不能用E-Mail直接传送二进制文件,于是uuencode和uudecode就成为十分有用的两个工具。uuencode产生的文本文件以begin644为开始标志,以end为结束标志,在这中间的就是编码过的文件。编码后的文件将比源文件大35%左右。uuencode产生的文件将输出到标准输出,如要存成文件,请使用管道功能将其重定向到一个磁盘文件中。
(2)部分参数说明
uuencode源文件名 编码时使用的文件名
uudecode 要解码的文件名
(3)范例。对文件sourcefile进行编码:
lark:->uuencode sourcefile sf
begin 664sf
886)C9'IA8F-D"F%B8V1E,3(S"F%B8V0*'
end
lark:->
将目录temp打包、压缩、编码后mail给用户fangh:
lark:->tar cvf -./tepm |gzip |uuencode temp.tar.gz |mail fangh
./temp/
./temp/sourcefil
lark:->
92.vi
(1)简介
vi:功能强大的UNIX编辑器。
vi是UNIX世界里最通用的全屏编辑器,所有UNIX机器都提供本编辑器。Linux里提供的是vi的加强板-vim,但是是同vi完全兼容的。vi的原意是“visual”即可视编辑器,用户键入的会立即被显示出来。其强大的编辑功能可能同任何一个最新的编辑器相媲美,学会vi可以让用户在任何一台UNIX机器无论是SUN,HP,AIX,SGI,还是Linux或FreeBSD上都可以得心应手地编辑文件。
(2)部分参数说明
只要在命令上键入vi就可以进入vi的编辑环境。
vi有两种状态,输入状态以及指令状态。用户在输入状态下可以输入文字资料指令状态是用来执行打开文件、存档、离开vi等操作命令,执行vi后首先进入指令状态,此时输入的任何字符都作为指令来处理。输入“vi文件名”则vi自动装入文件或开始一个新文件,vi屏幕的左方会出现波浪号 “-”,代表本行为空行。
如果进入输入状态呢?以下为相应的指令:
追加(append):
a从光标所在位置后面开始追加文字,光标后的文字随追加的文字向后移动。
A从光标所在列最后面的地方开始追加文字。
插入(insert):
i 从光标所在位置前面开始插入文字,光标后的文字随追加的文字向后移动。
I从光标所在列的第一个非空白字符前面开始插入文字。
开始(open):
o在光标所在列下新增一列并进入输入状态。
O在光标所在列上方新增一列并进入输入状态。
x删除光标所在字符。
dd删除光标所在的列。
r 修改光标所在字符接下来要修正的字符。
R 进入改写状态,新增文字会覆盖原先文字。
s删除光标所在字符,并进入输入状态。
S 删除光标所在的列,并进入输入状态。
在vi下如何移动光标
指令
说明
功能键
0
移动到光标所在列的最前面
[Home]
$
移动到光标所在列的最后面
[End]
[Ctrl] [d]
向下半页
[Ctrl] [f]
向下一页
[PageDown]
[Ctrl] [u]
向上半页
向下一页
[PageDown]
[Ctrl] [u]
向上半页
[Ctrl] [b]
向上一页
[PageUp]
H
移动到屏幕的第一列
向上一页
[PageUp]
H
移动到屏幕的第一列
M
移动到屏幕的中间列
移动到屏幕的中间列
L
移动到屏幕的最后列
移动到屏幕的最后列
b
移动到下个字的第一个字母
移动到下个字的第一个字母
w
移动到上个字的第一个字母
移动到上个字的第一个字母
e
移动到下个字的最后一个字母
移动到下个字的最后一个字母
^
移动下游标所在列的第一个非空白字符
移动下游标所在列的第一个非空白字符
n-
减号移动到上一列的第一个非空白字符
前面加上数字可以指定移动到以上n列
减号移动到上一列的第一个非空白字符
前面加上数字可以指定移动到以上n列
n+
nG
加号移动到下一列的第一个非空白字符
前面加上数字可以指定移动到以下n列
直接用数字n加上大写G移动到第n列
加号移动到下一列的第一个非空白字符
前面加上数字可以指定移动到以下n列
直接用数字n加上大写G移动到第n列
fx
Fx
往右移动到第x个字符上
往左移动到第x个字符上
Fx
往右移动到第x个字符上
往左移动到第x个字符上
tx
Tx
往右移动到第x个字符前
往左移动到第x个字符前
Tx
往右移动到第x个字符前
往左移动到第x个字符前
;
.
配合f&t使用,重复一次
配合f&t使用,反方向重复一次
.
配合f&t使用,重复一次
配合f&t使用,反方向重复一次
/string
?string
往右移动到有string的地方
往左移动到有string的地方
?string
往右移动到有string的地方
往左移动到有string的地方
n
N
配合/&?使用,重复一次
配合/&?使用,反方向重复一次
N
配合/&?使用,重复一次
配合/&?使用,反方向重复一次
n(
n)
左括号移动到句子的最前面
前面加上数字可以指定往前移动n个句子
右括号移动到下个句子的最前面
前面加上数字可以指定往后移动n个句子
句子是以
! . ?三种符号来分割
n{
左括号移动到句子的最前面
前面加上数字可以指定往前移动n个句子
右括号移动到下个句子的最前面
前面加上数字可以指定往后移动n个句子
句子是以
! . ?三种符号来分割
n{
n}
右括弧移动到段落的最前面
前面加上数字可以指定往前移动n个段落
右括弧移动到下个段落的最前面
前面加上数字可以指定往后移动n个段落
段落是以
段落间的空白列来分割
指令列表如下:
d 删除(delete)
y 复制(yank)
p 放置(put)
c 修改(change)
范围可以是下列几项:
e 光标所在位置到该字的最后一个字母
w 光标所在位置到下个字的第一个字母
b 光标所在位置到上个字的第一个字母
$ 光标所在位置到该列的最后一个字母
0 光标所在位置到该列的第一个字母
) 光标所在位置到下个句子的第一个字母
( 光标所在位置到该句子的第一个字母
} 光标所在位置到该段落的最后一个字母
{ 光标所在位置到该段落的第一个字母
:q 结束编辑(quit)
如果不想存档而要放弃编辑过的文件则用:q!强制离开
:w 存档(write)
其后可加所要存档的名字。
:wq 即存档后离开。
zz 功能与;wq相同。
93.wall
(1)简介
wall:向所有用户广播信息。
(2)部分参数说明
wall[文件名]
wall将给定为文件名输出到所有登录用户的屏幕上,如果不给出文件名则以标准输入作为输入,以Ctrl+D作为文件结束符。只有超级用户才能向那些设为屏蔽信息状态的用户的屏幕上输出信息。
(3)范例。向所有用户广播信息:
bash # wall
system will be shutdown in 5 min !!!
Broadcast Message from root @ lark
(/dev/ttyp5) at 20:08. . .
system will be shutdown in min ! ! !
bash #
94.wc
(1)简介
wc:统计一个文件中的字节数,单词数,行数。
(2)部分参数说明
wc [-clw] [--bytes] [--chars] [--lines] [--words] [--help]
[--version] [文件名列表]
-c, --bytes, --chars:只输出字节数。
-w, -words:只输出单词数。
-l, --lines:只输出行数。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例
lark:->wc -c tcsh.txt
252409 tcsh.txt
lark:-> wc -w tcsh.txt
27584 tcsh.txt
lark;->wc -l tcsh.txt
5478 tcsh.txt
lark:->
95.whereis
(1)简介
whereis:定位可执行,帮助文件,源代码文件。
缺省地whereis在下列目录搜寻文件
/bin /usr/iterviewa/bin/LINUX
/usr/bin /usr/bin/X11
/etc /usr/X11/bin
/usr/etc /usr/X11R5/bin
/sbin /usr/X11R6/bin
/usr/sbin /usr/X386/bin
/usr/games /usr/local/bin
/usr/games/bin /usr/local/etc
/usr/emacs/etc /usr/local/sbin
/usr/lib/emacs/19.22/etc /usr/local/games
/usr/lib/emacs/19.23/etc /usr/local/games/bin
/usr/lib/emacs/19.24/etc /usr/local/emacs/etc
/usr/lib/emacs/19.25/etc /usr/loacal/Tex/bin
/usr/lib/emacs/19.26/etc /usr/loacl/tex/bin
/usr/lib/emacs/19.27/etc /usr/local/bin/X11
/usr/lib/emacs/19.28/etc /usr/contrib
/usr/lib/emacs/19.29/etc /usr/hosts
/usr/lib/emacs/19.30/etc /usr/include
/usr/TeX/bin /usr/g+ + -include
/usr/tex/bin
(2)部分参数说明
whereis [-bmsu] [-BMS目录名列表 -f] 文件名列表
-b:只搜寻可执行文件。
-m:只搜寻man帮助文件。
-s:只搜寻源代码文件。
-u:搜寻上述路径中不属于三种文件中任何一种的文件。
-B:改变搜寻可执行文件的路径。
-M:改变搜寻man帮助文件的路径。
-S:改变搜寻源代码文件的路径。
(3)范例。查询whereis所在路径:
lark:->whereis whereis
whereis;/usr/bin/whereis
lark:->
96.who
(1)简介
who:查看其他登录的用户。
(2)部分参数说明
who [-imqsuwHT][--count][--idle][--heading][-help]
[--message] [--mesg] [--version][--writable] [file] [ami]
-m:同whoami和“who am i”。
-q, --count;只输出用户的登录名和正在使用的用户数目。
-i, -u, --idle:输出用户发呆的时间,“.”表明用户没有发呆,“old”表明用户发呆超过24小时。
-H, --heading:输出表头。
-w, -T, --mesg, --message, --writable:输出用户的信息屏蔽状态。
+:可写。
-:不可写。
?:不能发现终端设备。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。列出系统当前用户:
lark:->who -H
USER LINE LOGIN-TIME FROM
chenxy ttyp2 Sep 29 20:37(hpte2.ihep.ac.cn)
liubx ttyp3 Sep 29 15:59(:0.0)
fangh ttyp4 Sep 29 19:19 (csun01.ihep.ac.c)
lark:->
98.write
(1)简介
write:向另外一个用户发信息。
如果用户不是超级用户,则不能对设定message n的用户发信息,输入完成后,使用Ctrl-D结束。
(2)部分参数说明
write user [@host] [ttyname]
99.zoo
(1)简介
zoo:使用Lz方式压缩文件并打包。
(2)部分参数说明
zoo {acfDeghHILPTuUvVx}[aAcCdEfghImMnNoOpPqSul:/.@n+ - =]
打包文件名 文件名列表
zoo -command 打包文件名 文件名列表
zoo h
选项
描述
专家选项
-add
-extract
-move
-test
-print
-delete
-list
-update
-freshen
-comment
向打包文件中增加文件
从打包文件中解开文件
移动以打包文件中
测试打包文件
从打包文件中解开文件输出到标准输出
从打包文件中删除文件
列出打包文件的目录
更新打包文件中的文件
增加打包文件中的文件
给文件加注解
aP:
x
aMP
xNd
xp
DP
VC
aunP:
aunp:
c
(3)范例。将目前目录下所有文件打包到文件bak.zoo中:
lark:->zoo a ban./*
Zoo: ./bak.tar --(24%)added
Zoo: ./circle --(31%)added
Zoo: ./sec.tar --(20%)added
Zoo:./sourcefile --(13%)added
lark:->
右括弧移动到段落的最前面
前面加上数字可以指定往前移动n个段落
右括弧移动到下个段落的最前面
前面加上数字可以指定往后移动n个段落
段落是以
段落间的空白列来分割
指令列表如下:
d 删除(delete)
y 复制(yank)
p 放置(put)
c 修改(change)
范围可以是下列几项:
e 光标所在位置到该字的最后一个字母
w 光标所在位置到下个字的第一个字母
b 光标所在位置到上个字的第一个字母
$ 光标所在位置到该列的最后一个字母
0 光标所在位置到该列的第一个字母
) 光标所在位置到下个句子的第一个字母
( 光标所在位置到该句子的第一个字母
} 光标所在位置到该段落的最后一个字母
{ 光标所在位置到该段落的第一个字母
:q 结束编辑(quit)
如果不想存档而要放弃编辑过的文件则用:q!强制离开
:w 存档(write)
其后可加所要存档的名字。
:wq 即存档后离开。
zz 功能与;wq相同。
93.wall
(1)简介
wall:向所有用户广播信息。
(2)部分参数说明
wall[文件名]
wall将给定为文件名输出到所有登录用户的屏幕上,如果不给出文件名则以标准输入作为输入,以Ctrl+D作为文件结束符。只有超级用户才能向那些设为屏蔽信息状态的用户的屏幕上输出信息。
(3)范例。向所有用户广播信息:
bash # wall
system will be shutdown in 5 min !!!
Broadcast Message from root @ lark
(/dev/ttyp5) at 20:08. . .
system will be shutdown in min ! ! !
bash #
94.wc
(1)简介
wc:统计一个文件中的字节数,单词数,行数。
(2)部分参数说明
wc [-clw] [--bytes] [--chars] [--lines] [--words] [--help]
[--version] [文件名列表]
-c, --bytes, --chars:只输出字节数。
-w, -words:只输出单词数。
-l, --lines:只输出行数。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例
lark:->wc -c tcsh.txt
252409 tcsh.txt
lark:-> wc -w tcsh.txt
27584 tcsh.txt
lark;->wc -l tcsh.txt
5478 tcsh.txt
lark:->
95.whereis
(1)简介
whereis:定位可执行,帮助文件,源代码文件。
缺省地whereis在下列目录搜寻文件
/bin /usr/iterviewa/bin/LINUX
/usr/bin /usr/bin/X11
/etc /usr/X11/bin
/usr/etc /usr/X11R5/bin
/sbin /usr/X11R6/bin
/usr/sbin /usr/X386/bin
/usr/games /usr/local/bin
/usr/games/bin /usr/local/etc
/usr/emacs/etc /usr/local/sbin
/usr/lib/emacs/19.22/etc /usr/local/games
/usr/lib/emacs/19.23/etc /usr/local/games/bin
/usr/lib/emacs/19.24/etc /usr/local/emacs/etc
/usr/lib/emacs/19.25/etc /usr/loacal/Tex/bin
/usr/lib/emacs/19.26/etc /usr/loacl/tex/bin
/usr/lib/emacs/19.27/etc /usr/local/bin/X11
/usr/lib/emacs/19.28/etc /usr/contrib
/usr/lib/emacs/19.29/etc /usr/hosts
/usr/lib/emacs/19.30/etc /usr/include
/usr/TeX/bin /usr/g+ + -include
/usr/tex/bin
(2)部分参数说明
whereis [-bmsu] [-BMS目录名列表 -f] 文件名列表
-b:只搜寻可执行文件。
-m:只搜寻man帮助文件。
-s:只搜寻源代码文件。
-u:搜寻上述路径中不属于三种文件中任何一种的文件。
-B:改变搜寻可执行文件的路径。
-M:改变搜寻man帮助文件的路径。
-S:改变搜寻源代码文件的路径。
(3)范例。查询whereis所在路径:
lark:->whereis whereis
whereis;/usr/bin/whereis
lark:->
96.who
(1)简介
who:查看其他登录的用户。
(2)部分参数说明
who [-imqsuwHT][--count][--idle][--heading][-help]
[--message] [--mesg] [--version][--writable] [file] [ami]
-m:同whoami和“who am i”。
-q, --count;只输出用户的登录名和正在使用的用户数目。
-i, -u, --idle:输出用户发呆的时间,“.”表明用户没有发呆,“old”表明用户发呆超过24小时。
-H, --heading:输出表头。
-w, -T, --mesg, --message, --writable:输出用户的信息屏蔽状态。
+:可写。
-:不可写。
?:不能发现终端设备。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。列出系统当前用户:
lark:->who -H
USER LINE LOGIN-TIME FROM
chenxy ttyp2 Sep 29 20:37(hpte2.ihep.ac.cn)
liubx ttyp3 Sep 29 15:59(:0.0)
fangh ttyp4 Sep 29 19:19 (csun01.ihep.ac.c)
lark:->
98.write
(1)简介
write:向另外一个用户发信息。
如果用户不是超级用户,则不能对设定message n的用户发信息,输入完成后,使用Ctrl-D结束。
(2)部分参数说明
write user [@host] [ttyname]
99.zoo
(1)简介
zoo:使用Lz方式压缩文件并打包。
(2)部分参数说明
zoo {acfDeghHILPTuUvVx}[aAcCdEfghImMnNoOpPqSul:/.@n+ - =]
打包文件名 文件名列表
zoo -command 打包文件名 文件名列表
zoo h
选项
描述
专家选项
-add
-extract
-move
-test
-delete
-list
-update
-freshen
-comment
向打包文件中增加文件
从打包文件中解开文件
移动以打包文件中
测试打包文件
从打包文件中解开文件输出到标准输出
从打包文件中删除文件
列出打包文件的目录
更新打包文件中的文件
增加打包文件中的文件
给文件加注解
aP:
x
aMP
xNd
xp
DP
VC
aunP:
aunp:
c
(3)范例。将目前目录下所有文件打包到文件bak.zoo中:
lark:->zoo a ban./*
Zoo: ./bak.tar --(24%)added
Zoo: ./circle --(31%)added
Zoo: ./sec.tar --(20%)added
Zoo:./sourcefile --(13%)added
lark:->
GNU公用许可证
关于拷贝、分发和修改的条款和条件
0.这种许可证可应用在任何程序或其他包含有通告的工作作品上,这种通告由版权拥有者放置,并通知它可在这种公用许可证的条款下分发。下边的“程序”指的是任何一种程序或作品,而“基于程序的作品”指的是受版权法保护的程序或者任何派生的作品,也就是说,一个包含程序或部分程序的作品,既包含有原封不动的拷贝。又包括修改和/或翻译到另一种语言的副本。(这以后,“翻译”毫无限制地包括在“修改”这个词中)。每个许可证都以“你”作为称呼。
除了拷贝、分发和修改之外的活动都不包括在这种许可证之中;它们都超出了范围。运行程序的行为并不受限制,只有在程序输出的内容组成了一个基于程序的作品时它才受许可证的限制(与运行程序无关)。它是否正确取决于程序完成的功能。
1.你可以像你接收程序源代码一样在任何媒体上分发它的原件备份,只要你在每个拷贝的显著位置适当地发布版权通告和担保声明,你可以与参考这个许可证并缺乏保证的通知保持联系;你可以随同程序给程序的其他接收者一份许可证的拷贝。
你可以因为传送拷贝的行为收费,并且可以任意提供授权保护做为收费的代价。
2.因此,合成基于程序的作品时,你可以修改程序拷贝或其中任一部分。并且只要你同样满足以下这些条件,你就可在上边第1条款下拷贝和分发这种修改品和作品:
a)你必须使已修改的文件带有显著的通知,声明你已改变文件及其日期。
b)你必须使你分发或出版的作品,不管其整体或部分来源于其他什么程序,都应该整体标注为不收费以供第三方基于本许可证条款来使用。
c)如果已修改的程序在运行时要正常地交互式阅读命令,在以绝大多数普通方法来开始运动这种交互式使用时,你必须使它能打印或显示包括有适当版权通告和无授权担保声明的文档信息(否则,应指出提供了授权担保),同时也应使它声明用户可在这些条件下再分发程序并告诉用户如何查看本许可证的拷贝(例如:如果程序本身是交互式的但不能正常地打印这种声明,你的基于程序的作品并不要求打印这种声明)。
这些要求做为一个整体应用到已修改的作品上。如果该作品的可定义部分并非来自于程序,并且有理由认为是自身独立的和单独的作品,当你以独立作品分发它们时,那么本许可证及其条款不再适用。但当你以一个基于程序作品的整体或部分分发这些相同部分时,整个作品的分发必须遵守许可证的条款,对于其他许可证的许可将延伸到整体上,并因此对每个部分都不必考虑是谁编写的。
因此,本许可让的目的不在于声明你对完全由你编写作品的权利;相反;目的只是使用这种权利来控制基于程序的派生或收集作品的分发。
此外,仅仅非基于程序的另一作品有关在一定存储或分发媒介上的程序(或基于程序的一件作品)的汇集不构成本许可证范围的另外作品。
3.你可以(或基于它的作品,在第2节中),基于第1和第2节中的条款,以目标代码或可执行形式拷贝和分发程序,只要你也能完成以下任一工作:
a)伴随程序是完全对应的程序可读的源代码,它必须在一个可为软件交换任意使用的媒介上基于第1和第2的条款被分发。
b)伴随程序的是书面方式提供的完全机器可读的相应源代码的拷贝,它至少应在3年内有效,应以不超过支付源码分发代价的价格提供给第三方,它应基于第1和第2节的条款在可为软件交换任意使用的媒介上分发。
c)伴随程序的是你收到用以分发相应源代码的信息(这种替代方案只在非商业性销售和只在以接收到目标代码或可执行状态程序时提供,它应与上述部分一致)。
对于作品的源代码意味着对作品可任意修改。对于可执行的程序,完整的源代码意味着其所有模块的全部源代码,加上任何有关的接口定义文件,加上用于控制编译和可执行程序安装的脚本程序。但是,做为特殊的例外,分发的源代码不需要包括任何随可执行程序运行的基于操作系统的主要部件(编译器,内核等等)一起正式分发的东西(可以是源代码或二进制形式),除非这些部件本身有可执行程序。
如果执行程序或目标代码的分发由提供从指定位置对拷贝的访问手段来完成,那么提供从相同地点对源代码拷贝的相同访问手段即与源代码等效分发,即使第三方并不一定要为目标代码来拷贝源代码。
4.除非此许可证提供了许可,否则你不能拷贝、修改、再注册或分发程序。除了拷贝、修改、再注册或分发程序之外的深度和努力都是不允许的,否则本许可证将自动终止你的权利。
但是,从你这里基于本许可证已接收到拷贝或权利的团体将不会终止其许可证,只要这些团体完全遵守规定。
5.只要你还没有签署本许可证,你就不必接受本许可证的规定。但是,没有其他的东西能赋予你修改或分发程序或作品的权限。如果你不接受该许可证,你的所有对程序的操作在法律上是被禁止的。因此,通过对程序(或任何基于程序的作品)的修改或分发,你就表明你接受本许可证以及对程序及基于程序的作品关于拷贝、分发或修改的条款和条件。
6.每次你再分发程序(或任何基于程序的作品),接收者将自动从初始注册那里获得许可证并按照这些条款和条件拷贝、分发或修改程序。此时你不必给接收者对这些权利的使用强加任何更多的限制。
你不必对第三方强加对本许可证的服从负责任。
7.由于法庭判决的结果或违反专利的控诉或其他任何原因(不限于专利问题),如果强加给你的条件(不和是法庭判决、协议或其他的)与本许可证的条件矛盾,他们并不会因该许可证的条件而原谅你。如果你分发程序不能同时满足许可证的条件和其他适当的条件,那么其后果是你就根本不能分发该程序。例如,专利许可证就不会允许那些从你这里直接或间接地获得拷贝的人毫不负责地再分发该程序。例如,专利许可证就不会允许那些从你这里直接或间接地获得拷贝的人毫不负责地再分发该程序,而唯一能让你满足它和该许可证的方法就是完全制止对程序的分发。
如果在任何特殊环境下本节的任何部分都是无效的或没有效力的,本书的平衡能应用,作为整体本节段将能在其他环境下应用。
本节的目的并非诱使你违反任何专利或其他财产权利;这一节唯一的目的在于保护免费软件分发系统的完整性,这就是通过公共许可证实践来实现的。许多人已经通过此系统的持续应用做出了巨大的贡献以便实现大范围的软件分发;它取决于著者/制作者决定他或她是否愿意通过其他任何系统分发软件,而不能强迫他/她作出选择。
本节的目的在于彻底弄清该许可证剩余部分的后果。
8.如果程序的分发和/或使用通过专利或有版权的接口限制在特定国家内,将程序置于该许可证之下的初始版权持有者将增加除这些国家之外的明显地理限制,因此只允许在那些没被排除在外的国家之中分发。在这种情况下,这个许可证纳入这种限制就如同其编写在许可证的主体之中。
9.免费软件基金会将随时出版修订后的和/或新版本的公用许可证。这些新版软件与当前版本的软件在思想上很相似,但可能在处理新问题或所关心的细节上不同。
每个版本都被赋予了一个唯一的版本号。如果程序指定将应用在自身及其以后版本上该许可证的版本号,你就会有免费软件基金会出版的关于那一版及其后继版的下列条款和条件的选项。如果程序没有指定该许可证的版本号,你可以选择免费软件基金会曾经出版的任何版本。
10.如果你想把部分程序结合到另外的分发条件不同的免费软件里,可以写信给作者征得同意。对于由免费软件基金会拥有版权的软件,可写信给免费软件基金会。有时我们会为此做一些例外。我们的决定取决于由保留所有我们免费软件的免费分发状态和促进软件共享和重用这两大目标。
没有担保
11.由于程序注册为不收费,因此对该程序就没有担保达到实际法律允许的程度。否则除非在文字中声明,版本所有者和/或其他团体提供程序时没有任何种类担保,既包括表明的或隐含的,也包括对特殊目的的可销售性和适用性的隐含担保。至于程序的质量和性能的整体风险均在于你自己。如果你想验证程序的错误,你就得承担所有必要的服务、修改或纠错的费用。
12.除非法律需要或在文字中声明,否则任何版权所有者或其他在以前允许的修改和/或再分发程序的团体,将对任何损失负责,包括任何一般的,特殊的、偶然的或由使用该程序引起的损失后果(包括不受限制的数据的丢失或不精确的数据或由你或第三方团体承担的损失或程序与其他程序的失败操作),即使这些版权所有者或其他团体已被建议有这种损失的可能性。
条款和条件结束
如何将这些条款应用到你的新程序中
如果你开发了一个新程序,并且你想让公众最大可能地使用它,达到这一点的最佳途径就是使它成为免费软件。这样每个人都能在这些条款下再分发和修改它。
要这样做,就应把下列通知联到程序上,把它们联到每个源文件的开头以充分地表明无担保,这种做法是最安全的。并且每个文件都应至少有“Copyright”行和在何处可发现全部的通告的指示。
<给出编程者的姓名的行和其完成工作的简要介绍>
Copyright (C) 19yy <作者姓名>
This program is free software; you can redistrbute it and/or modify
it under the tems of the GNU General Public License as published by
(at you option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
GNU General Public License for more details.
You should have received a copy of the GNU General Pulic License
along with this program;if not, write to the Free Software
Foundaton, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.
同样也应加上如何用电子邮件或信件与你联系的信息。
如果程序是交互式的,在它开始进入交互模式时使其输出一个类似这样的简短通告:
Gnomovision version 69, Copyright (C) 19yy name of suthor
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
under certain conditions;type 'show c' for details.
假设的命令'show w'和'show c'应显示公用许可证的适当部分。当然,你使用的命令可以叫做不同于'show w'和'show c'的其他名字,甚至可以是鼠标单击或菜单选项-可以是适合你程序的任何东西。
同样,如果必要,你应请你的雇主(如果你作为一名编辑人员开展工作)或你的学校来为程序签署'copyright disclaimer',这里有一个例子。请改换其名字:
Yoyodye, Inc., hereby disclaims all copyright interest in the program
'Gnomovision'(which makes passes at compilers)written by James Hacker.
Ty coon, President of Vice
这个公用许可证不允许将你的程序添加到牟利的程序中。如果你的程序是常规库程序,你可以认为允许牟利的应用程序链接到该库程序是很有用的。如果你想这样做,请使用GNU库公用许可证而不是这里的公用许可证。
关于拷贝、分发和修改的条款和条件
0.这种许可证可应用在任何程序或其他包含有通告的工作作品上,这种通告由版权拥有者放置,并通知它可在这种公用许可证的条款下分发。下边的“程序”指的是任何一种程序或作品,而“基于程序的作品”指的是受版权法保护的程序或者任何派生的作品,也就是说,一个包含程序或部分程序的作品,既包含有原封不动的拷贝。又包括修改和/或翻译到另一种语言的副本。(这以后,“翻译”毫无限制地包括在“修改”这个词中)。每个许可证都以“你”作为称呼。
除了拷贝、分发和修改之外的活动都不包括在这种许可证之中;它们都超出了范围。运行程序的行为并不受限制,只有在程序输出的内容组成了一个基于程序的作品时它才受许可证的限制(与运行程序无关)。它是否正确取决于程序完成的功能。
1.你可以像你接收程序源代码一样在任何媒体上分发它的原件备份,只要你在每个拷贝的显著位置适当地发布版权通告和担保声明,你可以与参考这个许可证并缺乏保证的通知保持联系;你可以随同程序给程序的其他接收者一份许可证的拷贝。
你可以因为传送拷贝的行为收费,并且可以任意提供授权保护做为收费的代价。
2.因此,合成基于程序的作品时,你可以修改程序拷贝或其中任一部分。并且只要你同样满足以下这些条件,你就可在上边第1条款下拷贝和分发这种修改品和作品:
a)你必须使已修改的文件带有显著的通知,声明你已改变文件及其日期。
b)你必须使你分发或出版的作品,不管其整体或部分来源于其他什么程序,都应该整体标注为不收费以供第三方基于本许可证条款来使用。
c)如果已修改的程序在运行时要正常地交互式阅读命令,在以绝大多数普通方法来开始运动这种交互式使用时,你必须使它能打印或显示包括有适当版权通告和无授权担保声明的文档信息(否则,应指出提供了授权担保),同时也应使它声明用户可在这些条件下再分发程序并告诉用户如何查看本许可证的拷贝(例如:如果程序本身是交互式的但不能正常地打印这种声明,你的基于程序的作品并不要求打印这种声明)。
这些要求做为一个整体应用到已修改的作品上。如果该作品的可定义部分并非来自于程序,并且有理由认为是自身独立的和单独的作品,当你以独立作品分发它们时,那么本许可证及其条款不再适用。但当你以一个基于程序作品的整体或部分分发这些相同部分时,整个作品的分发必须遵守许可证的条款,对于其他许可证的许可将延伸到整体上,并因此对每个部分都不必考虑是谁编写的。
因此,本许可让的目的不在于声明你对完全由你编写作品的权利;相反;目的只是使用这种权利来控制基于程序的派生或收集作品的分发。
此外,仅仅非基于程序的另一作品有关在一定存储或分发媒介上的程序(或基于程序的一件作品)的汇集不构成本许可证范围的另外作品。
3.你可以(或基于它的作品,在第2节中),基于第1和第2节中的条款,以目标代码或可执行形式拷贝和分发程序,只要你也能完成以下任一工作:
a)伴随程序是完全对应的程序可读的源代码,它必须在一个可为软件交换任意使用的媒介上基于第1和第2的条款被分发。
b)伴随程序的是书面方式提供的完全机器可读的相应源代码的拷贝,它至少应在3年内有效,应以不超过支付源码分发代价的价格提供给第三方,它应基于第1和第2节的条款在可为软件交换任意使用的媒介上分发。
c)伴随程序的是你收到用以分发相应源代码的信息(这种替代方案只在非商业性销售和只在以接收到目标代码或可执行状态程序时提供,它应与上述部分一致)。
对于作品的源代码意味着对作品可任意修改。对于可执行的程序,完整的源代码意味着其所有模块的全部源代码,加上任何有关的接口定义文件,加上用于控制编译和可执行程序安装的脚本程序。但是,做为特殊的例外,分发的源代码不需要包括任何随可执行程序运行的基于操作系统的主要部件(编译器,内核等等)一起正式分发的东西(可以是源代码或二进制形式),除非这些部件本身有可执行程序。
如果执行程序或目标代码的分发由提供从指定位置对拷贝的访问手段来完成,那么提供从相同地点对源代码拷贝的相同访问手段即与源代码等效分发,即使第三方并不一定要为目标代码来拷贝源代码。
4.除非此许可证提供了许可,否则你不能拷贝、修改、再注册或分发程序。除了拷贝、修改、再注册或分发程序之外的深度和努力都是不允许的,否则本许可证将自动终止你的权利。
但是,从你这里基于本许可证已接收到拷贝或权利的团体将不会终止其许可证,只要这些团体完全遵守规定。
5.只要你还没有签署本许可证,你就不必接受本许可证的规定。但是,没有其他的东西能赋予你修改或分发程序或作品的权限。如果你不接受该许可证,你的所有对程序的操作在法律上是被禁止的。因此,通过对程序(或任何基于程序的作品)的修改或分发,你就表明你接受本许可证以及对程序及基于程序的作品关于拷贝、分发或修改的条款和条件。
6.每次你再分发程序(或任何基于程序的作品),接收者将自动从初始注册那里获得许可证并按照这些条款和条件拷贝、分发或修改程序。此时你不必给接收者对这些权利的使用强加任何更多的限制。
你不必对第三方强加对本许可证的服从负责任。
7.由于法庭判决的结果或违反专利的控诉或其他任何原因(不限于专利问题),如果强加给你的条件(不和是法庭判决、协议或其他的)与本许可证的条件矛盾,他们并不会因该许可证的条件而原谅你。如果你分发程序不能同时满足许可证的条件和其他适当的条件,那么其后果是你就根本不能分发该程序。例如,专利许可证就不会允许那些从你这里直接或间接地获得拷贝的人毫不负责地再分发该程序。例如,专利许可证就不会允许那些从你这里直接或间接地获得拷贝的人毫不负责地再分发该程序,而唯一能让你满足它和该许可证的方法就是完全制止对程序的分发。
如果在任何特殊环境下本节的任何部分都是无效的或没有效力的,本书的平衡能应用,作为整体本节段将能在其他环境下应用。
本节的目的并非诱使你违反任何专利或其他财产权利;这一节唯一的目的在于保护免费软件分发系统的完整性,这就是通过公共许可证实践来实现的。许多人已经通过此系统的持续应用做出了巨大的贡献以便实现大范围的软件分发;它取决于著者/制作者决定他或她是否愿意通过其他任何系统分发软件,而不能强迫他/她作出选择。
本节的目的在于彻底弄清该许可证剩余部分的后果。
8.如果程序的分发和/或使用通过专利或有版权的接口限制在特定国家内,将程序置于该许可证之下的初始版权持有者将增加除这些国家之外的明显地理限制,因此只允许在那些没被排除在外的国家之中分发。在这种情况下,这个许可证纳入这种限制就如同其编写在许可证的主体之中。
9.免费软件基金会将随时出版修订后的和/或新版本的公用许可证。这些新版软件与当前版本的软件在思想上很相似,但可能在处理新问题或所关心的细节上不同。
每个版本都被赋予了一个唯一的版本号。如果程序指定将应用在自身及其以后版本上该许可证的版本号,你就会有免费软件基金会出版的关于那一版及其后继版的下列条款和条件的选项。如果程序没有指定该许可证的版本号,你可以选择免费软件基金会曾经出版的任何版本。
10.如果你想把部分程序结合到另外的分发条件不同的免费软件里,可以写信给作者征得同意。对于由免费软件基金会拥有版权的软件,可写信给免费软件基金会。有时我们会为此做一些例外。我们的决定取决于由保留所有我们免费软件的免费分发状态和促进软件共享和重用这两大目标。
没有担保
11.由于程序注册为不收费,因此对该程序就没有担保达到实际法律允许的程度。否则除非在文字中声明,版本所有者和/或其他团体提供程序时没有任何种类担保,既包括表明的或隐含的,也包括对特殊目的的可销售性和适用性的隐含担保。至于程序的质量和性能的整体风险均在于你自己。如果你想验证程序的错误,你就得承担所有必要的服务、修改或纠错的费用。
12.除非法律需要或在文字中声明,否则任何版权所有者或其他在以前允许的修改和/或再分发程序的团体,将对任何损失负责,包括任何一般的,特殊的、偶然的或由使用该程序引起的损失后果(包括不受限制的数据的丢失或不精确的数据或由你或第三方团体承担的损失或程序与其他程序的失败操作),即使这些版权所有者或其他团体已被建议有这种损失的可能性。
条款和条件结束
如何将这些条款应用到你的新程序中
如果你开发了一个新程序,并且你想让公众最大可能地使用它,达到这一点的最佳途径就是使它成为免费软件。这样每个人都能在这些条款下再分发和修改它。
要这样做,就应把下列通知联到程序上,把它们联到每个源文件的开头以充分地表明无担保,这种做法是最安全的。并且每个文件都应至少有“Copyright”行和在何处可发现全部的通告的指示。
<给出编程者的姓名的行和其完成工作的简要介绍>
Copyright (C) 19yy <作者姓名>
This program is free software; you can redistrbute it and/or modify
it under the tems of the GNU General Public License as published by
(at you option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
GNU General Public License for more details.
You should have received a copy of the GNU General Pulic License
along with this program;if not, write to the Free Software
Foundaton, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.
同样也应加上如何用电子邮件或信件与你联系的信息。
如果程序是交互式的,在它开始进入交互模式时使其输出一个类似这样的简短通告:
Gnomovision version 69, Copyright (C) 19yy name of suthor
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
under certain conditions;type 'show c' for details.
假设的命令'show w'和'show c'应显示公用许可证的适当部分。当然,你使用的命令可以叫做不同于'show w'和'show c'的其他名字,甚至可以是鼠标单击或菜单选项-可以是适合你程序的任何东西。
同样,如果必要,你应请你的雇主(如果你作为一名编辑人员开展工作)或你的学校来为程序签署'copyright disclaimer',这里有一个例子。请改换其名字:
Yoyodye, Inc., hereby disclaims all copyright interest in the program
'Gnomovision'(which makes passes at compilers)written by James Hacker.
Ty coon, President of Vice
这个公用许可证不允许将你的程序添加到牟利的程序中。如果你的程序是常规库程序,你可以认为允许牟利的应用程序链接到该库程序是很有用的。如果你想这样做,请使用GNU库公用许可证而不是这里的公用许可证。


