FreeBSD完全入门手册

04-15

虽然非常基础,但是对于初学者非常有用的,相信不管是初学者还是非初学者,都是有用的。

引用:送给FreeBSD和UNIX的初学者
Annelise
Anderson
August 15, 1997

引用:
1.登录和退出引用:
登录时(当看到login:时)你必须是在系统安装时创建的用户或root超级用户.(在FreeBSD系统安装时就已经创建了root用户了 ,root用户遍历到系统的任何一个目录并且可以做任何事情,包括删除系统文件,所以一定要千万小心!)符号%和符号# 代表提示符(你的可能不一样),%表示普通用户,#表示超级用户root要退出系统(并且回到login:提示符),打命令:
# exit
对,打完命令后按回车,记住UNIX对命令是区分大小写的--也就是说,是exit,而不是EXIT.
要关闭机器,打命令:
# /sbin/shutdown -h now
要重启机器,打命令:
# /sbin/shutdown -r now
或者
# /sbin/reboot
你也可以按Ctrl-Alt-Delete来重启机器.
花少许时间练习一下.在最近发行的FreeBSD版本中这和/sbin/reboot是相等的,而且这比按reset按钮要好多了.你也不想重装东西,难道不是吗?

2.用Root权限添加用户引用:
当你第一次运行adduser时,它也许会创建一些缺省设置.在它建议你把sh作为缺省shell的时候,你可能想把csh作为缺省shell 而不是sh.否则直接按回车接受默认值.这些默认设置保存在/etc/adduser.conf中,一个可编辑文件.
# adduser
假如你创建了一个新用户jack全名为Jack Benimble.出于安全因素,给jack一个口令(即使周围的孩子也可能敲击键盘).当它问你是否想jack成为某个组的成员时,回答wheel
Login group is ``jack''. Invite jack into other groups: wheel
这样就可以用户jack登录系统,再用su命令成为root超级用户.然后你就再也不会因为以root超级用户登录而受到责备了.

你可以在adduser中,通过按Ctrl-C退出随时退出.在创建结束时你可以批准该用户的生成或打n来取消创建该用户.你也许想创建第二个用户(jill?)这样当你编辑jack的登录文件时,就有一个热备份以免出错.一旦创建完用户,exit用exit回到login:提示符以jack登录.通常情况下,最好不要用root用户而是用普通用户完成大部分的工作.如果你已经创建了一个用户而且想使该用户能够用su命令成为root用户,你可以root登录然后编辑文件/etc/group,把jack加入第一行(wheel组),但是你首先要练习使用vi,文本编辑器--或简单些的编辑器,安装在最近发行的FreeBSD中的ee.

要删除一个用户使用rmuser命令.

3. 环顾四周引用:
以普通用户登录,四处浏览一下再使用一些命令试着访问帮助资源和FreeBSD的别的信息.以下是一些命令和它们的功能:
id 告诉你你是谁!
pwd 显示你在哪个目录--当前工作目录.
ls 显示当前目录的文件.
ls -F 显示当前目录的文件.执行文件的文件名后加*,目录名后加/,符号链接后加@.
ls -l 以长格式显示文件.
ls -a 列出隐藏点文件和其它文件.如果你是root用户,无须加-a选项,点文件将自动显示.
cd 改变目录.
cd .. 回到上级目录;注意cd后的空格.
cd /usr/local 到/usr/local目录下.
cd ~ 到以登录用户的主目录--例如/usr/home/jack.
试试cd /cdrom,然后ls, 看看你的CDROM是否mounted并且正常工作.
view filename
让你看一个文件(文件名为filename 不改变文件名).试试
view /etc/fstab.
:q :q退出.
cat filename
在屏幕上显示filename.如果文件太长你只能看到文件的最末部分,按ScrollLock 然后用上下键往回移;
ScrollLock键在看手册的时候也用的上.再按一下ScrollLock将退出屏幕滚动.你可以试一下cat你主目录的点文件cat .cshrc , cat .login , cat .profile.
你也许注意到了.cshrc文件中有关ls命令的别名(它们用起来很方便).你可以编辑.cshrc文件来创建一些别的别名.为了使系统的所有用户都能使用这些别名,把它们放到csh的系统配置文件/etc/csh.cshrc中.

4. 获得帮助信息引用:
这里有一些关于帮助的有用的资源.text表示你从键盘打入的东西--通常是一条命令或文件名.
apropos text 在whatis数据库中所有包含text的有关信息.
man text
text的手册.是Un*x系统文档的主要来源.man ls会告诉你使用ls命令的所有方法.按回车键在文本中移动,Ctrl-b往前翻一页,Ctrl-f往后翻一页,q或Ctrl-c退出.
which text 告诉你text命令所在的路径.
locate text 所有找到text字符串的路径.
whatis text
告诉你text命令主要用来干什么和它的手册页.打入whatis *将告诉你当前目录中的所有命令的有关信息.
whereis text 寻找text文件,并给出它的完全路径.
你可能想对一些常用命令如cat, more,grep,mv,find,tar,chmod,chown,date,和script使用whatis命令.more命令可以让你以DOS的方式一次只阅读一页内容. 例如: ls -l | more 或 more filename.符号*代表通配符--例如:ls w*将显示所有以w开头的文件名.

这些命令是不是并不太有效?locate和whatis命令都取决于每星期重建一次的数据库.如果你不准备让你的机器在周末也运行的话(运行FreeBSD),你也许希望不时地每天、每星期、每月运行这些命令?现在,以root身份运行这些命令然后在运行下条命令之前指定一个结束时间.
# /etc/daily 输出省略
# /etc/weekly 输出省略
# /etc/monthly 输出省略
如果你等的不耐烦了,按Alt-F2到另一个虚拟控制台上并登录进去.实际上FreeBSD是一个多用户、多任务系统.不过这些命令在运行时出现的信息大概会在你的屏幕上显示一下;你可以打clear命令清除屏幕.一旦它们开始运行了,你可以看看/var/mai l/root和/var/log/messages着两个目录.

你是你自己系统的管理员,作为一个系统管理员或Unix系统的单用户,运行这些命令是最基本的.实质上,所有你须要已root身份做的事情就是系统管理.这种职责在那些又大又厚的Unix书里并没有得到很好的概括,这些书籍似乎花了很大空间用来说明w indows管理器的下拉菜单.系统管理方面的书你应该看看以下两本,

红封面的Evi Nemeth et.al.'s UNIX System Administration Handbook(Prentice-Hall, 1995, ISBN 0-13-15051-7)--the second edition,另外一本为aleen Frisch's Essential System Administration (O'Reilly & Associates, 1993,ISBN 0-937175-80-3).我使用的是Nemeth的书.

5. 文本编辑引用:
配置系统的时候,一般都要编辑文本文件.大多数要编辑的都在/etc目录下,你需要使用su成为root才能更改这些文件.你可以使用方便的ee命令,但是长远考虑,vi值得学习./src/contrib/nvi/docs/tutorial目录下有一个出色的教程,如果你安装了的话;否则你可以从ftp.cdrom.com的 FreeBSD/FreeBSD-current/src/contrib/nvi/docs/tutorial目录下ftp过来.

在编辑文件之前,你应该先做个备份.假设你要编辑文件/etc/rc.conf.你只要用cd/etc到达/etc目录然后打命令:
# cp rc.conf rc.conf.orig
这样就把rc.conf拷贝为rc.conf.orig,稍后你可以把rc.conf.orig拷贝回rc.conf来覆盖源文件.但最好是先移动(重命名)然后拷贝回去:
# mv rc.conf rc.conf.orig
# cp rc.conf.orig rc.conf
因为mv命令保留了文件的原先日期和拥有者.你现在可以编辑rc.conf了.如果你要源备份,你只要mv rc.conf rc.conf.myedit
(假设你要保留你的编辑版本)然后用
# mv rc.conf.orig rc.conf
来恢复成以前的样子.
要编辑文件,打命令
# vi filename
用方向键在文本中来回移动.Esc(escape键)使vi进入命令模式.这儿有些命令:
x 删除光标所在处的字符
dd 删除整个一行(即使在屏幕上是折行)
i 在光标所在处插入文本
a 在光标所在处之后插入文本
一旦你打了i或a,你就可以键入文本了.Esc使你进入命令模式,然后你可以打:
:w 存盘然后继续编辑
:wq 存盘并退出
:q! 放弃存盘并退出
/text 移动光标到text处;/Enter (回车键)用来寻找下一个text
G 移动到文件最末
nG 到文件的第n行,n代表一个数字
Ctrl-L 刷新屏幕
Ctrl-b and Ctrl-f 朝前或朝后翻一屏,就象more和view一样

在你的主目录下用vi filename创建一个文件来练习一下如何添加、删除文本,保存文件,然后继续编辑.vi会带来一些惊奇,因为它的确相当复杂,有时候你会不经意的发出一条命令取得一些意想不到的效果.(一些人竟然会喜欢vi--vi比DOS EDIT强多了--去查查:r命令.)当你遇到麻烦时,多按几下Esc键以确保你在命令模式然后从那里继续下去,经常用:w存盘,还有在需要的时候用:q!退出重来一次.

现在你可以cd到/etc目录下,su成为root,用vi编辑文件/etc/group,加一个用户到wheel组这样这个用户就有享有root特权了. 在文件的第一行的末尾加一个逗号和用户名,按Esc,然后用:wq存盘退出.立即生效.(你没有在逗号之后加空格,对吗?)

6. 在DOS下打印文件引用:
在这一点上,你也许没有打印机,有个办法可以先从手册页建一个文件然后再把这个文件移到软盘,然后在DOS下打印.假设你想仔细阅读一下有关文件权限的文档(非常重要).你可以打命令man chmod.命令:
# man chmod | col -b > chmod.txt
会删掉格式代码然后把手册页发送到chmod.txt文件,而不是显示在屏幕上.现在你可以插入一张dos格式化好的软盘,su成为ro ot,然后输入命令:
# /sbin/mount -t msdos /dev/fd0 /mnt
这样就把软盘mount到了/etc目录下了.
现在(你没必要再用root了,输入exit回到刚才的用户jack)可以到刚才创建chmod.txt的那个目录然后把文件拷贝到软盘:
% cp chmod.txt /mnt
再用ls /mnt查看一下/mnt目录下的文件列表,应该能显示chmod.txt. 也许你很想将/sbin/dmesg输出到一个文件,可以输入命令:
% /sbin/dmesg > dmesg.txt
然后拷贝dmesg.txt到软盘./sbin/dmesg是系统的启动日志,最好能了解它的内容,因为它能告诉你系统在启动的时候都找到了什么硬件.如果你想向[email protected]或一个USENET组--象FreeBSD找不到我的磁带机,我该怎么办?--回答问题的人总是想先知道dmesg的内容.
现在你可以将软驱从FreeBSD卸掉(用root)并取出软盘:
# /sbin/umount /mnt
然后重启机器到DOS.把这些文件copy到一个DOS目录,用诸如DOS EDIT,Windows Notepad或Wordpad,或一个字处理器打开上述文件,做一些小小的改动,然后存盘,再象平常一样在DOS或Windows下打印出来.希望一切顺利!用dos的print命令打印手册文档效果最好.(把文件从FreeBSD拷贝到mount好的dos风区要冒一些风险.)

要从FreeBSD下打印首先要牵涉到在/etc/printcap目录下创建合适的条目和在/var/spool/output目录下创建相应的脱机目录 .如果你的打印机在lpt0上(即dos下的LPT1),你只须到/var/spool/output目录然后用mkdir lpd命令(用root)建一个lpd目录(如果该目录原先不存在的话).接着当系统启动的时候如果打印机电源接通的话,打印机会有反应,并且lp或lpr命令应该能够向打印机发送一个文件.无论文件是否打印取决于它的配置,在FreeBSD手册里有详细介绍.

7. 其他一些常用命令引用:
df 显示磁盘空间和安装了的文件系统.
ps aux 显示正在运行的进程.ps ax是窄格式.
rm filename 删除filename.
rm -R dir 删除一个目录,包括所有子目录--小心!
ls -R
显示当前目录和所有其子目录的文件;我用的不大一样,用ls -AFR > where.txt,可以在我找到更好的查找文件的方法之前得到/目录和(分别的)/usr目录下所有文件的列表.
passwd 修改一个用户(或root)的口令
man hierUnix 文件系统上的手册
在/usr或任何别的目录下使用find命令来查找文件:
% find /usr -name filename
你可以用在filename里使用*通配符(应该加在引号里). 如果你告诉find到/目录而不是/usr目录下查找文件,它会到所有安装好的文件系统包括CDROM和dos分区中去查找文件.

关于Unix命令和使用工具,一本比较好的书是Abrahams & Larson, Unix for the Impatient (2nd ed., Addison-Wesley, 1996).在Internet上也有很多Unix信息.看看Unix Reference Desk.

8. 下一步引用:
现在你有了编辑工具并且知道如何遍历系统,因此你可以运行任何你想要的东西.在FreeBSD的站点上和FreeBSD手册上(很可能在你的硬盘上)都可以找到大量的相关信息.同时在Walnut Creek CDROM和它的站点上也可以找到大量的应用程序包.使用手册已经告诉你如何添加这些程序包(添加程序包的时候该包必须存在 ,然后用pkg_add/cdrom/packages/All/packagename,packagename表示包的文件名).在下列目录及文件中可以找到光盘上有关每个程序包简要说明的一张列表:cdrom/packages/index,cdrom/packages/index.txt,和cdrom/ports/index.更详细的说明可以在/cdrom/ports/*/*/pkg/DESCR文件里找到,前后两个*分别代表程序所属的类别和程序名.

如果你不能理解手册上所说的关于如何从cdrom上安装程序包的话,下列步骤通常可以行的通:

找一个你要的包,比如kermit.存放在光盘上的某个目录.用下列命令把该子目录拷贝到/usr/local目录下(供所有用户使用的软件最好都放在这):
# cp -R /cdrom/ports/comm/kermit /usr/local
这样/usr/local/kermit子目录就包含了是光盘上kermit子目录下的所有文件.下一步,如果/usr/ports/distfiles不存在的话就用mkdir把这个目录建起来.现在到/cdrom/ports/distfiles文件里查找一下你所要的程序包的名字.然后包相关的安装文件拷贝到/usr/ports/distfiles目录下;在最近的新版本中你可以跳过这一步,FreeBSD会自动完成这一步.对kermit来说,没有d istfile.然后cd到包含Makefile的/usr/local/kermit子目录下,打命令:
# make all install
在这一过程中,如果系统在/usr/ports/distfiles目录中找不到相关的压缩文件的话,它就会ftp去下载该文件.如果你没有联网并且该文件不在上述目录下的话,你得用另外一台机器来获得该文件,然后再把它从软盘或dos分区拷贝到/usr/ports/distf iles下.阅读一下Makefile(用cat或more命令)看看应该到哪里(master distribution site)下载、文件名是什么.下载到了dos下后文件名会缩短,你把它放到/usr/ports/distfiles下后得把文件名改为原来的(用 mv命令),这样在安装的时候,系统就能找到这个文件了.(用二进制模式下载!)然后回到/usr/local/kermit目录,到有Makefil e的目录,打make all install.

安装程序包的时候可能碰到的另外一件事就是需要事先安装一些别的应用程序.如果安装过程停下来说找不到unzip或别的什么的话,你就必须先安装unzip的程序包然后才能继续.

一旦安装完毕,打rehash命令让FreeBSD重新读一下该路径下的文件,这样它就知道目录下都有些什么.(如果当你用whereis或w hich命令时出现很多路径找不到的信息的话,你得在你的主目录下的.cshrc文件中path描述后添加一部分.出于安全考虑,Unix中的path除了当前目录不在path中(默认),别的和DOS下的path都是一样的,要运行不在path中的当前目录的命令,要在命令前打./才能使命令执行,斜杠后不能有空格.)
< br> 也许你想从Netscape的ftp站点上得到最新版的Netscape.(Netscape必须运行在X Windows系统上.)现在有FreeBSD版本了,仔细找找.只要运行 gunzip filename和tar xvf filename,把执行文件移到/usr/local/bin或其它一些存放执行文件的地方,rehash,然后把下列行加到每个用户主目录下的.c shrc文件中或者(更简单)干脆到系统启动配置文件/etc/csh.cshrc中:
setenv XKEYSYMDB /usr/X11R6/lib/X11/XKeysymDB
setenv XNLSPATH /usr/X11R6/lib/X11/nls
前提是假设文件XkeysymDB和目录nls在目录/usr/X11R6/lib/X11下;如果不在的话,查找一下然后放到上述目录下.

如果你以前就已经用CDROM(或ftp)安装了Netscape,不要把用新的Netscape执行文件覆盖/usr/local/bin/netscape,老的文件只是一个设置环境变量的shell脚本.相反,把新的执行文件更名为netscape.bin,然后覆盖老的执行文件/usr/local/lib/nets cape/netscape.bin.

9. 你的工作环境引用:
你的shell是你的工作环境中最重要的部分.在DOS下,shell通常为command.com.对你所打入的命令进行解释的程序就是shell, 这样来与操作系统通信.你也可以写你自己的shell脚本,就象DOS批处理文件:一组在运行时不需要你的干涉的命令.

FreeBSD装好后有2个shell:csh和sh.Csh比较适合命令行处理,而脚本应该用sh(或bash)来写.可以打命令echo $SHELL来查看你用的是什么shell.

Csh shell是不错的,但是tcsh能做的要比csh能做的要多.它允许你用方向键调用历史命令而且还能对历史命令进行编辑.tcsh还允许你用tab键补齐文件名(csh用esc键),用 cd -命令可以切换到上一次你所在的目录.除此而外,用tcsh切换你的提示符也极其方便.Tcsh是你感到更轻松.

安装一个新的shell分以下3步:

I. 把shell作为一个程序包安装,就象安装别的程序包一样.用rehash和which tcsh(假设你正在安装tcsh)来确保安装正确.
II. 成为root,编辑/etc/shells,为新的shell添加一行,就本例而言,应该为/usr/local/bin/tcsh, 存盘.(有的程序包也许会自动完成.)
III. 用chsh命令把你的shell永久的改为tcsh,或者在提示符下打tcsh更改你的shell,不用重新登录.
注意:对于FreeBSD较早的版本和大部分的Unix,把root的shell改为除sh或csh之外别的什么shell可能回带来危险;因为当系统进入单用户模式后,你的shell可能运行不起来.解决办法是用su -m成为root,这样tcsh就成为你作为root时候的shell了,因为shell是环境的一部分.把下面的别名加到你的.tcshrc文件中后上述情况就一直如此了:
alias su su -m.
当tcsh启动时,它会和csh一样样去读取/etc/csh.cshrc和/etc/csh.login.还会读取你主目录中的.login和.cshrc文件,除非你的目录中有.tcshrc文件.你可以干脆把.cshrc拷贝到.tcshrc.

这样你就把tcsh安装好了,可以修改提示符了.你可以查看手册中有关tcsh的细节.把下面这行放到你的.tcshrc中后,你就可以知道你打了多少命令、现在几点钟和当前所在目录.如果你是普通用户,还有一个>;如果你是root,就是#.Tcsh在任何情况下都能做到:
set prompt = %h %t %~ %#
如果原来有这句话应该放在原来设置提示符的地方;如果找不到的话,就应该在if($?prompt) then后面.注释掉原来的那一行;这样你就总是可以在喜欢的时候切换到老的提示符.别忘记空格和引号.打source .tcshrc来让系统重新读一下.tcshrc文件.你可以用env命令列出已经设置好的别的环境变量.它会显示你默认的编辑器、翻屏、终端类型和其它一些变量.如果你远程登录后不能运行程序,这是因为终端没配置好,可以运行命令setenv TERM vt100.

10. 其它引用:
作为root,用 /sbin/umount /cdrom卸装CDROM,从光驱中取出CDROM,放入另外一张,然后假设cd0a是你光驱的设备名,用 /sbin/mount_cd9660 /dev/cd0a /cdrom安装光驱点.在最近的版本中,要安装光驱点的话,只要打/sbin/mount /cdrom.

如果你的空间不够,可以使用可启动文件系统-第二张FreeBSD CDROM.可启动文件系统CDROM上的内容应版本的不同而有所变化.使用可启动文件系统将牵涉到使用lndir,lndir随X Window系统一起安装,lndir告诉程序到哪里找所需要的文件,因为这些文件在/cdrom目录下而不是通常情况下的/usr目录.阅读一下man lndir.

11. 欢迎提建议引用:
如果你使用这篇教程的话,我想知道哪里说的不清楚、还有哪些你认为应该包括进去的却被遗漏的、还有本教程是否对你有帮助.感谢Eugene W. Stark,计算机科学系的教授,和John Fieber和他具有帮助的注释.

Annelise Anderson, [email protected]
[email protected]
-----------------------------
(C)1999 by China FreeBSD User Group. All rights reserved.
URL:www.cn.freebsd.org
E-Mail:[email protected]
$Date: 1999/12/28 05:40:56 $