FreeBSD 常用命令速查与详解
FreeBSD 是 UNIX 的一个分支,它的命令体系自然也继承自 UNIX 家族。如果你之前接触过 UNIX 系统,转到 FreeBSD 后会感觉非常亲切——绝大多数命令的用法和参数都似曾相识。下面这份清单整理了 FreeBSD 下最常用的命令,从日常文件操作到系统管理、网络诊断、进程控制,基本覆盖了日常工作的方方面面。每个命令都配有简要说明和典型示例,适合作为手边的快速参考。
基础文件与目录操作
man — 在线查询手册
执行格式:man [指令名称]
说明:man 是 manual 的缩写。在 FreeBSD 下遇到不熟悉的指令,直接 man 就能看到详尽的使用说明。
示例:man ls 查看 ls 指令的用法、语法和参数。
ls — 查看目录与文件
执行格式:ls [参数] [路径]
常用参数:
-a 列出全部文件(包括以 . 开头的隐藏文件)
-l 显示详细数据(权限、所有者、大小、修改时间等)
-t 按最后修改时间排序
-F 在文件名后附加类型标记(/ 表示目录,* 表示可执行,@ 表示链接)
-R 递归显示子目录内容
-C 默认按字母顺序上下列出
示例:ls -al 列出现目录下的所有文件及详细属性。如果输出超过一屏,可以配合管道使用 ls -al | more 或 ls -al | less 分页显示。
cd — 切换工作目录
执行格式:cd [目录名称]
说明:和 DOS 下的 cd 用法类似,注意 UNIX 区分大小写。
特殊目录:. 自身目录,.. 上一层父目录,~ 当前用户的根目录(即 home 目录)。
示例:cd /usr/local/apache 切换到指定目录;cd ~ 回到用户根目录。
pwd — 显示当前工作路径
执行格式:pwd
说明:print working directory 的缩写,告诉你当前身处哪个目录下。
mkdir — 建立新目录
执行格式:mkdir [新目录名称]
说明:和 DOS 的 md 类似,但需要拥有目标目录的写入权限。
参数 -p:一次创建多层目录。
示例:mkdir -p /dir2/dir3/ 在当前目录下同时建立 dir2 和 dir2/dir3 两个目录。
rmdir — 删除空目录
执行格式:rmdir [空目录名称]
说明:只能删除空目录(目录下没有文件和子目录时才能删除)。
示例:rmdir dir1 删除 dir1 目录。
mv — 移动或重命名文件/目录
执行格式:mv [来源] [目标]
说明:相当于 DOS 下的 move 和 ren 的组合。既可以移动位置,也可以改名。
示例:mv dir1 ../ 把 dir1 目录移动到上一层目录。
cp — 复制文件或目录
执行格式:cp [参数] [来源] [目标]
常用参数:
-R 递归拷贝整个目录(包括子目录)
-p 尽可能保留原文件的属性(权限、时间戳等)
-f 强制覆盖,不提示确认
-I 交互模式,覆盖前询问
示例:cp -R dir1 dir2 复制整个目录。如果 dir2 已存在,则 dir1 整个被复制到 dir2 下(dir2/dir1);如果 dir2 不存在,则相当于将 dir1 复制并命名为 dir2。
rm — 删除文件或目录
执行格式:rm [参数] 文件或目录
说明:删除操作在 FreeBSD 下不可撤销,务必小心。
常用参数:
-r 递归删除,用于删除目录及其内容
-f 强制删除,不提示确认
-I 交互删除,逐个确认
示例:rm -rf dir 强制删除 dir 目录及其所有子目录和文件(请谨慎使用)。
ln — 建立链接文件
执行格式:ln [参数] [来源文件] [目标文件]
说明:类似 Windows 下的快捷方式。硬链接(默认)使两个文件指向同一个 inode,内容共享;符号链接(-s)则是一个指向源文件路径的特殊文件。
示例:ln -s /usr/local/apache/etc/httpd.conf /etc/httpd.conf 建立符号链接,方便访问深层目录下的配置文件。
cat, more, less — 查看文本文件内容
cat:拼接并显示文件内容,无分页功能。示例:cat file1 显示 file1 内容;cat file1 file2 > file3 合并两个文件并输出到 file3。
more:分页显示,按空格键翻页,按 Q 退出。
less:比 more 更灵活,支持方向键上下滚动,按 Enter 逐行查看,按空格翻页,按 B 回退一页,按 Q 退出。示例:less /etc/csh.cshrc。
clear — 清理屏幕
执行格式:clear
相当于 DOS 的 cls。
文件查找:whereis, locate, find
whereis:查找命令的二进制文件、源代码和手册页位置。示例:whereis ln
locate:根据文件名或目录名中包含的关键字列出所有匹配项。示例:locate ln
find:功能强大的搜索工具,从指定目录开始递归搜索,支持按名称、大小、属性等条件。常用参数:-name 按文件名模式匹配,-print 显示路径,-ls 显示详细信息,-exec cmd 对搜索到的文件执行指令。示例:find /etc -name "*.conf" -ls 列出 /etc 下所有 .conf 文件的详细信息;find / -name "test" -print | xargs rm -f 从根目录查找名为 test 的文件并删除。
文件权限与所有权管理
chmod — 改变文件权限
执行格式:chmod [权限参数] [文件或目录]
使用者:文件所有者或 root。
说明:文件权限表示为十个小格,第一格是文件类型,第2-4格为所有者(u)权限,第5-7格为所属组(g)权限,第8-10格为其他用户(o)权限。基本权限:r(读)、w(写)、x(执行)。可以用符号模式:+ 增加权限,- 删除权限,= 设置权限。
示例:chmod u+rwx file1 让所有者对 file1 拥有读写执行权限;chmod a+rwx file1 所有用户都可读写执行;chmod -R 755 /usr/local/etc 将目录及其下所有文件权限设为 rwxr-xr-x。
chown — 改变文件所有者
执行格式:chown [参数] [所有者.组] [文件或目录]
使用者:root。
说明:FreeBSD 下只有 root 才能更改文件的所有者。
参数 -R 递归更改目录下所有文件。
示例:chown -R mmk:wheel /usr/local/etc 将目录所有者改为 mmk,组改为 wheel。
chgrp — 改变文件所属组
执行格式:chgrp [参数] [新组名] [文件或目录]
使用者:root。
说明:与 chown 功能重叠,chown 可以直接同时修改所有者和组。示例:chgrp -R teacher word 将 word 的所属组改为 teacher。
磁盘与文件系统管理
df — 查看磁盘可用空间
执行格式:df [参数]
说明:显示各分区的磁盘空间使用情况。可用 -k 以 KB 为单位显示。
示例:df -k 查看当前分区空间占用。
du — 查看目录或文件占用的磁盘空间
执行格式:du [参数] [目录或文件]
常用参数:-a 列出每个文件占用的空间,-k 以 KB 为单位。
示例:du -sh 显示当前目录的总占用空间(-s 汇总,-h 以可读单位显示)。
mount — 挂载文件系统
执行格式:mount [参数] [设备] [挂载点]
使用者:root。
说明:用于挂载 UFS、MSDOSFS(FAT)、CD9660(光盘)、NFS 等文件系统。
常用选项:-t 指定类型,-o rw/ro 读写/只读,-o async 异步写入(效率高但风险稍大),-o sync 同步写入(默认),-o nodev 禁止设备节点,-o noexec 禁止执行文件,-o nosuid 忽略 setuid/setgid,-o userquota/groupquota 启用配额。
示例:mount -t cd9660 /dev/cd0a /cdrom 挂载光盘到 /cdrom;mount -o async,userquota /dev/wd0slg /home 挂载 /home 并启用异步写入和用户配额。
umount — 卸载文件系统
执行格式:umount [挂载点]
使用者:root。
说明:如果提示 device busy,说明有进程正在使用该挂载点下的文件,退出相关进程或离开该目录后再试。示例:umount /cdrom 卸载光盘后才能弹出。
fsck — 文件系统检查与修复
执行格式:fsck [参数]
说明:用于检查并修复文件系统错误。示例:fsck -y 自动回答 yes 进行修复。
压缩与归档
gzip / gunzip — 压缩/解压 .gz 文件
执行格式:gzip [参数] 文件名,gunzip [参数] 文件名
常用参数:-1 快速压缩,-9 最佳压缩,-r 递归压缩目录,-d 解压缩。
示例:gzip -1 file1 快速压缩;gzip -9 -r t1/ 最佳压缩整个 t1 目录;gunzip file1.gz 解压。
扩展:zcat file1.gz 无需解压即可查看压缩文件内容。
compress / uncompress — 压缩/解压 .Z 文件
执行格式:compress [参数] 文件名,uncompress [参数] 文件名
示例:compress -v file1 压缩并显示比例;uncompress -v file1.Z 解压。
tar — 归档与压缩结合
执行格式:
创建归档并压缩:tar czvf 压缩文件名.tar.gz 目录名
参数说明:c 创建,z 通过 gzip 压缩,v 显示过程,f 指定文件名。
解压缩:tar zxvf 压缩文件名.tar.gz
其他用法:tar rvf book.tar 文件 将新文件追加到归档中;tar Zcvf book.tar.Z /home/book/ 用 compress 压缩归档。
示例:tar zcvf book.tar.gz /home/book/ 将 /home/book 目录打包并压缩;tar zxvf book.tar.gz 解压到当前目录。
进程管理
ps — 查看进程状态
执行格式:ps [参数]
说明:不加参数只显示当前用户自己的进程。常用参数组合:ps -aux 显示所有进程的详细信息(用户、PID、CPU%、内存%、虚拟大小、驻留内存、终端、状态、开始时间、CPU 使用时间、命令)。
状态标识:R(可执行)、D(磁盘等待)、I(短睡眠)、S(睡眠)、T(停止)、Z(僵尸)。附加标志如 +(前台进程)、s(会话组长)等。
示例:ps -aux | grep apache 查看 Apache 相关进程。
top — 实时显示进程资源排名
执行格式:top [参数]
说明:类似 Windows 的任务管理器,持续更新显示 CPU、内存使用率最高的进程。
示例:top 3 显示 CPU 占用前三的进程。
kill — 终止进程或发送信号
执行格式:kill [信号] PID
说明:只有进程所有者才能 kill 自己的进程。常用信号:-HUP 重载配置,-9 强制终止。
示例:kill -9 928 强制杀死 PID 为 928 的进程;kill -HUP 228 让进程 228 重新读取配置文件。
进程前台后台控制
在命令后加 & 将进程放入后台执行,例如 gzip -9 -r test/ &。
jobs 列出后台进程;fg %n 将编号为 n 的后台任务切换到前台;bg %n 重启停止的后台任务;Ctrl+Z 停止前台进程。
注意:ps 显示 PID,jobs 显示作业编号。
用户与组管理
adduser — 新增用户
执行格式:adduser
使用者:root。
说明:交互式向导,逐步引导创建新用户,比直接编辑密码文件更安全。
rmuser — 删除用户
执行格式:rmuser 用户名
使用者:root。
示例:rmuser mmk 然后按提示确认删除用户和其根目录。
vipw — 编辑用户账户文件
执行格式:vipw
说明:直接编辑 /etc/passwd 和 /etc/shadow,vipw 会锁定文件防止冲突。
passwd — 修改密码
执行格式:passwd [用户名]
说明:普通用户只能改自己的密码,root 可以改任何用户的密码。
su — 切换用户身份
执行格式:su [-] username
说明:set uid,切换为其他用户身份。要想切换为 root,用户必须属于 wheel 组并输入 root 密码。
示例:su - root 切换到 root 并加载环境变量。
chsh — 改变用户使用的 shell
执行格式:chsh
说明:交互式修改默认 shell。
chfn — 改变用户信息
执行格式:chfn
说明:设置用户的基本信息(如全名、办公电话等)。
用户组管理
文件:/etc/group
直接编辑该文件即可添加或修改组。格式:组名称:密码:组ID:属于该组的用户列表。组 ID 建议从 10000 开始(0-99 为系统保留)。
网络诊断与管理
ifconfig — 网络接口配置
执行格式:ifconfig [参数] [接口]
说明:ifconfig -a 查看所有网络接口参数;ifconfig de0 192.168.1.10 netmask 255.255.255.0 设置 IP 和掩码;ifconfig de0 down 关闭接口;ifconfig de0 up 启动接口。
route — 路由表操作
执行格式:route [操作] [参数]
示例:route change default 192.168.1.254 修改默认网关。
traceroute — 追踪路由路径
执行格式:traceroute [主机名或IP]
说明:显示到目标主机所经过的每一跳路由器,用于定位网络故障。
ping — 测试网络连通性
执行格式:ping [参数] [主机名或IP]
常用参数:-c 次数 指定发包次数,-s 字节 指定包大小。
示例:ping -c 10 -s 1200 whyno.org 发送 10 个 1200 字节的包。
netstat — 显示网络状态
常用选项:
netstat -rn 查看路由表(-r 路由,-n 数字格式)
netstat -I 查看接口流量统计
netstat -t 查看 TCP 连接
netstat -a 查看所有连接
arp — 显示 IP 与 MAC 地址对照表
执行格式:arp [参数]
示例:arp -a 列出所有 ARP 条目。
fetch — 获取远程文件
执行格式:fetch [参数] [URL]
说明:比 ftp 更方便,直接通过 http 或 ftp 协议下载文件。
示例:fetch ftp://ftp.center.kl.edu.tw/pub/FreeBSD/test.tgz 下载文件;fetch -o test https://example.com/file 重命名保存。
系统关机与重启
sync — 同步磁盘数据
执行格式:sync
说明:强制将内存中的缓存数据写回硬盘,防止数据丢失。
reboot — 立即重启系统
执行格式:reboot
说明:虽然 reboot 会自动调用 sync,但最好在之前手动执行几次 sync。
示例:sync; sync; sync; reboot
shutdown — 通知用户并关机/重启
执行格式:shutdown [参数] [时间] [警告信息]
使用者:root。
常用参数:-h 关机(halt),-r 重启(reboot),-k 假装关机(仅发警告)。时间格式:now,+3(3分钟后),21:00(指定时间)。
示例:shutdown -h now 立即关机;shutdown -r +10 "系统将在10分钟后重启" 广播消息后重启。
halt — 关闭系统
执行格式:halt
说明:直接停止系统,不自动重启。
init 0 — 直接关机
执行格式:init 0
说明:切换到运行级别 0 实现关机。
其他实用命令与技巧
crontab — 定时任务
执行格式:crontab [参数]
说明:编辑 cron 配置文件,按时间周期执行任务。
常用参数:-e 编辑,-d 删除,-l 列出。
编写格式:分 时 日 月 星期 用户 命令(注意字段间空格)。
示例:1 0 * * * root /home/word.sh 每天凌晨1点执行脚本。
grep — 在文件中搜索字符串
执行格式:grep [字符串] [文件]
说明:搜索文件内容中匹配的行。
示例:grep whyno.org * 在当前目录所有文件中查找包含 whyno.org 的行。
指令合并与换行
使用分号 ; 可在一行内顺序执行多条命令,例如:command A; command B; command C。
如果命令太长,可以在行末加反斜杠 \ 换行继续输入,例如:
pkg_add ftp://whyno.org/freebsd/packages/net/ \
ncftp-2.4.3.tgz
将 man page 转为文本文件
执行格式:man 命令 | col -b > 文件名
说明:man 输出包含控制字符,用 col -b 过滤后保存为纯文本。
示例:man fetch | col -b > fetch.txt
组合命令的小技巧
在 vi 或 less 中,shift+g 跳到文件末尾(类似 End 键);在 vi 中 :/ 用于搜索文本;:find 可以搜索文件(需设置路径)。
以上命令基本覆盖了 FreeBSD 日常使用中的核心操作。建议在实际操作时多结合 man 手册来深入理解每个命令的更多参数和细节。
