面向 FreeBSD 和 UNIX® 新手

商标

FreeBSD 是 FreeBSD 基金会的注册商标。

IBM、AIX、OS/2、PowerPC、PS/2、S/390 和 ThinkPad 是国际商用机器公司在美国、其他国家/地区或两者的商标。

Microsoft、IntelliMouse、MS-DOS、Outlook、Windows、Windows Media 和 Windows NT 都是 Microsoft Corporation 在美国和/或其他国家/地区的注册商标或商标。

Motif、OSF/1 和 UNIX 是注册商标,IT DialTone 和 The Open Group 是 The Open Group 在美国和其他国家/地区的商标。

制造商和销售商用来区分其产品的许多名称都被声明为商标。在本文档中出现这些名称的地方,如果 FreeBSD 项目知道商标声明,则这些名称后面会加上“™”或“®”符号。

摘要

恭喜您安装 FreeBSD!本简介面向 FreeBSD 和 UNIX® 新手,因此从基础知识开始。


1. 登录和退出

登录(当您看到 login: 时)作为您在安装过程中创建的用户或作为 root 用户登录。(您的 FreeBSD 安装将已有一个 root 账户;该账户可以访问任何位置并执行任何操作,包括删除基本文件,因此请小心!)以下内容中的 % 和 # 代表提示符(您的提示符可能不同),其中 % 表示普通用户,# 表示 root 用户。

要注销(并获得新的 login: 提示符),请键入

# exit

只要需要即可。是的,在命令后按 enter,并记住 UNIX® 区分大小写 - exit,而不是 EXIT

要关闭机器,请键入

# /sbin/shutdown -h now

或要重新启动,请键入

# /sbin/shutdown -r now

# /sbin/reboot

您也可以使用 Ctrl+Alt+Delete 重新启动。请稍等片刻以完成其工作。这相当于 FreeBSD 最新版本中的 /sbin/reboot,并且比按下重置按钮好得多。您不希望重新安装此系统,对吧?

2. 添加具有 root 权限的用户

如果您在安装系统时未创建任何用户,因此以 root 用户身份登录,您现在应该使用以下命令创建一个用户:

# adduser

第一次使用 adduser 时,它可能会要求您保存一些默认值。如果它建议 sh 作为默认值,您可能希望将默认 shell 设置为 csh(1) 而不是 sh(1)。否则,只需按 Enter 键接受每个默认值。这些默认值保存在 /etc/adduser.conf 中,这是一个可编辑的文件。

假设您创建了一个名为 jack 的用户,全名为 Jack Benimble。如果安全(即使是可能在键盘上敲击的周围的孩子)是一个问题,请为 jack 设置密码。当它询问您是否要邀请 jack 加入其他组时,请键入 wheel

Login group is "jack". Invite jack into other groups: wheel

这将使 jack 可以登录并使用 su(1) 命令成为 root 用户。然后,您将不再因以 root 用户身份登录而受到斥责。

您可以随时通过键入 Ctrl+C 退出 adduser,最后您将有机会批准您的新用户或简单地键入 n 表示否。您可能希望创建一个第二个新用户,以便在编辑 `jack` 的登录文件时,如果出现问题,您将有一个备用用户。

完成此操作后,使用 exit 返回到登录提示符并以 jack 用户身份登录。通常,最好尽可能以普通用户身份执行尽可能多的工作,普通用户不具有 root 用户的权限和风险。

如果您已经创建了一个用户,并且希望该用户能够 suroot,您可以以 root 用户身份登录并编辑文件 /etc/group,将 jack 添加到第一行(wheel 组)。但首先,您需要练习 vi(1) 文本编辑器,或者使用更简单的文本编辑器 ee(1)(在 FreeBSD 的最新版本中安装)。

要删除用户,请使用 rmuser

3. 浏览系统

以普通用户身份登录后,浏览系统并尝试一些命令,这些命令将访问 FreeBSD 中的帮助和信息来源。

以下是一些命令及其功能

id

告诉您您是谁!

pwd

显示您所在的位置 - 当前工作目录。

ls

列出当前目录中的文件。

ls -F

列出当前目录中的文件,在可执行文件后面添加 *,在目录后面添加 /,在符号链接后面添加 @

ls -l

以长格式列出文件 - 大小、日期、权限。

ls -a

与其他文件一起列出隐藏的“点”文件。如果您是 root 用户,则“点”文件无需 -a 开关即可显示。

cd

更改目录。cd .. 向上移动一级;请注意 cd 后面的空格。cd /usr/local 转到该目录。cd ~ 转到登录用户的 home 目录,例如 /usr/home/jack。尝试 cd /cdrom,然后 ls,以确定您的 CDROM 是否已挂载并正在工作。

less 文件名

允许您查看文件(名为 文件名)而不更改它。尝试 less /etc/fstab。键入 q 退出。

cat 文件名

在屏幕上显示 文件名。如果它太长,您只能看到它的结尾,请按 ScrollLock 并使用 up-arrow 向后移动;您也可以在手册页中使用 ScrollLock。再次按 ScrollLock 停止滚动。您可能希望尝试对 home 目录中的一些点文件使用 cat - cat .cshrccat .logincat .profile

您将在 .cshrc 中注意到一些 ls 命令的别名(它们非常方便)。您可以通过编辑 .cshrc 创建其他别名。您可以通过将这些别名放在系统范围的 csh 配置文件 /etc/csh.cshrc 中,使所有系统用户都可以使用它们。

4. 获取帮助和信息

以下是一些有用的帮助来源。文本代表您键入的内容 - 通常是命令或文件名。

apropos 文本

whatis 数据库 中包含字符串 文本 的所有内容。

man 文本

文本 的手册页。UNIX® 系统的主要文档来源。man ls 将告诉您使用 ls 的所有方法。按 Enter 移动文本,Ctrl+B 向后退一页,Ctrl+F 向前移动,qCtrl+C 退出。

which 文本

告诉您在用户的路径中找到命令 文本 的位置。

locate 文本

找到字符串 文本 的所有路径。

whatis 文本

告诉您命令 文本 的功能及其手册页。键入 whatis * 将告诉您有关当前目录中所有二进制文件的信息。

whereis 文本

查找文件 文本,并给出其完整路径。

您可能希望尝试对一些常见的实用命令使用 whatis,例如 catmoregrepmvfindtarchmodchowndatescriptmore 允许您像在 DOS 中一样一次读取一页,例如 ls -l | moremore 文件名。* 用作通配符,例如 ls w* 将显示以 w 开头的文件。

其中一些命令工作不正常吗?locate(1)whatis(1) 都依赖于每周重建的数据库。如果您的机器不会在周末(以及运行 FreeBSD)一直开机,您可能希望偶尔运行每日、每周和每月的维护命令。以 root 用户身份运行它们,并且现在,请让每个命令都完成其工作后再开始下一个命令。

# periodic daily
output omitted
# periodic weekly
output omitted
# periodic monthly
output omitted

如果您厌倦了等待,请按 Alt+F2 获取另一个虚拟控制台,然后再次登录。毕竟,它是一个多用户、多任务系统。尽管如此,这些命令在运行时可能会在屏幕上显示消息;您可以在提示符处键入 clear 以清除屏幕。运行完这些命令后,您可能希望查看 /var/mail/root/var/log/messages

运行此类命令是系统管理的一部分,并且作为 UNIX® 系统的单个用户,您就是您自己的系统管理员。您需要以 root 用户身份执行的几乎所有操作都是系统管理。即使是在那些关于 UNIX® 的大型书籍中,这些责任也没有得到很好的介绍,这些书籍似乎将大量篇幅用于在窗口管理器中拉下菜单。您可能希望获得两本主要的系统管理书籍之一,即 Evi Nemeth 等人的《UNIX 系统管理手册》(Prentice-Hall,1995 年,ISBN 0-13-15051-7) - 带红色封面的第二版;或 Æleen Frisch 的《Essential System Administration》(O’Reilly & Associates,2002 年,ISBN 0-596-00343-9)。我使用了 Nemeth 的书。

5. 编辑文本

要配置您的系统,您需要编辑文本文件。大多数文件都位于 /etc 目录中;您将需要 suroot 才能更改它们。您可以使用简单的 ee,但从长远来看,值得学习 vi 文本编辑器。如果您已安装系统源代码,则 /usr/src/contrib/nvi/docs/tutorial 中有一个关于 vi 的优秀教程。

在编辑文件之前,您可能应该备份它。假设您要编辑 /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(Esc 键)将 vi 置于命令模式。以下是一些命令

x

删除光标所在的字母

dd

删除整行(即使它在屏幕上换行)

i

在光标处插入文本

a

在光标后插入文本

键入 ia 后,您可以输入文本。 Esc 将您带回命令模式,您可以在其中键入

:w

将更改写入磁盘并继续编辑

:wq

写入并退出

:q!

不保存更改退出

/text

将光标移动到 text/ Enter(回车键)查找 text 的下一个实例。

G

转到文件末尾

nG

转到文件中的第 n 行,其中 n 是一个数字

Ctrl+L

重新绘制屏幕

Ctrl+bCtrl+f

moreview 一样,向前和向后翻页。

在您的主目录中使用 vi 进行练习,方法是使用 vi filename 创建一个新文件,并添加和删除文本,保存文件,然后再次调用它。vi 会带来一些惊喜,因为它确实非常复杂,有时您会无意中发出一个命令,执行一些您不期望的操作。(有些人实际上喜欢 vi——它比 DOS EDIT 更强大——了解 :r。)当遇到问题时,使用 Esc 一次或多次以确保您处于命令模式,然后从那里继续操作,使用 :w 经常保存,并在需要时使用 :q! 退出并重新开始(从上次 :w 开始)。

现在您可以 cd/etcsuroot,使用 vi 编辑文件 /etc/group,并将用户添加到 wheel 中,以便用户拥有 root 权限。只需在文件第一行的末尾添加一个逗号和用户的登录名,按 Esc,然后使用 :wq 将文件写入磁盘并退出。立即生效。(您没有在逗号后添加空格,对吧?)

6. 其他有用命令

df

显示文件空间和已挂载的系统。

ps aux

显示正在运行的进程。ps ax 是更窄的形式。

rm filename

删除 filename

rm -R dir

删除目录 dir 和所有子目录——小心!

ls -R

列出当前目录和所有子目录中的文件;我使用了一个变体 ls -AFR > where.txt,在找到更好的查找文件方法之前,获取了 / 和(单独)/usr 中所有文件的列表。

passwd

更改用户的密码(或 root 的密码)

man hier

关于 UNIX® 文件系统的联机帮助页

使用 find/usr 或其任何子目录中查找 filename,方法是

% find /usr -name "filename"

您可以在 "filename"(应加引号)中使用 * 作为通配符。如果您告诉 find/ 而不是 /usr 中搜索,它将在所有已挂载的文件系统(包括 CDROM 和 DOS 分区)中查找文件。

一本解释 UNIX® 命令和实用程序的优秀书籍是 Abrahams & Larson 的《Unix for the Impatient》(第 2 版,Addison-Wesley,1996)。互联网上也有大量关于 UNIX® 的信息。

7. 下一步

您现在应该拥有了在系统中移动和编辑文件所需的工具,因此您可以使一切正常运行。FreeBSD 手册(可能在您的硬盘驱动器上)和 FreeBSD 的网站 中包含大量信息。各种软件包和端口都在 CDROM 和网站上。手册告诉您更多关于如何使用它们的信息(如果存在,则获取软件包,使用 pkg add packagename,其中 packagename 是软件包的文件名)。CDROM 在 cdrom/packages/indexcdrom/packages/index.txtcdrom/ports/index 中列出了软件包和端口及其简要说明,并在 /cdrom/ports/*/*/pkg/DESCR 中提供了更完整的说明,其中 * 代表程序类型和程序名称的子目录。

如果您发现手册在从 CDROM 安装端口方面过于复杂(例如 lndir 等),以下方法通常有效

找到您想要的端口,例如 kermit。CDROM 上将有一个相应的目录。使用以下命令将子目录复制到 /usr/local(一个适合您添加的软件的良好位置,这些软件应该对所有用户可用):

# cp -R /cdrom/ports/comm/kermit /usr/local

这应该会生成一个 /usr/local/kermit 子目录,其中包含 CDROM 上 kermit 子目录中的所有文件。

接下来,如果 /usr/ports/distfiles 不存在,请使用 mkdir 创建它。现在检查 /cdrom/ports/distfiles 中是否有文件,其名称表明它是您想要的端口。将该文件复制到 /usr/ports/distfiles;在较新的版本中,您可以跳过此步骤,因为 FreeBSD 会为您执行此操作。对于 kermit,没有 distfile。

然后 cd/usr/local/kermit 中包含文件 Makefile 的子目录。键入

# make all install

在此过程中,端口将通过 FTP 获取它在 CDROM 或 /usr/ports/distfiles 中找不到的任何压缩文件。如果您尚未运行网络,并且 /cdrom/ports/distfiles 中没有该端口的文件,则您必须使用另一台机器获取 distfile 并将其复制到 /usr/ports/distfiles。阅读 Makefile(使用 catmoreview)以了解要转到哪里(主分发站点)获取文件以及其名称。(使用二进制文件传输!)然后返回到 /usr/local/kermit,找到包含 Makefile 的目录,然后键入 make all install

8. 您的工作环境

您的 shell 是您工作环境中最重要的部分。shell 用于解释您在命令行中键入的命令,从而与操作系统的其余部分通信。您还可以编写 shell 脚本,即一系列无需干预即可运行的命令。

FreeBSD 预装了两个 shell:cshshcsh 适用于命令行工作,但脚本应使用 sh(或 bash)编写。您可以通过键入 echo $SHELL 来查看您使用的 shell。

csh shell 还可以,但 tcsh 拥有 csh 的所有功能,并且功能更强大。它允许您使用箭头键调用命令并编辑它们。它具有文件名制表符键补全功能(csh 使用 Esc),并且允许您使用 cd - 切换到您上次所在的目录。使用 tcsh 修改提示符也更容易。它使生活更轻松。

以下是安装新 shell 的三个步骤

  1. 像安装任何其他端口或软件包一样,将 shell 作为端口或软件包安装。

  2. 使用 chsh 将您的 shell 永久更改为 tcsh,或者在提示符处键入 tcsh 以更改您的 shell,而无需重新登录。

在 FreeBSD 的早期版本和许多其他版本的 UNIX® 上,将 root 的 shell 更改为除 shcsh 之外的其他 shell 可能很危险;当系统将您置于单用户模式时,您可能无法使用工作 shell。解决方法是使用 su -m 成为 root,这将为您提供 tcsh 作为 root,因为 shell 是环境的一部分。您可以通过将其添加到您的 .tcshrc 中作为别名来使其永久生效:

alias su su -m

tcsh 启动时,它将读取 /etc/csh.cshrc/etc/csh.login 文件,就像 csh 一样。它还将读取您主目录中的 .login.cshrc,除非您提供 .tcshrc。您可以通过简单地将 .cshrc 复制到 .tcshrc 来实现。

现在您已安装了 tcsh,您可以调整提示符。您可以在 tcsh 的联机帮助页中找到详细信息,但以下是一行要放入 .tcshrc 中的内容,它将告诉您键入了多少个命令、当前时间以及您所在的目录。它还会在您是普通用户时生成 >,在您是 root 时生成 #,但 tsch 在任何情况下都会这样做

set prompt = "%h %t %~ %# "

如果存在,则应将其放在现有的 set prompt 行的相同位置,或者在“if($?prompt) then”下,如果不存在则放在此处。注释掉旧行;如果您更喜欢旧行,您可以随时切换回旧行。不要忘记空格和引号。您可以通过键入 source .tcshrc 来重新读取 .tcshrc

您可以在提示符下键入env来获取已设置的其他环境变量的列表。结果将显示您的默认编辑器、分页器和终端类型,以及可能还有许多其他变量。如果您从远程位置登录并且由于终端功能不足而无法运行程序,则一个有用的命令是setenv TERM vt100

9. 其他

作为root用户,您可以使用/sbin/umount /cdrom卸载 CDROM,将其从驱动器中取出,插入另一个 CDROM,然后使用/sbin/mount_cd9660 /dev/cd0a /cdrom挂载它,假设 cd0a 是 CDROM 驱动器的设备名称。FreeBSD 的最新版本允许您仅使用/sbin/mount /cdrom挂载 CDROM。

如果您空间有限,使用活动文件系统(FreeBSD 的第二个 CDROM 磁盘)非常有用。活动文件系统中的内容在不同版本之间有所不同。您可以尝试从 CDROM 播放游戏。这涉及使用lndir(随 X Window System 一起安装)来告诉程序在哪里查找必要的文件,因为它们位于/cdrom而不是/usr及其子目录中,而程序期望它们位于这些目录中。阅读man lndir

10. 欢迎评论

如果您使用本指南,我将很乐意了解哪些地方不清楚,哪些内容遗漏了但您认为应该包含,以及它是否有帮助。感谢 SUNY-Stony Brook 计算机科学教授 Eugene W. Stark 和 John Fieber 提供的宝贵意见。

Annelise Anderson,andrsn@andrsn.stanford.edu


上次修改时间:2021 年 11 月 3 日,由Sergio Carlavilla Delgado修改