# exit
面向 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:
提示符),请键入
只要需要即可。是的,在命令后按 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
用户的权限和风险。
如果您已经创建了一个用户,并且希望该用户能够 su
到 root
,您可以以 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 .cshrc
、cat .login
、cat .profile
。
您将在 .cshrc 中注意到一些 ls
命令的别名(它们非常方便)。您可以通过编辑 .cshrc 创建其他别名。您可以通过将这些别名放在系统范围的 csh
配置文件 /etc/csh.cshrc 中,使所有系统用户都可以使用它们。
4. 获取帮助和信息
以下是一些有用的帮助来源。文本代表您键入的内容 - 通常是命令或文件名。
apropos 文本
whatis 数据库
中包含字符串 文本 的所有内容。man 文本
文本 的手册页。UNIX® 系统的主要文档来源。
man ls
将告诉您使用ls
的所有方法。按 Enter 移动文本,Ctrl+B 向后退一页,Ctrl+F 向前移动,q 或 Ctrl+C 退出。which 文本
告诉您在用户的路径中找到命令 文本 的位置。
locate 文本
找到字符串 文本 的所有路径。
whatis 文本
告诉您命令 文本 的功能及其手册页。键入
whatis *
将告诉您有关当前目录中所有二进制文件的信息。whereis 文本
查找文件 文本,并给出其完整路径。
您可能希望尝试对一些常见的实用命令使用 whatis
,例如 cat
、more
、grep
、mv
、find
、tar
、chmod
、chown
、date
和 script
。more
允许您像在 DOS 中一样一次读取一页,例如 ls -l | more
或 more 文件名
。* 用作通配符,例如 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 目录中;您将需要 su
到 root
才能更改它们。您可以使用简单的 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
在光标后插入文本
键入 i
或 a
后,您可以输入文本。 Esc 将您带回命令模式,您可以在其中键入
:w
将更改写入磁盘并继续编辑
:wq
写入并退出
:q!
不保存更改退出
/text
将光标移动到 text;
/
Enter(回车键)查找 text 的下一个实例。G
转到文件末尾
nG
转到文件中的第 n 行,其中 n 是一个数字
- Ctrl+L
重新绘制屏幕
- Ctrl+b 和 Ctrl+f
像
more
和view
一样,向前和向后翻页。
在您的主目录中使用 vi
进行练习,方法是使用 vi filename
创建一个新文件,并添加和删除文本,保存文件,然后再次调用它。vi
会带来一些惊喜,因为它确实非常复杂,有时您会无意中发出一个命令,执行一些您不期望的操作。(有些人实际上喜欢 vi
——它比 DOS EDIT 更强大——了解 :r
。)当遇到问题时,使用 Esc 一次或多次以确保您处于命令模式,然后从那里继续操作,使用 :w
经常保存,并在需要时使用 :q!
退出并重新开始(从上次 :w
开始)。
现在您可以 cd
到 /etc,su
到 root
,使用 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/index、cdrom/packages/index.txt 和 cdrom/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(使用 cat
或 more
或 view
)以了解要转到哪里(主分发站点)获取文件以及其名称。(使用二进制文件传输!)然后返回到 /usr/local/kermit,找到包含 Makefile 的目录,然后键入 make all install
。
8. 您的工作环境
您的 shell 是您工作环境中最重要的部分。shell 用于解释您在命令行中键入的命令,从而与操作系统的其余部分通信。您还可以编写 shell 脚本,即一系列无需干预即可运行的命令。
FreeBSD 预装了两个 shell:csh
和 sh
。csh
适用于命令行工作,但脚本应使用 sh
(或 bash
)编写。您可以通过键入 echo $SHELL
来查看您使用的 shell。
csh
shell 还可以,但 tcsh
拥有 csh
的所有功能,并且功能更强大。它允许您使用箭头键调用命令并编辑它们。它具有文件名制表符键补全功能(csh
使用 Esc),并且允许您使用 cd -
切换到您上次所在的目录。使用 tcsh
修改提示符也更容易。它使生活更轻松。
以下是安装新 shell 的三个步骤
像安装任何其他端口或软件包一样,将 shell 作为端口或软件包安装。
使用
chsh
将您的 shell 永久更改为tcsh
,或者在提示符处键入tcsh
以更改您的 shell,而无需重新登录。
在 FreeBSD 的早期版本和许多其他版本的 UNIX® 上,将 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修改