BusyBox - 嵌入式 Linux 的瑞士军刀
语法
busybox <applet> [参数...] # 或
<applet> [参数...] # 如果是符号链接
描述
BusyBox 将许多常用 UNIX 工具的精简版本组合到一个小的可执行文件中。它提供了对 GNU coreutils、util-linux 等中大多数工具的简约替代方案。BusyBox 中的工具通常比其功能齐全的 GNU 对应工具具有更少的选项;但是,包含的选项提供了预期的功能,并且其行为与 GNU 对应工具非常相似。
BusyBox 旨在优化大小和有限的资源。它也具有高度的模块化,因此您可以轻松地在编译时包含或排除命令(或功能)。这使得定制您的嵌入式系统变得容易。要创建一个可用的系统,只需添加 /dev、/etc 和 Linux 内核即可。BusyBox 为任何小型或嵌入式系统提供了相当完整的 POSIX 环境。
BusyBox 具有高度的可配置性。这使您可以仅包含所需组件,从而减小二进制文件的大小。运行“make config”或“make menuconfig”以选择要启用的功能。然后运行“make”以使用您的配置编译 BusyBox。
编译完成后,您应该使用“make install”来安装 BusyBox。这将安装目标目录中指定的 CONFIG_PREFIX 中的“bin/busybox”二进制文件。可以在配置 BusyBox 时设置 CONFIG_PREFIX,也可以在安装时指定其他位置(例如,使用类似于“make CONFIG_PREFIX=/tmp/foo install”的命令行)。如果您启用了任何小应用程序安装方案(无论是作为符号链接还是硬链接),这些也将安装在 CONFIG_PREFIX 指向的位置中。
用法
BusyBox 是一个多调用二进制文件。多调用二进制文件是一个可执行程序,它执行与一个以上的实用程序相同的任务。这意味着只有一个 BusyBox 二进制文件,但该单个二进制文件充当大量实用程序。这使得 BusyBox 能够更小,因为所有内置的实用程序(我们称之为小应用程序)可以共享许多常见操作的代码。
您还可以通过在命令行中将命令作为参数来调用 BusyBox。例如,输入
/bin/busybox ls
也会导致 BusyBox 表现为“ls”。
当然,将“/bin/busybox”添加到每个命令会很麻烦。因此,大多数人将通过使用指向 BusyBox 二进制文件的链接来调用 BusyBox。
例如,输入
ln -s /bin/busybox ls
./ls
将会使 BusyBox 表现为 'ls'(如果 'ls' 命令已编译到 BusyBox 中)。
通常情况下,您不需要自己创建所有这些链接,因为当您运行 'make install' 命令时,BusyBox 的构建系统会为您完成此操作。
如果您不带任何参数调用 BusyBox,它将提供一个已编译到您的 BusyBox 二进制文件中的小程序列表。
常用选项
大多数 BusyBox 小程序都支持 --help 参数,以提供对其运行时行为的简要说明。如果启用了 CONFIG_FEATURE_VERBOSE_USAGE 选项,还将提供更详细的使用信息。
命令
当前可用的小程序包括:
[, [[, acpid, adjtimex, ar, arch, arp, arping, ascii, ash, awk,
base64, basename, bc, blkdiscard, blkid, blockdev, brctl, bunzip2,
bzcat, bzip2, cal, cat, chattr, chgrp, chmod, chown, chroot, chvt,
clear, cmp, cp, cpio, crc32, crond, crontab, cttyhack, cut, date,
dc, dd, deallocvt, depmod, devmem, df, diff, dirname, dmesg,
dnsdomainname, dos2unix, dpkg, dpkg-deb, du, dumpkmap, dumpleases,
echo, ed, egrep, env, expand, expr, factor, fallocate, false,
fatattr, fdisk, fgrep, find, findfs, fold, free, freeramdisk,
fsfreeze, fstrim, ftpget, ftpput, getfattr, getopt, getty, grep,
groups, gunzip, gzip, halt, head, hexdump, hostid, hostname, httpd,
hwclock, i2cdetect, i2cdump, i2cget, i2cset, i2ctransfer, id,
ifconfig, ifdown, ifup, init, insmod, install, ionice, ip, ipcalc,
kill, killall, klogd, last, less, link, linux32, linux64, linuxrc,
ln, loadfont, loadkmap, logger, login, logname, logread, losetup,
ls, lsattr, lsmod, lsscsi, lzcat, lzma, lzop, md5sum, mdev,
microcom, mim, mkdir, mkdosfs, mke2fs, mkfifo, mknod, mkpasswd,
mkswap, mktemp, modinfo, modprobe, more, mount, mt, mv, nameif,
nbd-client, nc, netstat, nl, nologin, nproc, nsenter, nslookup,
nuke, od, openvt, partprobe, passwd, paste, patch, pidof, ping,
ping6, pivot_root, poweroff, printf, ps, pwd, rdate, readlink,
realpath, reboot, renice, reset, resume, rev, rm, rmdir, rmmod,
route, rpm, rpm2cpio, run-init, run-parts, sed, seq, setkeycodes,
setpriv, setsid, sh, sha1sum, sha256sum, sha3sum, sha512sum, shred,
shuf, sleep, sort, ssl_client, start-stop-daemon, stat, strings,
stty, su, sulogin, svc, svok, swapoff, swapon, switch_root, sync,
sysctl, syslogd, tac, tail, tar, taskset, tc, tee, telnet, test,
tftp, time, timeout, top, touch, tr, traceroute, traceroute6, true,
truncate, ts, tty, tunctl, ubirename, udhcpc, udhcpc6, udhcpd,
uevent, umount, uname, uncompress, unexpand, uniq, unix2dos, unlink,
unlzma, unshare, unxz, unzip, uptime, usleep, uudecode, uuencode,
vconfig, vi, w, watch, watchdog, wc, wget, which, who, whoami,
xargs, xxd, xz, xzcat, yes, zcat
命令描述
acpid
acpid [-df] [-c CONFDIR] [-l LOGFILE] [-a ACTIONFILE] [-M MAPFILE] [-e PROC_EVENT_FILE] [-p
PIDFILE]
监听 ACPI 事件并在事件发生时启动特定的辅助程序。
-d 将日志记录到标准错误输出,而不是日志文件(暗示 -f)
-f 在前台运行
-c DIR 配置文件目录 [/etc/acpi]
-e FILE /proc 事件文件 [/proc/acpi/event]
-l FILE 日志文件 [/var/log/acpid.log]
-p FILE PID 文件 [/var/run/acpid.pid]
-a FILE 操作文件 [/etc/acpid.conf]
-M FILE 映射文件 [/etc/acpi.map]
接受并忽略兼容性选项 -g -m -s -S -v
adjtimex
adjtimex [-q] [-o OFS] [-f FREQ] [-p TCONST] [-t TICK]
读取或设置内核时间变量。请参阅 adjtimex(2)
-q 安静模式
-o OFF 时间偏移,微秒
-f FREQ 频率调整,整数内核单位(65536 相当于 1ppm)
-t TICK 每秒微秒数,通常为 10000
(正的 -t 或 -f 值会使时钟运行更快)
-p TCONST
ar ar x|p|t [-ov] 归档文件 [文件]...
从 ar 归档文件中提取或列出文件
x 提取
p 提取到标准输出
t 列出
-o 恢复修改时间
-v 详细模式
arch
arch
打印系统架构
arp arp [-vn] [-H HWTYPE] [-i IF] -a [主机名] [-v] [-i IF] -d 主机名 [pub]
[-v] [-H HWTYPE] [-i IF] -s 主机名 HWADDR [temp] [-v] [-H HWTYPE] [-i IF] -s HOSTNAME
HWADDR [netmask MASK] pub [-v] [-H HWTYPE] [-i IF] -Ds HOSTNAME IFACE [netmask MASK] pub
操作 ARP 缓存
-a 显示(所有)主机
-d 删除 ARP 条目
-s 设置新的条目
-v 详细模式
-n 不解析名称
-i IF 网络接口
-D 从 IFACE 读取 HWADDR
-A,-p AF 协议族
-H HWTYPE 硬件地址类型
arping
arping [-fqbDUA] [-c CNT] [-w TIMEOUT] [-I IFACE] [-s SRC_IP] DST_IP
发送 ARP 请求/响应
-f 在收到第一个 ARP 响应时退出
-q 安静模式
-b 保持广播,不要使用单播
-D 如果 DST_IP 响应,则退出并返回 1
-U 非请求 ARP 模式,更新您的邻居
-A ARP 响应模式,更新您的邻居
-c N 发送 N 个 ARP 请求后停止
-w TIMEOUT 等待 ARP 响应的秒数
-I IFACE 使用的接口(默认为 eth0)
-s SRC_IP 发送者 IP 地址
DST_IP 目标 IP 地址
ash ash [-il] [-|+Cabefmnuvx] [-|+o OPT]... [-c '脚本' [ARG0 参数] | 文件 参数 | -s 参数]
Unix shell 解释器
awk awk [选项] [AWK_PROGRAM] [文件]...
-v VAR=VAL 设置变量
-F SEP 使用 SEP 作为字段分隔符
-f/-E 文件 从文件读取程序
-e AWK_PROGRAM
base64
base64 [-d] [-w COL] [文件]
Base64 编码或解码文件到标准输出
-d 解码数据
-w COL 在 COL 处换行(默认为 76,0 禁用)
basename
basename 文件 [后缀] | -a 文件... | -s 后缀 文件...
删除目录路径和文件中的后缀
-a 所有参数都是文件
-s 后缀 删除后缀(暗示 -a)
bc bc [-sqlw] [文件]...
任意精度计算器
-q 安静模式
-l 加载标准库
-s POSIX 兼容模式
-w 如果使用扩展,则发出警告
$BC_LINE_LENGTH 更改输出宽度
blkdiscard
blkdiscard [-o OFS] [-l LEN] [-s] 设备
丢弃设备上的扇区
-o OFS 设备中的字节偏移量
-l LEN 要丢弃的字节数
-s 执行安全丢弃
blkid
blkid [BLOCKDEV]...
打印所有文件系统的 UUID
blockdev
blockdev 选项 BLOCKDEV
--setro 设置为只读
--setrw 设置为读写
--getro 获取只读状态
--getss 获取扇区大小
--getbsz 获取块大小
--setbsz 字节数 设置块大小
--getsz 获取设备大小(以 512 字节扇区为单位)
--getsize64 获取设备大小(以字节为单位)
--getra 获取预读大小(以 512 字节扇区为单位)
--setra 扇区数 设置预读大小
--flushbufs 刷新缓冲区
--rereadpt 重新读取分区表
brctl
brctl 命令 [桥接器 [参数]]
管理以太网桥接器。命令:
addbr 桥接器 创建桥接器
delbr 桥接器 删除桥接器
addif 桥接器 接口 将接口添加到桥接器
delif 桥接器 接口 从桥接器中删除接口
bunzip2
bunzip2 [-cfk] [文件]...
解压缩文件(或标准输入)
-c 写入标准输出
-f 强制
-k 保留输入文件
-t 测试完整性
bzcat
bzcat [文件]...
解压缩到标准输出
bzip2
bzip2 [-cfkdt123456789] [文件]...
使用 bzip2 算法压缩文件(或标准输入)
-1..9 压缩级别
-d 解压缩
-c 写入标准输出
-f 强制
-k 保留输入文件
-t 测试完整性
cal cal [-jmy] [[月份] 年份]
显示日历
-j 使用儒略日期
-m 周从星期一开始
-y 显示整年
cat cat [-nbvteA] [文件]...
将文件打印到标准输出
-n 对输出行进行编号
-b 对非空行进行编号
-v 将不可打印字符显示为 ^x 或 M-x
-t ...并将制表符显示为 ^I
-e ...并在行尾添加 $
-A 与 -vte 相同
chattr
chattr [-R] [-v 版本号] [-p 项目 ID] [-+=AacDdijsStTu] 文件...
更改 ext2 文件属性
-R 递归
-v 数字 设置版本/生成号
-p 数字 设置项目号
修饰符:
-,+,= 删除/添加/设置属性
属性:
A 禁止访问时间
a 仅允许追加
C 禁止写时复制
c 压缩
D 同步目录更新
d 不使用 dump 进行备份
E 加密
e 文件使用 extent
F 区分大小写的目录
I 索引目录
i 不可变
j 先将数据写入日志
N 文件存储在 inode 中
P 分层项目 ID 目录
S 同步文件更新
s 删除时清零存储
T 目录层次结构的顶部
t 不要与其他文件进行尾部合并
u 允许删除
V Verity
chgrp
chgrp [-RhLHPcvf]... 组 文件...
更改文件组所有权为组
-h 影响符号链接而不是符号链接的目标
-L 遍历所有符号链接到目录
-H 仅遍历命令行上的符号链接
-P 不要遍历符号链接(默认)
-R 递归
-c 列出已更改的文件
-v 详细
-f 隐藏错误
chmod
chmod [-Rcvf] 模式[,模式]... 文件...
MODE 是八进制数(位模式 sstrwxrwxrwx)或 [ugoa]{+|-|=}[rwxXst]
-R 递归
-c 列出已更改的文件
-v 详细
-f 隐藏错误
chown
chown [-RhLHPcvf]... USER[:[GRP]] FILE...
更改 FILE 的所有者和/或组为 USER 和/或 GRP
-h 影响符号链接而不是符号链接的目标
-L 遍历所有符号链接到目录
-H 仅遍历命令行上的符号链接
-P 不遍历符号链接(默认)
-R 递归
-c 列出已更改的文件
-v 详细
-f 隐藏错误
chroot
chroot NEWROOT [PROG ARGS]
以 NEWROOT 作为根目录运行 PROG
chvt
chvt N
将前台虚拟终端更改为 /dev/ttyN
clear
clear
清除屏幕
cmp cmp [-ls] [-n NUM] FILE1 [FILE2 [SKIP1 [SKIP2]]]
比较 FILE1 和 FILE2(或标准输入)
-l 写入所有不同字节的字节编号(十进制)和值(八进制)
-s 静默
-n NUM 最多比较 NUM 个字节
cp cp [-arPLHpfinlsTu] SOURCE DEST 或:cp [-arPLHpfinlsu] SOURCE... { -t DIRECTORY | DIRECTORY }
将 SOURCE 复制到 DEST
-a 与 -dpR 相同
-R,-r 递归
-d,-P 保留符号链接(如果为 -R,则为默认值)
-L 跟踪所有符号链接
-H 跟踪命令行上的符号链接
-p 尽可能保留文件属性
-f 覆盖
-i 在覆盖之前提示
-n 不覆盖
-l,-s 创建(符号)链接
-T 如果 DEST 是一个目录,则拒绝复制
-t DIR 将所有 SOURCE 复制到 DIR
-u 仅复制较新的文件
cpio
cpio [-dmvu] [-F FILE] [-R USER[:GRP]] [-H newc] [-tio] [EXTR_FILE]...
从标准输入提取 (-i) 或列出 (-t) 文件,或者从标准输入获取文件列表并创建存档 (-o)
主要操作模式:
-t 列出
-i 提取 EXTR_FILE(或全部)
-o 创建(需要 -H newc)
选项:
-H newc 存档格式
-d 创建前导目录
-m 恢复修改时间
-v 详细
-u 覆盖
-F FILE 输入(-t、-i、-p)或输出(-o)文件
-R USER[:GRP] 设置创建文件的所有者
-L 取消引用符号链接
-0 以 NULL 终止的输入
--ignore-devno
--renumber-inodes
crc32
crc32 FILE...
计算 FILE 的 CRC32 校验和
crond
crond [-fbS] [-l N] [-L LOGFILE] [-c DIR]
-f 前台
-b 后台(默认)
-S 记录到 syslog(默认)
-l N 设置日志级别。最详细 0,默认 8
-L FILE 记录到 FILE
-c DIR cron 目录。默认:/var/spool/cron/crontabs
crontab
crontab [-c DIR] [-u USER] [-ler]|[FILE]
-c crontab 目录
-u 用户
-l 列出 crontab
-e 编辑 crontab
-r 删除 crontab
FILE 用 FILE 替换 crontab('-':标准输入)
cttyhack
cttyhack [PROG ARGS]
如果可能,为 PROG 提供一个控制终端。例如,用于 /etc/inittab(用于 busybox init):
::respawn:/bin/cttyhack /bin/sh 将控制终端赋予在 PID 1 上运行的 shell:
$ exec cttyhack sh 从启动脚本中启动交互式 shell:
setsid cttyhack sh
cut cut [OPTIONS] [FILE]...
从文件中选择字段并打印到标准输出
-b LIST 从 LIST 中仅输出字节
-c LIST 从 LIST 中仅输出字符
-d SEP 输入字段分隔符(默认:-f 为制表符,-F 为一个或多个空白字符)
-O SEP 输出字段分隔符(默认:-d 用于 -f,一个空格用于 -F)
-D 不对部分进行排序/整理或匹配不带分隔符的 -fF 行
-f LIST 仅打印这些字段(-d 是单个字符)
-F LIST 仅打印这些字段(-d 是正则表达式)
-s 仅输出包含分隔符的行
-n 忽略
date
date [选项] [+FMT] [[-s] TIME]
显示时间(使用 +FMT),或设置时间
-u 使用 UTC(不转换为本地时间)
[-s] TIME 将时间设置为 TIME
-d TIME 显示 TIME,而不是“现在”
-D FMT 用于 -s/-d TIME 时间转换的 FMT(strptime 格式)
-r FILE 显示 FILE 的上次修改时间
-R 输出 RFC-2822 格式的日期
-I[SPEC] 输出 ISO-8601 格式的日期
SPEC=date(默认)、hours、minutes、seconds 或 ns
可识别的 TIME 格式:
@自 1970 年以来的秒数
hh:mm[:ss]
[YYYY.]MM.DD-hh:mm[:ss]
YYYY-MM-DD hh:mm[:ss]
[[[[[YY]YY]MM]DD]hh]mm[.ss]
“date TIME”格式接受 MMDDhhmm[[YY]YY][.ss] 格式
dc dc [-x] [-eSCRIPT]... [-fFILE]... [FILE]...
一个微型 RPN 计算器。操作:算术:+ - * / % ^ \~ - 除法带余数 | 模幂 v - 平方根 p - 打印栈顶而不弹出 f - 打印整个栈 k - 弹出值并设置精度 i - 弹出值并设置输入基数 o 弹出值并设置输出基数 示例:dc -e'2 2 + p' -> 4,dc -e'8 8 * 2 2 + / p' -> 16
dd dd [if=FILE] [of=FILE] [ibs=N obs=N/bs=N] [count=N] [skip=N] [seek=N] [conv=notrunc|noerror|sync|fsync] [iflag=skip_bytes|count_bytes|fullblock|direct] [oflag=seek_bytes|append|direct]
复制文件并进行转换和格式化
if=FILE 从 FILE 而不是标准输入读取
of=FILE 写入 FILE 而不是标准输出
bs=N 每次读取和写入 N 字节
ibs=N 每次读取 N 字节
obs=N 每次写入 N 字节
count=N 仅复制 N 个输入块
skip=N 跳过 N 个输入块
seek=N 跳过 N 个输出块
conv=notrunc 不截断输出文件
conv=noerror 在读取错误后继续
conv=sync 用零填充块
conv=fsync 在完成前物理写入数据
conv=swab 交换每对字节
iflag=skip_bytes skip=N 以字节为单位
iflag=count_bytes count=N 以字节为单位
oflag=seek_bytes seek=N 以字节为单位
iflag=direct O_DIRECT 输入
oflag=direct O_DIRECT 输出
iflag=fullblock 读取完整块
oflag=append 以追加模式打开输出
status=noxfer 抑制速率输出
status=none 抑制所有输出
N 可以附加 c(1)、w(2)、b(512)、kB(1000)、k(1024)、MB、M、GB、G
deallocvt
deallocvt [N]
释放未使用的虚拟终端 /dev/ttyN
depmod
depmod [-n] [-b BASE] [VERSION] [MODFILES]...
生成 modules.dep、alias 和 symbols 文件
-b BASE 使用 BASE/lib/modules/VERSION
-n 模拟运行:将文件打印到标准输出
devmem
devmem ADDRESS [WIDTH [VALUE]]
读取/写入物理地址
ADDRESS 要操作的地址
WIDTH 宽度 (8/16/...)
VALUE 要写入的数据
df df [-PkmhTai] [-B SIZE] [-t TYPE] [FILESYSTEM]...
打印文件系统使用情况统计信息
-P POSIX 输出格式
-k 1024 字节块(默认)
-m 1M 字节块
-h 人类可读格式(例如 1K 243M 2G)
-T 打印文件系统类型
-t TYPE 仅打印此类型的文件系统
-a 显示所有文件系统
-i inodes
-B SIZE 块大小
diff
diff [-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2
逐行比较文件,并输出它们之间的差异。 此实现仅支持统一的差异。
-a 将所有文件视为文本
-b 忽略空格量的变化
-B 忽略所有行都为空白的更改
-d 尽力找到一组较小的更改
-i 忽略大小写差异
-L 在统一的标题中使用 LABEL 代替文件名
-N 将不存在的文件视为空文件
-q 仅输出文件是否不同
-r 递归
-S 比较目录时,从 FILE 开始
-T 使制表符对齐,必要时在前面加上一个制表符
-s 报告两个文件是否相同
-t 在输出中将制表符扩展为空格
-U 输出 LINES 行的上下文
-w 忽略所有空格
dirname
dirname FILENAME
从 FILENAME 中删除非目录后缀
dmesg
dmesg [-cr] [-n LEVEL] [-s SIZE]
打印或控制内核环缓冲区
-c 在打印后清除环缓冲区
-n LEVEL 设置控制台日志级别
-s SIZE 缓冲区大小
-r 打印原始消息缓冲区
dos2unix
dos2unix [-ud] [FILE]
将 FILE 从 DOS 格式转换为 Unix 格式。 如果没有指定文件,则使用标准输入/输出。
-u dos2unix
-d unix2dos
dpkg
dpkg [-ilCPru] [-F OPT] PACKAGE
安装、删除和管理 Debian 包
-i,--install 安装包
-l,--list 列出已安装的包
--configure 配置未解包的包
-P,--purge 清除包的所有文件
-r,--remove 删除包,但保留配置文件
--unpack 解包,但不配置
--force-depends 忽略依赖问题
--force-confnew 在安装时覆盖现有的配置文件
--force-confold 保留旧的配置文件
dpkg-deb
dpkg-deb [-cefxX] FILE [DIR]
对 Debian 包 (.deb) 执行操作
-c 列出文件
-f 打印控制字段
-e 将控制文件提取到 DIR(默认:./DEBIAN)
-x 将文件提取到 DIR(没有默认值)
-X 详细提取
du du [-aHLdclsxhmk] [FILE]...
总结 FILE(或目录)使用的磁盘空间
-a 也显示文件大小
-b 表观大小(包括空洞)
-L 跟踪所有符号链接
-H 跟踪命令行中的符号链接
-d N 将输出限制为深度小于 N 的目录(以及使用 -a 时的文件)
-c 显示总计
-l 如果硬链接,则多次计算大小
-s 仅显示每个参数的总计
-x 跳过不同文件系统上的目录
-h 以人类可读的格式显示大小(例如,1K 243M 2G)
-m 以兆字节显示大小
-k 以千字节显示大小(默认)
dumpkmap
dumpkmap > keymap
将二进制键盘转换表打印到标准输出
dumpleases
dumpleases [-r|-a] [-d] [-f LEASEFILE]
显示 udhcpd 授予的 DHCP 租约
-f FILE 租约文件
-r 显示剩余时间
-a 显示到期时间
-d 以秒为单位显示时间
echo
echo [-neE] [ARG]...
将 ARG 打印到标准输出
-n 不带尾随换行符
-e 解释反斜杠转义(\t=制表符等)
-E 不解释反斜杠转义(默认)
ed ed [-p PROMPT] [-s] [FILE]
env env [-i0] [-u NAME]... [-] [NAME=VALUE]... [PROG ARGS]
打印当前环境或在设置环境后运行 PROG
-, -i 从空环境开始
-0 使用 NULL 终止符输出
-u NAME 从环境中删除变量
expand
expand [-i] [-t N] [FILE]...
将制表符转换为空格,并写入标准输出
-i 不要在非空格字符之后转换制表符
-t 每 N 个字符设置制表符停止位
expr
expr EXPRESSION
打印 EXPRESSION 的值
EXPRESSION 可以是:
ARG1 | ARG2 如果 ARG1 既不是 NULL 也不是 0,则为 ARG1,否则为 ARG2
ARG1 & ARG2 如果两个参数都不是 NULL 或 0,则为 ARG1,否则为 0
ARG1 < ARG2 如果 ARG1 小于 ARG2,则为 1,否则为 0。 类似地:
ARG1 <= ARG2
ARG1 = ARG2
ARG1 != ARG2
ARG1 >= ARG2
ARG1 > ARG2
ARG1 + ARG2 ARG1 和 ARG2 的总和。 类似地:
ARG1 - ARG2
ARG1 * ARG2
ARG1 / ARG2
ARG1 % ARG2
STRING : REGEXP 在 STRING 中对 REGEXP 进行锚定模式匹配
match STRING REGEXP 与 STRING : REGEXP 相同
substr STRING POS LEN STRING 的子字符串,POS 从 1 开始计数
index STRING CHARS 在 STRING 中找到任何 CHARS 的索引,或者为 0
length STRING STRING 的长度
quote TOKEN 将 TOKEN 解释为字符串,即使它是一个关键字(如“match”)或一个运算符(如“/”)
(EXPRESSION) EXPRESSION 的值
请注意,许多运算符需要进行转义或引用才能用于 shell。 比较是算术运算(如果两个 ARG 都是数字),否则为词法比较。 模式匹配返回在 ( 和 ) 之间匹配的字符串,或者返回 NULL;如果未使用 ( 和 ),则返回匹配的字符数或 0。
factor
factor [NUMBER]...
打印质因数
fallocate
fallocate [-o OFS] -l LEN FILE
为 FILE 预分配空间
-o OFS 范围的偏移量
-l LEN 范围的长度
fatattr
fatattr [-+rhsvda] FILE...
更改 FAT 文件系统上的文件属性
- 清除属性
+ 设置属性
r 只读
h 隐藏
s 系统
v 卷标
d 目录
a 存档
-u 起始和结束位置都以扇区为单位(而不是磁道)
-l 为每个磁盘显示分区表,然后退出
-b 2048 (对于某些 MO 磁盘)使用 2048 字节的扇区
-C CYLINDERS 设置磁头数/扇区数
-H HEADS 通常为 255
-S SECTORS 通常为 63
find find [-HL] [PATH]... [选项] [动作]
搜索文件并对它们执行操作。第一个失败的动作会停止当前文件的处理。默认:PATH 为当前目录,动作为“-print”
-L, -follow 跟随符号链接
-H ...仅在命令行中使用
-xdev 不要进入其他文件系统上的目录
-maxdepth N 最多向下搜索 N 层。-maxdepth 0 仅对命令行参数应用操作
-mindepth N 不要对前 N 层执行操作
-depth 在遍历目录之后对其执行操作
动作:
( 动作 ) 将动作分组以用于 -o / -a
! 动作 反转动作的成功/失败
动作1 [-a] 动作2 如果动作1失败,则停止,否则执行动作2
动作1 -o 动作2 如果动作1成功,则停止,否则执行动作2
注意:-a 的优先级高于 -o
-name PATTERN 将文件名(不包括目录名)与 PATTERN 匹配
-iname PATTERN 不区分大小写的 -name
-path PATTERN 将路径与 PATTERN 匹配
-ipath PATTERN 不区分大小写的 -path
-regex PATTERN 将路径与正则表达式 PATTERN 匹配
-type X 文件类型为 X(可以是:f、d、l、b、c、s、p)
-executable 文件是可执行文件
-perm MASK 至少有一个掩码位 (+MASK) 设置、所有位 (-MASK) 设置,或者恰好有 MASK 位设置为文件模式
-mtime DAYS mtime 大于 (+N)、小于 (-N) 或恰好为 N 天
-atime DAYS atime 为过去 N 天
-ctime DAYS ctime 为过去 N 天
-mmin MINS mtime 大于 (+N)、小于 (-N) 或恰好为 N 分钟
-amin MINS atime 为过去 N 分钟
-cmin MINS ctime 为过去 N 分钟
-newer FILE mtime 比 FILE 的 mtime 更新
-inum N 文件具有 inode 编号 N
-samefile FILE 文件与 FILE 相同
-user NAME/ID 文件由给定的用户拥有
-group NAME/ID 文件由给定的组拥有
-size N[bck] 文件大小为 N(c:字节,k:千字节,b:512 字节(默认))
+/-N:文件大小大于/小于 N
-links N 链接数为大于 (+N)、小于 (-N) 或恰好为 N
-empty 匹配空文件/目录
-prune 如果当前文件是目录,则不要进入该目录
如果没有指定以下任何动作,则假定为 -print -print 打印文件名 -print0 打印文件名,以 NUL 结尾 -exec CMD ARG ; 使用所有实例的 {} 替换为文件名来运行 CMD。如果 CMD 以非零状态退出,则失败 -exec CMD ARG + 使用 {} 替换为文件名列表来运行 CMD -ok CMD ARG ; 提示并使用 {} 替换来运行 CMD -quit 退出
findfs findfs LABEL=label 或 UUID=uuid
根据标签或 UUID 查找文件系统设备
fold fold [-bs] [-w WIDTH] [FILE]...
将 FILE(或标准输入)中的输入行换行,并写入标准输出
-b 按字节而不是列计数
-s 在空格处断开
-w 使用 WIDTH 列而不是 80 列
free
free [-bkmgh]
显示空闲和已用内存
freeramdisk
freeramdisk DEVICE
释放指定 ramdisk 中使用的所有内存
fsfreeze
fsfreeze --[un]freeze MOUNTPOINT
刷新并停止向 MOUNTPOINT 写入
fstrim
fstrim [OPTIONS] MOUNTPOINT
-o OFFSET 从此处开始丢弃的字节偏移量
-l LEN 要丢弃的字节数
-m MIN 最小范围长度
-v 打印已丢弃的字节数
ftpget
ftpget [OPTIONS] HOST [LOCAL_FILE] REMOTE_FILE
通过 FTP 下载文件
-c 继续之前的传输
-v 详细输出
-u USER 用户名
-p PASS 密码
-P PORT
ftpput
ftpput [OPTIONS] HOST [REMOTE_FILE] LOCAL_FILE
将文件上传到 FTP 服务器
-v 详细输出
-u USER 用户名
-p PASS 密码
-P PORT
getfattr
getfattr [-h] {-d|-n ATTR} FILE...
获取扩展属性
-h 不跟踪符号链接
-d 转储所有属性
-n ATTR 获取属性 ATTR
getopt
getopt [OPTIONS] [--] OPTSTRING PARAMS
-a 允许以单个 -l 开头的长选项 LOPT[,...] 要识别的长选项
-n PROGNAME 报告错误的名称
-o OPTSTRING 要识别的短选项
-q 未识别选项时,不显示错误消息
-Q 不输出任何内容
-s SHELL 设置 shell 引用约定
-T 版本测试(如果成功则退出,返回码为 4)
-u 不引用输出
示例:
O=`getopt -l bb: -- ab:c:: "$@"` || exit 1 eval set -- "$O" while true; do case "$1" in
-a) echo A; shift;; -b|--bb) echo "B:'$2'"; shift 2;; -c) case "$2" in
"") echo C; shift 2;; *) echo "C:'$2'"; shift 2;; esac;;
--) shift; break;; *) echo Error; exit 1;; esac done
getty
getty [OPTIONS] BAUD_RATE[,BAUD_RATE]... TTY [TERMTYPE]
打开 TTY,提示输入登录名,然后调用 /bin/login
-h 启用硬件 RTS/CTS 流量控制
-L 设置 CLOCAL(忽略载波检测状态)
-m 从调制解调器的 CONNECT 状态消息中获取波特率
-n 不提示输入登录名
-w 在发送 /etc/issue 之前等待 CR 或 LF
-i 不显示 /etc/issue
-f ISSUE_FILE 显示 ISSUE_FILE 而不是 /etc/issue
-l LOGIN 调用 LOGIN 而不是 /bin/login
-t SEC 如果在 SEC 时间内未读取到登录名,则终止
-I INITSTR 在其他任何操作之前发送 INITSTR
-H HOST 将 HOST 记录到 utmp 文件中作为主机名
BAUD_RATE 为 0 时,则保持不变
grep
grep [-HhnlLoqvsrRiwFEz] [-m N] [-A|B|C N] { PATTERN | -e PATTERN... | -f FILE... } [FILE]...
在文件(或标准输入)中搜索 PATTERN
-H 添加 'filename:' 前缀
-h 不添加 'filename:' 前缀
-n 添加 'line_no:' 前缀
-l 仅显示匹配的文件名
-L 仅显示不匹配的文件名
-c 仅显示匹配行的数量
-o 仅显示行的匹配部分
-q 静默。如果找到 PATTERN,则返回 0,否则返回 1
-v 选择不匹配的行
-s 抑制打开和读取错误
-r 递归
-R 递归并取消引用符号链接
-i 忽略大小写
-w 仅匹配完整的单词
-x 仅匹配完整的行
-F PATTERN 是文字(而不是正则表达式)
-E PATTERN 是扩展正则表达式
-z 空字符终止的输入
-m N 每个文件中最多匹配 N 次
-A N 打印 N 行尾随上下文
-B N 打印 N 行前导上下文
-C N 与 '-A N -B N' 相同
-e PTRN 要匹配的模式
-f FILE 从文件中读取模式
groups
groups [USER]
打印 USER 所在的组
gunzip
gunzip [-cfkt] [FILE]...
解压缩 FILE(s)(或标准输入)
-c 写入标准输出
-f 强制
-k 保留输入文件
-t 测试完整性
gzip
gzip [-cfkdt] [FILE]...
压缩 FILE(s)(或标准输入)
-d 解压缩
-c 写入标准输出
-f 强制
-k 保留输入文件
-t 测试完整性
halt
halt [-d DELAY] [-nfw]
停止系统
-d SEC 延迟间隔
-n 不进行同步
-f 强制(不通过 init)
-w 仅写入 wtmp 记录
head
head [OPTIONS] [FILE]...
打印 FILE(s) 的前 10 行(或标准输入)。如果 FILE 多于一个,则在每个文件名前面加上文件名标题。
-n N[bkm] 打印前 N 行
-n -N[bkm] 打印除最后 N 行之外的所有行
-c [-]N[bkm] 打印前 N 个字节
(b:*512 k:*1024 m:*1024^2)
-q 从不打印标题
-v 始终打印标题
hexdump
hexdump [-bcdoxCv] [-e FMT] [-f FMT_FILE] [-n LEN] [-s OFS] [FILE]...
以用户指定的格式显示 FILE(s)(或标准输入)
-b 1 字节八进制显示
-c 1 字节字符显示
-d 2 字节十进制显示
-o 2 字节八进制显示
-x 2 字节十六进制显示
-C 十六进制 + ASCII,每行 16 个字节
-v 显示所有内容(无重复折叠)
-e FORMAT_STR 示例:“16/1 \"%02x|\"\n”
-f FORMAT_FILE
-n LENGTH 仅显示前 LENGTH 个字节
-s OFFSET 跳过 OFFSET 个字节
hostid
hostid
打印机器的唯一 32 位标识符
hostname
hostname [-sidf] [HOSTNAME | -F FILE]
显示或设置主机名或 DNS 域名
-s 简短
-i 主机名的地址
-d DNS 域名
-f 完全限定域名
-F FILE 使用 FILE 的内容作为主机名
httpd
httpd [-ifv[v]] [-c CONFFILE] [-p [IP:]PORT] [-u USER[:GRP]] [-r REALM] [-h HOME] 或 httpd
-d/-e/-m STRING
监听传入的 HTTP 请求
-i inetd 模式
-f 在前景中运行
-v[v] 详细
-p [IP:]PORT 绑定到 IP:PORT(默认 *:80)
-u USER[:GRP] 绑定到端口后设置用户 ID/组 ID
-r REALM 基本身份验证的身份验证域
-h HOME 主目录(默认 .)
-c FILE 配置文件(默认 {/etc,HOME}/httpd.conf)
-m STRING MD5 加密 STRING
-e STRING HTML 编码 STRING
-d STRING URL 解码 STRING
hwclock
hwclock [-ul] [-f DEV] [-s|-w|--systz|--param-get PARAM|--param-set PARAM=VAL]
显示或设置硬件时钟(RTC)
-f DEV 使用此设备(例如 /dev/rtc2)
-u 假设 RTC 以 UTC 时间保存
-l 假设 RTC 以本地时间保存
(如果未指定两者之一,则从 /etc/adjtime 读取)
-s 从 RTC 设置系统时间
-w 从系统时间设置 RTC
--systz 设置内核时区,更正系统时间
如果 RTC 以本地时间保存
--param-get PARAM 获取 RTC 参数
--param-set PARAM=VAL 设置 RTC 参数
i2cdetect
i2cdetect -l | -F I2CBUS | [-ya] [-q|-r] I2CBUS [FIRST LAST]
检测 I2C 芯片
-l 列出已安装的总线
-F BUS# 列出此总线上的功能
-y 禁用交互模式
-a 强制扫描非常规地址
-q 使用 smbus 快速写入命令进行探测(默认)
-r 使用 smbus 读取字节命令进行探测
FIRST 和 LAST 限制探测范围
i2cdump
i2cdump [-fy] [-r FIRST-LAST] BUS ADDR [MODE]
检查 I2C 寄存器
I2CBUS I2C 总线编号
ADDRESS 0x03-0x77
MODE 为:
b 字节(默认)
w 字
W 偶数寄存器地址上的字
i I2C 块
s SMBus 块
c 连续字节
附加 p 用于 SMBus PEC
-f 强制访问
-y 禁用交互模式
-r 限制要访问的寄存器数量
i2cget
i2cget [-fy] BUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
从 I2C/SMBus 芯片寄存器读取
I2CBUS I2C 总线编号
ADDRESS 0x03-0x77
MODE 为:
b 读取字节数据(默认)
w 读取字数据
c 写入字节/读取字节
附加 p 用于 SMBus PEC
-f 强制访问
-y 禁用交互模式
i2cset
i2cset [-fy] [-m MASK] BUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
设置 I2C 寄存器
I2CBUS I2C 总线编号
ADDRESS 0x03-0x77
MODE 为:
c 字节,无值
b 字节数据(默认)
w 字数据
i I2C 块数据
s SMBus 块数据
附加 p 用于 SMBus PEC
-f 强制访问
-y 禁用交互模式
-r 读回并比较结果
-m MASK 掩码,指定要写入的位
i2ctransfer
i2ctransfer [-fay] I2CBUS { rLENGTH[@ADDR] | wLENGTH[@ADDR] DATA...}...
在一次传输中读/写 I2C 数据
-f 强制访问繁忙地址
-a 强制访问非常规地址
-y 禁用交互模式
id id [-ugGnr] [USER]
打印关于用户的信息,或关于当前用户的信息
-u 用户 ID
-g 组 ID
-G 辅助组 ID
-n 打印名称而不是数字
-r 打印实际 ID 而不是有效 ID
ifconfig
ifconfig [-a] [IFACE] [ADDRESS]
配置网络接口
[add ADDRESS[/PREFIXLEN]]
[del ADDRESS[/PREFIXLEN]]
[[-]broadcast [ADDRESS]] [[-]pointopoint [ADDRESS]]
[netmask ADDRESS] [dstaddr ADDRESS]
[outfill NN] [keepalive NN]
[hw ether|infiniband ADDRESS] [metric NN] [mtu NN]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc] [txqueuelen NN] [[-]dynamic]
[mem_start NN] [io_addr NN] [irq NN]
[up|down] ...
ifdown
ifdown [-nmvf] [-i FILE] -a | IFACE...
-a 停用所有接口
-i FILE 使用 FILE 代替 /etc/network/interfaces
-n 模拟运行
(注意:不禁用映射)
-m 不运行任何映射
-v 在执行之前打印将要发生的事情
-f 强制
ifup
ifup [-nmvf] [-i FILE] -a | IFACE...
-a 启用所有接口
-i FILE 使用 FILE 代替 /etc/network/interfaces
-n 模拟运行
(注意:不禁用映射)
-m 不运行任何映射
-v 在执行之前打印将要发生的事情
-f 强制
init
init
Init 是启动时启动的第一个进程。它不会退出。它会根据 /etc/inittab 重新生成子进程。信号:
HUP:重新加载 /etc/inittab TSTP:停止重新生成,直到 CONT QUIT:重新执行另一个 init
USR1/TERM/USR2/INT:运行 halt/reboot/poweroff/Ctrl-Alt-Del 脚本
insmod
insmod FILE [SYMBOL=VALUE]...
加载内核模块
install
install [-cdDsp] [-o USER] [-g GRP] [-m MODE] [-t DIR] [SOURCE]... DEST
复制文件并设置属性
-c 仅复制(默认)
-d 创建目录
-D 创建目标目录
-s 删除符号表
-p 保留日期
-o USER 设置所有权
-g GRP 设置组所有权
-m MODE 设置权限
-t DIR 安装到 DIR
ionice
ionice [-c 1-3] [-n 0-7] [-t] { -p PID | PROG ARGS }
更改 I/O 优先级和类
-c N 类。1:实时 2:最佳 3:空闲
-n N 优先级
-t 忽略错误
ip ip [OPTIONS] address|route|link|tunnel|neigh|rule [ARGS]
OPTIONS := -f[amily] inet|inet6|link | -o[neline]
ip addr add|del IFADDR dev IFACE | show|flush [dev IFACE] [to PREFIX] ip route
list|flush|add|del|change|append|replace|test ROUTE ip link set IFACE [up|down] [arp on|off]
[multicast on|off] [promisc on|off] [mtu NUM] [name NAME] [qlen NUM] [address MAC]
[master IFACE | nomaster] [netns PID] [type TYPE ARGS] ip tunnel add|change|del|show
[NAME] [mode ipip|gre|sit] [remote ADDR] [local ADDR] [ttl TTL] ip neigh show|flush [to
PREFIX] [dev DEV] [nud STATE] ip rule [list] | add|del SELECTOR ACTION
ipcalc
ipcalc [-bnmphs] ADDRESS[/PREFIX] [NETMASK]
计算并显示从 IP 地址获得的网路设置
-b 广播地址
-n 网络地址
-m IP 的默认网络掩码
-p IP/NETMASK 的前缀
-h 解析的主机名
-s 不显示错误消息
kill
kill [-l] [-SIG] PID...
向给定的 PID 发送信号(默认:TERM)
-l 列出所有信号名称和编号
killall
killall [-lq] [-SIG] PROCESS_NAME...
向给定的进程发送信号(默认:TERM)
-l 列出所有信号名称和编号
-q 如果没有杀死任何进程,则不抱怨
klogd
klogd [-c N] [-n]
将内核消息记录到 syslog
-c N 将优先级高于 prio N(1-8)的消息打印到控制台
-n 在前台运行
last
last
显示系统中最近登录用户的列表
less
less [-EFIMmNSRh~] [FILE]...
逐屏显示文件(或标准输入)的内容
-E 到达文件末尾时退出
-F 如果整个文件都可以在第一个屏幕上显示,则退出
-I 在所有搜索中忽略大小写
-M,-m 显示状态行,包含行号和文件百分比
-N 在每一行前添加行号
-S 截断长行
-R 删除输入中的颜色转义码
-~ 禁止显示 EOF 后的 ~ 符号
link
link FILE LINK
创建指向 FILE 的硬链接 LINK
ln ln [-sfnbtv] [-S SUF] TARGET... LINK|DIR
为指定的 TARGET 创建链接 LINK 或 DIR/TARGET
-s 创建符号链接而不是硬链接
-f 删除现有的目标文件
-n 不取消引用符号链接 - 将其视为普通文件
-b 在链接操作之前备份目标文件(如果存在)
-S SUF 在创建备份文件时使用后缀而不是 ~
-T 将 LINK 视为文件,而不是目录
-v 详细输出
loadfont
loadfont < font
从标准输入加载控制台字体
loadkmap
loadkmap < keymap
从标准输入加载二进制键盘转换表
logger
logger [-s] [-t TAG] [-p PRIO] [MESSAGE]
将消息(或标准输入)写入 syslog
-s 同时记录到标准错误输出和系统日志
-t TAG 使用指定的标签进行记录(默认为用户名)
-p PRIO 优先级(数字或 FACILITY.LEVEL 对)
login
login [-p] [-h HOST] [[-f] USER]
开始系统中的新会话
-f 不进行身份验证(用户已通过身份验证)
-h HOST 用户连接的主机(用于网络登录)
-p 保留环境变量
$LOGIN_TIMEOUT 秒(默认 60,0 - 禁用)
logname
logname
打印当前用户的名称
logread
logread [-fF]
显示 syslogd 循环缓冲区中的消息
-f 输出数据时,随着日志的增长而输出
-F 与 -f 相同,但首先转储缓冲区
losetup
losetup [-rP] [-o OFS] {-f|LOOPDEV} FILE: 关联循环设备 losetup -c LOOPDEV:
重新读取文件大小 losetup -d LOOPDEV: 取消关联 losetup -a: 显示状态
losetup -f: 显示/使用下一个可用循环设备
-o OFS 从 FILE 的 OFS 字节处开始
-P 扫描分区
-r 只读
-f 显示/使用下一个可用循环设备
ls ls [-1AaCxdLHRFplinshrSXvctu] [-w WIDTH] [FILE]...
列出目录内容
-1 单列输出
-a 包括以 . 开头的名称
-A 类似于 -a,但排除 . 和 ..
-x 按行排列
-d 列出目录名称,而不是内容
-L 跟随符号链接
-H 跟随命令行中的符号链接
-R 递归
-p 在目录名称后附加 /
-F 在名称后附加指示符(*/=@|)
-l 长格式
-i 列出 inode 编号
-n 列出数字 UID 和 GID,而不是名称
-s 列出分配的块
-lc 列出 ctime
-lu 列出 atime
--full-time 列出完整的日期/时间
-h 人类可读的尺寸(1K 243M 2G)
--group-directories-first
-S 按大小排序
-X 按扩展名排序
-v 按版本排序
-t 按 mtime 排序
-tc 按 ctime 排序
-tu 按 atime 排序
-r 反向排序
-w N 格式化为 N 列宽
--color[={always,never,auto}]
lsattr
lsattr [-Radlpv] [FILE]...
列出 ext2 文件属性
-R 递归
-a 包括以 . 开头的名称
-d 列出目录名称,而不是内容
-l 列出长标志名称
-p 列出项目 ID
-v 列出版本/代号
lsmod
lsmod
列出已加载的内核模块
lzcat
lzcat [FILE]...
解压缩到标准输出
lzma
lzma -d [-cfk] [FILE]...
解压缩文件(或标准输入)
-d 解压缩
-c 写入标准输出
-f 强制
-k 保留输入文件
-t 测试完整性
lzop
lzop [-cfUvd123456789CF] [FILE]...
-1..9 压缩级别
-d 解压缩
-c 写入标准输出
-f 强制
-U 删除输入文件
-v 详细
-F 不存储或验证校验和
-C 同时写入压缩块的校验和
md5sum
md5sum [-c[sw]] [FILE]...
打印或检查 MD5 校验和
-c 根据文件中的列表检查校验和
-s 不输出任何内容,状态码显示成功
-w 警告格式不正确的校验和行
mdev
mdev [-vS] { [-s] | [-df] }
-v 详细
-S 同时记录到 syslog
-s 扫描 /sys 并填充 /dev
-d 守护进程,监听 netlink
-f 在前景中运行
单独的 mdev 是一个内核热插拔助手。要激活它:echo /sbin/mdev >/proc/sys/kernel/hotplug
它使用 /etc/mdev.conf,其中包含如下行:[-][ENV=regex;]...DEVNAME UID:GID PERM [\>|=PATH]|[!],其中 DEVNAME 是设备名称正则表达式、@major,minor[-minor2] 或环境变量正则表达式。后者的一种常见用法是为热插拔设备加载模块:
^ MODALIAS=.* 0:0 660 @modprobe "$MODALIAS"
如果 /dev/mdev.seq 文件存在,mdev 将等待其值与 $SEQNUM 变量匹配。这可以防止插拔竞态。要激活此功能,请在启动时创建空的 /dev/mdev.seq。
如果 /dev/mdev.log 文件存在,调试日志将被追加到其中。
microcom
microcom [-d DELAY_MS] [-t TIMEOUT_MS ] [-s SPEED] [-X] TTY
从标准输入复制字节到 TTY,从 TTY 复制字节到标准输出
-d DELAY 等待最多 DELAY 毫秒的 TTY 输出,然后再发送
下一个字节到 TTY
-t TIMEOUT 如果在标准输入和 TTY 都静默 TIMEOUT 毫秒后退出
-s SPEED 将串行线路设置为 SPEED
-X 禁用标准输入中 NUL 和 Ctrl-X 的特殊含义
mim mim [-f FILE] [SHELL_OPTIONS] [TARGET] ...
从类似 Makefile 的规范文件中运行脚本
-f FILE 规范文件(默认 Mimfile)
mkdir
mkdir [-m MODE] [-p] DIRECTORY...
创建 DIRECTORY
-m MODE 模式
-p 如果存在则不报错;根据需要创建父目录
mkdosfs
mkdosfs [-v] [-n LABEL] BLOCKDEV [KBYTES]
创建一个 FAT32 文件系统
-v 详细
-n LBL 卷标
mke2fs
mke2fs [-Fn] [-b BLK_SIZE] [-i INODE_RATIO] [-I INODE_SIZE] [-m RESERVED_PERCENT] [-L LABEL]
BLOCKDEV [KBYTES]
-b BLK_SIZE 块大小,字节
-F 强制
-i RATIO 文件最大数量为 filesystem_size / RATIO
-I BYTES Inode 大小(最小 128)
-L LBL 卷标
-m PERCENT 为管理员保留的块百分比
-n 模拟运行
mkfifo
mkfifo [-m MODE] NAME
创建命名管道
-m MODE 模式(默认 a=rw)
mknod
mknod [-m MODE] NAME TYPE [MAJOR MINOR]
创建特殊文件(块设备、字符设备或管道)
-m MODE 创建模式(默认 a=rw)
TYPE:
b 块设备
c 或 u 字符设备
p 命名管道(必须省略 MAJOR MINOR)
mkpasswd
mkpasswd [-P FD] [-m TYPE] [-S SALT] [PASSWORD] [SALT]
打印 crypt(3) 散列后的 PASSWORD
-P N 从文件描述符 N 读取密码
-m TYPE des,md5,sha256/512(默认)
-S SALT
mkswap
mkswap [-L LBL] BLOCKDEV [KBYTES]
准备 BLOCKDEV 以用作交换分区
-L LBL 标签
mktemp
mktemp [-dt] [-p DIR] [TEMPLATE]
根据 TEMPLATE 创建一个临时文件并打印其名称。 TEMPLATE 必须以 XXXXXX 结尾(例如 [/dir/]nameXXXXXX)。 如果没有 TEMPLATE,则假定为 -t tmp.XXXXXX。
-d 创建目录,而不是文件
-q 发生错误时静默失败
-t 在 TEMPLATE 前面加上基本目录名称
-p DIR 将 DIR 用作基本目录(表示 -t)
-u 不创建任何内容;打印一个名称
基本目录为:-p DIR,否则为 $TMPDIR,否则为 /tmp
modinfo
modinfo [-adlpn0] [-F keyword] MODULE
-a '-F author' 的快捷方式
-d '-F description' 的快捷方式
-l '-F license' 的快捷方式
-p '-F parm' 的快捷方式
-F keyword 要查找的关键字
-0 以 NULL 结尾的输出
modprobe
modprobe [-alrqvsDb] MODULE [SYMBOL=VALUE]...
-a 加载多个 MODULE
-l 列出(MODULE 是一个模式)
-r 删除 MODULE(堆叠)或执行自动清理
-q 静默
-v 详细
-s 记录到 syslog
-D 显示依赖关系
-b 也将黑名单应用于模块名称
more
more [FILE]...
查看 FILE(或 stdin),一次显示一个屏幕
mount
mount [OPTIONS] [-o OPT] DEVICE NODE
挂载文件系统。 文件系统自动检测需要 /proc。
-a 挂载 fstab 中所有文件系统
-f 模拟运行
-i 不运行挂载助手
-r 只读挂载
-t FSTYPE[,...] 文件系统类型
-T FILE 读取 FILE 而不是 /etc/fstab
-O OPT 仅挂载具有选项 OPT 的文件系统(仅限 -a)
-o OPT:
loop 忽略(循环设备自动检测)
[a]sync 写入是 [a]同步的
[no]atime 禁用/启用 inode 访问时间更新
[no]diratime 禁用/启用目录的 atime 更新
[no]relatime 禁用/启用相对于修改时间的 atime 更新
[no]dev (禁用)允许使用特殊设备文件
[no]exec (禁用)允许使用可执行文件
[no]suid (禁用)允许使用设置用户 ID 的 root 程序
[r]shared (递归)转换为共享子树
[r]slave (递归)转换为从属子树
[r]private (递归)转换为私有子树
[un]bindable 使挂载点 [un]bindable,以便进行 bind 挂载
[r]bind (递归)将文件或目录 bind 到另一个位置
move 重新定位现有的挂载点
remount 重新挂载已挂载的文件系统,更改标志
ro 与 -r 相同
有文件系统特定的 -o 标志。
mt mt [-f DEVICE] OPCODE VALUE
控制磁带驱动器操作
操作码:
bsf bsfm bsr bss datacompression drvbuffer eof eom erase fsf fsfm fsr fss load lock mkpart
nop offline ras1 ras2 ras3 reset retension rewind rewoffline seek setblk setdensity setpart
tell unload unlock weof wset
mv mv [-finT] SOURCE DEST 或:mv [-fin] SOURCE... { -t DIRECTORY | DIRECTORY }
将 SOURCE 重命名为 DEST,或将 SOURCE 移动到 DIRECTORY
-f 在覆盖之前不要提示
-i 交互模式,在覆盖之前提示
-n 不要覆盖现有文件
-T 如果 DEST 是一个目录,则拒绝移动
-t DIR 将所有 SOURCE 移动到 DIR
nameif
nameif [-s] [-c FILE] [IFNAME HWADDR]...
在网络接口处于关闭状态时重命名网络接口。地址为 HWADDR 的设备将被重命名为 IFNAME。
-c FILE 配置文件(默认:/etc/mactab)
-s 记录到 syslog
nbd-client
nbd-client { [-b BLKSIZE] [-N NAME] [-t SEC] [-p] HOST [PORT] | -d } BLOCKDEV
连接到 HOST,并在 BLOCKDEV 上提供网络块设备
nc nc [-iN] [-wN] [-l] [-p PORT] [-f FILE|IPADDR PORT] [-e PROG]
打开到 IP:PORT 或 FILE 的管道
-l 侦听模式,用于接收连接
(与 -e 一起使用 -ll 以获得持久服务器)
-p PORT 本地端口
-w SEC 连接超时
-i SEC 发送行的延迟间隔
-f FILE 使用文件(例如 /dev/ttyS0)而不是网络
-e PROG 连接后运行 PROG
netstat
netstat [-ral] [-tuwx] [-en]
显示网络信息
-r 路由表
-a 所有套接字
-l 侦听套接字
否则:已连接的套接字
-t TCP 套接字
-u UDP 套接字
-w 原始套接字
-x Unix 套接字
否则:所有套接字类型
-e 其他/更多信息
-n 不解析名称
nl nl [OPTIONS] [FILE]...
将文件写入标准输出,并添加行号
-b STYLE 要编号的行 - a:所有,t:非空,n:无
-i N 行号增量
-s STRING 使用 STRING 作为行号分隔符
-v N 从 N 开始
-w N 行号的宽度
nologin
nologin
礼貌地拒绝登录
nproc
nproc [--all] [--ignore=N]
打印可用 CPU 的数量
--all 安装的 CPU 数量
--ignore=N 排除 N 个 CPU
nsenter
nsenter [OPTIONS] [PROG ARGS]
-t PID 目标进程,从中获取命名空间
-m[FILE] 进入挂载命名空间
-u[FILE] 进入 UTS 命名空间(主机名等)
-i[FILE] 进入 System V IPC 命名空间
-n[FILE] 进入网络命名空间
-p[FILE] 进入 PID 命名空间
-U[FILE] 进入用户命名空间
-S UID 在进入的命名空间中设置 uid
-G GID 在进入的命名空间中设置 gid
--preserve-credentials 不要更改 uid 或 gid
-r[DIR] 设置根目录
-w[DIR] 设置工作目录
-F 在执行 PROG 之前不要分叉
nslookup
nslookup [-type=QUERY_TYPE] [-debug] HOST [DNS_SERVER]
查询 DNS 关于 HOST 的信息
QUERY_TYPE: soa,ns,a,aaaa,cname,mx,txt,ptr,srv,any
nuke
nuke DIR...
删除 DIR 目录
od
od [-abcdfhilovxs] [-t TYPE] [-A RADIX] [-N SIZE] [-j SKIP] [-S MINSTR] [-w WIDTH] [FILE]...
以明确的方式打印 FILE 文件(或标准输入),默认以八进制字节形式显示
openvt
openvt [-c N] [-sw] [PROG ARGS]
在新的虚拟终端上启动 PROG 程序
-c N 使用指定的 VT
-s 切换到 VT
-w 等待 PROG 程序退出
partprobe
partprobe DEVICE...
要求内核重新扫描分区表
passwd
passwd [-a ALG] [-dlu] [USER]
更改 USER 用户的密码(默认:当前用户)
-a ALG des,md5,sha256/512(默认)
-d 将密码设置为空
-l 锁定(禁用)帐户
-u 解锁(启用)帐户
paste
paste [-d LIST] [-s] [FILE]...
将每个输入文件的行粘贴在一起,用制表符分隔
-d LIST 使用 LIST 中的分隔符,而不是制表符
-s 串行:一次一个文件
patch
patch [-RNE] [-p N] [-i DIFF] [ORIGFILE [PATCHFILE]]
-p N 从文件名中删除 N 个前导组件
-i DIFF 从 DIFF 文件中读取,而不是从标准输入读取
-R 反向应用补丁
-N 忽略已应用的补丁
-E 如果输出文件变为空,则删除输出文件
--dry-run 不实际更改文件
pidof
pidof [NAME]...
列出所有名称与 NAME 匹配的进程的 PID
ping
ping [OPTIONS] HOST
向 HOST 发送 ICMP ECHO_REQUEST 请求
-4,-6 强制使用 IP 或 IPv6 名称解析
-c CNT 仅发送 CNT 个 ping 数据包
-s SIZE 发送大小为 SIZE 字节的数据包(默认值为 56)
-i SECS 间隔
-A 在收到回复时立即 ping
-t TTL 设置 TTL
-I IFACE/IP 源接口或 IP 地址
-W SEC 等待第一个响应的秒数(默认值为 10)(在发送完所有 -c CNT 个数据包后)
-w SEC ping 退出前的秒数(默认值为无限)(可以使用 -c CNT 提前退出)
-q 安静模式,仅在开始/结束时显示输出
-p HEXBYTE 有效载荷模式
ping6
ping6 [OPTIONS] HOST
向 HOST 发送 ICMP ECHO_REQUEST 请求
-c CNT 仅发送 CNT 个 ping 数据包
-s SIZE 发送大小为 SIZE 字节的数据包(默认值为 56)
-i SECS 间隔
-A 在收到回复时立即 ping
-I IFACE/IP 源接口或 IP 地址
-W SEC 等待第一个响应的秒数(默认值为 10)(在发送完所有 -c CNT 个数据包后)
-w SEC ping 退出前的秒数(默认值为无限)(可以使用 -c CNT 提前退出)
-q 安静模式,仅在开始/结束时显示输出
-p HEXBYTE 有效载荷模式
pivot_root
pivot_root NEW_ROOT PUT_OLD
将当前根文件系统移动到 PUT_OLD,并将 NEW_ROOT 设置为新的根文件系统
poweroff
poweroff [-d DELAY] [-nf]
停止并关闭电源
-d SEC 延迟时间
-n 不进行同步
-f 强制执行(不通过 init)
printf
printf FORMAT [ARG]...
根据 FORMAT(类似于 C 的 printf)格式化并打印 ARG(s)
ps ps [-o COL1,COL2=HEADER] [-T]
显示进程列表
-o COL1,COL2=HEADER 选择要显示的列
-T 显示线程
pwd pwd
打印当前工作目录的完整文件名
rdate
rdate [-s/-p] HOST
使用 RFC 868 从 HOST 设置并打印时间
-s 仅设置系统时间
-p 仅打印时间
readlink
readlink [-fnv] FILE
显示符号链接的值
-n 不添加换行符
-f 通过跟踪所有符号链接进行规范化
-v 详细信息
realpath
realpath FILE...
打印 FILE 的绝对路径名
reboot
reboot [-d DELAY] [-nf]
重新启动系统
-d SEC 延迟时间
-n 不进行同步
-f 强制执行(不通过 init)
renice
renice [-n] PRIORITY [[-p|g|u] ID...]...
更改正在运行的进程的调度优先级
-n 将 PRIORITY 添加到当前的 nice 值
如果没有 -n,则将 nice 值设置为 PRIORITY
-p 进程 ID(默认)
-g 进程组 ID
-u 进程用户名
reset
reset
重置终端(转义序列)和 termios(信号、缓冲、回显)
resume
resume BLOCKDEV [OFFSET]
从 'suspend-to-disk' 数据恢复系统状态,数据位于 BLOCKDEV
rev rev [FILE]...
反转 FILE 的行
rm rm [-irf] FILE...
删除(取消链接)FILE
-i 始终在删除之前提示
-f 从不提示
-R,-r 递归
rmdir
rmdir [-p] DIRECTORY...
如果 DIRECTORY 为空,则删除 DIRECTORY
-p 包括父目录
--ignore-fail-on-non-empty
rmmod
rmmod [-wfa] [MODULE]...
卸载内核模块
-w 等待模块不再被使用
-f 强制卸载
-a 递归地删除所有未使用的模块
route
route [-ne] [-A inet[6]] [{add|del} [-net|-host] TARGET [netmask MASK] [gw GATEWAY]
[metric N] [mss BYTES] [window BYTES] [reject] [IFACE]]
显示或编辑内核路由表
-n 不解析名称
-e 显示其他/更多信息
-A inet[6] 选择地址族
rpm rpm -i PACKAGE.rpm; rpm -qp[ildc] PACKAGE.rpm
操作 RPM 包
命令:
-i 安装包
-qp 查询包
-qpi 显示信息
-qpl 列出内容
-qpd 列出文档
-qpc 列出配置文件
rpm2cpio
rpm2cpio PACKAGE.rpm
输出 RPM 文件的 cpio 存档
run-init
run-init [-d CAP,CAP...] [-n] [-c CONSOLE_DEV] NEW_ROOT NEW_INIT [ARGS]
释放 initramfs 并切换到另一个根文件系统:
chroot 到 NEW_ROOT,删除所有内容 /,将 NEW_ROOT 移动到 /,执行 NEW_INIT。PID 必须为 1。
NEW_ROOT 必须是挂载点。
-c DEV 切换后将标准 I/O 重定向到 DEV
-d CAPS 丢弃功能
-n 进行模拟运行
run-parts
run-parts [-a ARG]... [-u UMASK] [--reverse] [--test] [--exit-on-error] DIRECTORY
在 DIRECTORY 中运行一系列脚本
-a ARG 将 ARG 作为参数传递给脚本
-u UMASK 在运行脚本之前设置 UMASK
--reverse 反转执行顺序
--test 执行模拟
--exit-on-error 如果脚本以非零状态退出,则退出
sed sed [-i[SFX]] [-nrE] [-f FILE]... [-e CMD]... [FILE]... 或者:sed [-i[SFX]] [-nrE] CMD
[FILE]...
-e CMD 将 CMD 添加到 sed 命令中以执行
-f FILE 将 FILE 的内容添加到 sed 命令中以执行
-i[SFX] 就地编辑文件(否则写入标准输出)
-n 禁止自动打印模式空间
-r,-E 使用扩展正则表达式语法
如果没有 -e 或 -f,则第一个非选项参数是 sed 命令字符串。其余参数是输入文件(如果没有,则为标准输入)。
seq seq [-w] [-s SEP] [FIRST [INC]] LAST
打印从 FIRST 到 LAST 的数字,步长为 INC。FIRST 和 INC 的默认值为 1。
-w 用前导零填充
-s SEP 字符串分隔符
setkeycodes
setkeycodes { SCANCODE KEYCODE }...
修改内核的扫描码到按键码映射,允许不寻常的键盘生成可用的按键码。
SCANCODE 为 xx 或 e0xx(十六进制),KEYCODE 为十进制。
setpriv
setpriv [OPTIONS] PROG ARGS
以不同的权限设置运行 PROG
-d,--dump 显示当前能力 --nnp,--no-new-privs 忽略 setuid/setgid 位
和文件能力 --inh-caps CAP,CAP 设置可继承的能力 --ambient-caps
CAP,CAP 设置环境能力
setsid
setsid [-c] PROG ARGS
在一个新的会话中运行 PROG。PROG 将没有控制终端,并且不会受到键盘信号(^C 等)的影响。
-c 将控制终端设置为标准输入
sh sh [-il] [-|+Cabefmnuvx] [-|+o OPT]... [-c 'SCRIPT' [ARG0 ARGS] | FILE ARGS | -s ARGS]
Unix shell 解释器
sha1sum
sha1sum [-c[sw]] [FILE]...
打印或检查 SHA1 校验和
-c 根据 FILE 中的列表检查校验和
-s 不输出任何内容,状态代码显示成功
-w 警告格式不正确的校验和行
sha256sum
sha256sum [-c[sw]] [FILE]...
打印或检查 SHA256 校验和
-c 根据 FILE 中的列表检查校验和
-s 不输出任何内容,状态代码显示成功
-w 警告格式不正确的校验和行
sha3sum
sha3sum [-c[sw]] [-a BITS] [FILE]...
打印或检查 SHA3 校验和
-c 根据 FILE 中的列表检查校验和
-s 不输出任何内容,状态代码显示成功
-w 警告格式不正确的校验和行
-a BITS 224(默认值)、256、384、512
sha512sum
sha512sum [-c[sw]] [FILE]...
打印或检查 SHA512 校验和
-c 根据 FILE 中的列表检查校验和
-s 不输出任何内容,状态代码显示成功
-w 警告格式不正确的校验和行
shred
shred [-fuz] [-n N] [-s SIZE] FILE...
覆盖/删除文件
-f chmod 以确保可写
-s SIZE 要写入的大小
-n N 覆盖 N 次(默认值为 3)
-z 最后一次用零覆盖
-u 删除文件
shuf
shuf [-n NUM] [-o FILE] [-z] [FILE | -e [ARG...] | -i L-H]
随机排列行
-n NUM 输出最多 NUM 行
-o FILE 写入 FILE,而不是标准输出
-z 以 NUL 结尾的输出
-e 将 ARGs 视为行
-i L-H 将数字 L-H 视为行
sleep
sleep [N]...
暂停一段时间,等于给定参数的总和,每个参数可以有一个可选的后缀 (s) 秒、(m) 分钟、(h) 小时或 (d) 天。
sort
sort [-nrughMcszbdfiokt] [-o FILE] [-k START[.OFS][OPTS][,END[.OFS][OPTS]] [-t CHAR] [FILE]...
对文本行进行排序
-o FILE 输出到 FILE
-c 检查输入是否已排序
-b 忽略前导空格
-f 忽略大小写
-i 忽略不可打印字符
-d 字典顺序(仅空白或字母数字)
-n 按数字排序
-g 通用数字排序
-h 按人类可读数字排序(2K 1G)
-M 按月份排序
-V 按版本排序
-t CHAR 字段分隔符
-k N[,M] 按第 N 个字段排序
-r 反向排序
-s 稳定(不要按字母顺序排序重复项)
-u 抑制重复行
-z NUL 结尾的输入和输出
ssl_client
ssl_client [-e] -s FD [-r FD] [-n SNI]
start-stop-daemon
start-stop-daemon -S|-K [OPTIONS] [-- ARGS]
搜索匹配的进程,然后 -S:如果未找到匹配的进程,则启动进程;-K:停止所有匹配的进程
进程匹配:
-u USERNAME|UID 仅匹配此用户的进程
-n NAME 匹配进程,进程的名称
在 /proc/PID/stat 中的 comm 字段中
-x EXECUTABLE 匹配进程,其可执行文件
在 /proc/PID/cmdline 中
-p FILE 匹配具有从 FILE 中读取的 PID 的进程
必须满足所有指定的条件
-S 仅:
-x EXECUTABLE 要运行的程序
-a NAME 第零个参数
-b 后台
-O FILE 将 stdout 和 stderr 附加到 FILE
-N N 更改 nice 等级
-c USER[:[GRP]] 更改用户/组
-d DIR 更改为 DIR
-m 将 PID 写入由 -p 指定的 pidfile
-K 仅:
-s SIG 要发送的信号
-t 仅匹配,如果找到则以 0 状态退出
其他:
-o 如果没有任何操作,则以状态 0 退出
-v 详细
-q 安静
stat
stat [-ltf] [-c FMT] FILE...
显示文件(默认)或文件系统状态
-c FMT 使用指定的格式
-f 显示文件系统状态
-L 跟踪链接
-t 简洁显示
文件的 FMT 序列:
%a 以八进制形式显示访问权限
%A 以人类可读的形式显示访问权限
%b 分配的块数(参见 %B)
%B 由 %b 报告的每个块的大小(以字节为单位)
%d 十进制设备号
%D 十六进制设备号
%f 十六进制的原始模式
%F 文件类型
%g 组 ID
%G 组名
%h 硬链接数
%i inode 号
%n 文件名
%N 文件名,如果是符号链接,则为 -> TARGET
%o I/O 块大小
%s 总大小(以字节为单位)
%t 十六进制的主设备类型
%T 十六进制的次设备类型
%u 用户 ID
%U 用户名
%x 上次访问的时间
%X 上次访问的时间,自 Epoch 以来的秒数
%y 上次修改的时间
%Y 上次修改的时间,自 Epoch 以来的秒数
%z 上次更改的时间
%Z 上次更改的时间,自 Epoch 以来的秒数
文件系统的 FMT 序列:
%a 供非超级用户使用的可用空闲块
%b 总数据块数
%c 总文件节点数
%d 可用文件节点数
%f 可用空闲块数
%i 以十六进制表示的文件系统 ID
%l 最大文件名长度
%n 文件名
%s 块大小(用于更快的数据传输)
%S 基本块大小(用于块计数)
%t 类型,以十六进制表示
%T 类型,以人类可读的格式表示
strings
strings [-fo] [-t o|d|x] [-n LEN] [FILE]...
在二进制文件中显示可打印的字符串
-f 在字符串前加上文件名
-o 在字符串前加上八进制偏移量
-t o|d|x 在字符串前加上八进制/十进制/十六进制的偏移量
-n LEN 至少 LEN 个字符构成一个字符串(默认值为 4)
stty
stty [-a|g] [-F DEVICE] [SETTING]...
不带参数时,打印波特率、行规则和与 stty sane 的偏差
-F DEVICE 打开设备而不是 stdin
-a 以人类可读的格式打印所有当前设置
-g 以 stty 可读的格式打印
[SETTING] 请参阅 man 页面
su su [-lmp] [-s SH] [-] [USER [FILE ARGS | -c 'CMD' [ARG0 ARGS]]]
以 USER(默认情况下为 root)的用户身份运行 shell
-,-l 清除环境变量,转到主目录,以登录 shell 运行 shell
-p,-m 不设置新的 $HOME、$SHELL、$USER、$LOGNAME
-c CMD 要传递给 'sh -c' 的命令
-s SH 要使用的 shell,而不是用户的默认 shell
sulogin
sulogin [-t N] [TTY]
单用户登录
-p 启动一个登录 shell
-t SEC 超时时间
svc svc [-udopchaitkx] SERVICE_DIR...
控制由 runsv 监督程序监控的服务
-u 如果服务未运行,则启动它;如果服务停止,则重新启动
-d 如果服务正在运行,则发送 TERM+CONT 信号;不重新启动
-o 一次:如果服务未运行,则启动它;不重新启动
-pchaitk 向服务发送 STOP、CONT、HUP、ALRM、INT、TERM、KILL 信号
-x 退出:当服务停止时,runsv 将退出
svok
svok SERVICE_DIR
检查 runsv 监督程序是否正在运行。如果正在运行,则退出代码为 0;如果未运行,则退出代码为 100;如果 SERVICE_DIR 不存在,则退出代码为 111(并显示错误消息)。
swapoff
swapoff [-a] [DEVICE]
停止在 DEVICE 上进行交换
-a 停止所有交换设备上的交换
swapon
swapon [-a] [-e] [-d[POL]] [DEVICE]
在 DEVICE 上开始交换
-a 在所有交换设备上开始交换
-d[POL] 在 swapon 时丢弃块(POL=once),
在释放时丢弃(POL=pages),或同时丢弃(省略 POL)
-e 静默跳过不存在的设备
switch_root
switch_root [-c CONSOLE_DEV] NEW_ROOT NEW_INIT [ARGS]
释放 initramfs 并切换到另一个根文件系统:
chroot 到 NEW_ROOT,删除所有 / 中的内容,将 NEW_ROOT 移动到 /,执行 NEW_INIT。PID 必须为 1。NEW_ROOT 必须是一个挂载点。
-c DEV 在切换后将 stdio 重定向到 DEV
sync
sync [-df] [FILE]...
将所有缓冲的块(在 FILE 中)写入磁盘 -d 避免同步元数据 -f 同步 FILE 的底层文件系统
sysctl
sysctl [-enq] { -a | -p [FILE]... | [-w] [KEY[=VALUE]]... }
显示/设置内核参数
-e 不提示未知的键
-n 不显示键名
-q 安静模式
-a 显示所有值
-p 从 FILE 中设置值(默认 /etc/sysctl.conf)
-w 设置值
syslogd
syslogd [OPTIONS]
系统日志工具
-n 在前景中运行
-R HOST[:PORT] 记录到 HOST:PORT(默认 PORT:514)
-L 本地记录并通过网络记录(默认仅网络记录,除非使用 -R)
-C[size_kb] 记录到共享内存缓冲区(使用 logread 读取)
-O FILE 记录到 FILE(默认:/var/log/messages,如果为 - 则输出到 stdout)
-s SIZE 在旋转之前,最大大小(KB)(默认 200KB,0=关闭)
-b N 保留 N 个旋转的日志(默认 1,最大 99,0=清除)
-l N 仅记录优先级高于 prio N 的消息(1-8)
-S 较小的输出
-t 删除客户端生成的时间戳
-D 删除重复项
-f FILE 使用 FILE 作为配置文件(默认:/etc/syslog.conf)
tac tac [FILE]...
连接 FILE 并以相反的顺序打印
tail
tail [OPTIONS] [FILE]...
打印 FILE 的最后 10 行(或 stdin)。如果有多个 FILE,则在每个文件名前面加上文件名标题。
-c [+]N[bkm] 打印最后 N 个字节
-n N[bkm] 打印最后 N 行
-n +N[bkm] 从第 N 行开始并打印其余部分
(b:*512 k:*1024 m:*1024^2)
-q 从不打印标题
-v 始终打印标题
-f 打印数据,文件会增长
-F 与 -f 相同,但会继续重试
-s SECONDS 在 -f 模式下,每次读取之间等待 SECONDS
tar tar c|x|t [-ZzJjahmvokO] [-f TARFILE] [-C DIR] [FILE]...
创建、提取或列出 tar 文件中的文件
c 创建
x 提取
t 列出
-f FILE TARFILE 的名称(' - ' 用于 stdin/out)
-C DIR 在操作之前更改到 DIR
-v 详细模式
-O 提取到 stdout
-m 不恢复 mtime
-o 不恢复用户:组
-k 不替换现有文件
-Z (解)压缩使用 compress
-z (解)压缩使用 gzip
-J (解)压缩使用 xz
-j (解)压缩使用 bzip2
--lzma (解)压缩使用 lzma
-a (解)压缩基于扩展名
-h 跟随符号链接
--overwrite 替换现有文件
--strip-components NUM 删除 NUM 个前导组件
--no-recursion 不要在目录中递归
--numeric-owner 使用数字用户:组
--no-same-permissions 不要恢复访问权限
--to-command COMMAND 将文件管道传输到 COMMAND
taskset
taskset [-ap] [HEXMASK | -c LIST] { PID | PROG ARGS }
设置或获取 CPU 亲和性
-p 对 PID 进行操作
-a 对所有线程进行操作
-c 亲和性是一个列表,而不是掩码
tc tc OBJECT CMD [dev STRING]
OBJECT: qdisc|class|filter CMD: add|del|change|replace|show
qdisc [handle QHANDLE] [root|ingress|parent CLASSID] [[QDISC_KIND] [help|OPTIONS]]
QDISC_KIND := [p|b]fifo|tbf|prio|red|etc. qdisc show [dev STRING] [ingress] class
[classid CLASSID] [root|parent CLASSID] [[QDISC_KIND] [help|OPTIONS] ] class show [ dev
STRING ] [root|parent CLASSID] filter [pref PRIO] [protocol PROTO] [root|classid
CLASSID] [handle FILTERID] [[FILTER_TYPE] [help|OPTIONS]] filter show [dev STRING]
[root|parent CLASSID]
tee tee [-ai] [FILE]...
将标准输入复制到每个 FILE,以及复制到标准输出
-a 追加到给定的 FILE,不要覆盖
-i 忽略中断信号 (SIGINT)
telnet
telnet [-a] [-l USER] HOST [PORT]
连接到 telnet 服务器
-a 使用 $USER 变量自动登录
-l USER 以 USER 身份自动登录
tftp
tftp [OPTIONS] HOST [PORT]
从/到 tftp 服务器传输文件
-l FILE 本地 FILE
-r FILE 远程 FILE
-g 获取文件
-p 发送文件
-b SIZE 以字节为单位传输块
time
time [-vpa] [-o FILE] PROG ARGS
运行 PROG,在退出时显示资源使用情况
-v 详细信息
-p POSIX 输出格式
-f FMT 自定义格式
-o FILE 将结果写入 FILE
-a 追加(否则覆盖)
timeout
timeout [-s SIG] [-k KILL_SECS] SECS PROG ARGS
运行 PROG。如果在 SECS 秒内未完成,则向其发送 SIG 信号。默认 SIG:TERM。如果仍在 KILL_SECS 秒后存在,则发送 KILL 信号。
top top [-bH] [-n COUNT] [-d SECONDS]
实时显示进程活动视图。每隔 SECONDS 从 /proc 读取所有进程的状态,并显示一个屏幕的进程。键:
N/M/P/T:按 pid/mem/cpu/time 排序
R:反向排序
H:切换线程
Q、^C:退出
选项:
-b 批处理模式
-n N 在 N 次迭代后退出
-d SEC 两次更新之间的延迟
-H 显示线程
touch
touch [-cham] [-d DATE] [-t DATE] [-r FILE] FILE...
更新 FILE 的 mtime
-c 不要创建文件
-h 不要跟随链接
-a 仅更改 atime
-m 仅更改 mtime
-d DT 要使用的日期/时间
-t DT 要使用的日期/时间
-r FILE 使用 FILE 的日期/时间
tr tr [-cds] STRING1 [STRING2]
从标准输入中转换、压缩或删除字符,并写入标准输出
-c 取 STRING1 的补集
-d 删除输入字符,这些字符由 STRING1 编码
-s 将多个输出字符(STRING2)压缩为一个字符
traceroute
traceroute [-46Flnrv] [-f 1ST_TTL] [-m MAXTTL] [-q PROBES] [-p PORT] [-t TOS] [-w
WAIT_SEC] [-s SRC_IP] [-i IFACE] [-z PAUSE_MSEC] HOST [BYTES]
跟踪到 HOST 的路由
-4、-6 强制 IP 或 IPv6 名称解析
-F 设置不要分片的位
-l 显示返回数据包的 TTL 值
-n 打印数字地址
-r 绕过路由表,直接发送到 HOST
-v 详细信息
-f N 第一个跃点的数量(默认值为 1)
-m N 最大跃点数
-q N 每个跃点的探测次数(默认值为 3)
-p N 探测中使用的基本 UDP 端口号
(默认值为 33434)
-s IP 源地址
-i IFACE 源接口
-t N 探测数据包中的服务类型(默认值为 0)
-w SEC 等待响应(默认值为 3)
-z MSEC 在每次发送之前等待
traceroute6
traceroute6 [-nrv] [-f 1ST_TTL] [-m MAXTTL] [-q PROBES] [-p PORT] [-t TOS] [-w WAIT_SEC]
[-s SRC_IP] [-i IFACE] [-z PAUSE_MSEC] HOST [BYTES]
跟踪到 HOST 的路由
-n 打印数字地址
-r 绕过路由表,直接发送到 HOST
-v 详细
-f N 第一个跃点的数量(默认 1)
-m N 最大跃点数
-q N 每个跃点的探测次数(默认 3)
-p N 探测中使用的基本 UDP 端口号(默认 33434)
-s IP 源地址
-i IFACE 源接口
-t N 探测数据包中的服务类型(默认 0)
-w SEC 等待响应的时间(默认 3)
-z MSEC 在每次发送之前等待的时间
truncate
truncate [-c] -s SIZE FILE...
将 FILE 截断为 SIZE
-c 不要创建文件
-s SIZE
ts ts [-is] [STRFTIME]
将 stdin 管道传输到 stdout,在每行添加时间戳
-s 自开始以来的时间
-i 自上一行以来的时间
tty tty [-s]
打印 stdin 的终端的文件名
-s 什么也不打印,只返回退出状态
tunctl
tunctl [-f DEVICE] [-t NAME | -d NAME]
创建或删除 TUN/TAP 接口
-f DEV TUN 设备(默认 /dev/net/tun)
-t NAME 创建接口(默认:tapN)
-d NAME 删除接口
ubirename
ubirename UBI_DEVICE OLD_VOLNAME NEW_VOLNAME [OLD2 NEW2]...
在 UBI_DEVICE 上重命名 UBI 卷
udhcpc
udhcpc [-fbqRB] [-a[MSEC]] [-t N] [-T SEC] [-A SEC|-n] [-i IFACE] [-s PROG] [-p PIDFILE]
[-oC] [-r IP] [-V VENDOR] [-F NAME] [-x OPT:VAL]... [-O OPT]...
-i IFACE 使用的接口(默认 eth0)
-s PROG 在 DHCP 事件时运行 PROG(默认 /etc/udhcpc/default.script)
-p FILE 创建 pidfile
-B 请求广播回复
-t N 发送最多 N 个发现数据包(默认 3)
-T SEC 数据包之间的暂停时间(默认 3)
-A SEC 如果未获得租约,则等待(默认 20)
-b 如果未获得租约,则在后台运行
-n 如果未获得租约,则退出
-q 获得租约后退出
-R 退出时释放 IP
-f 在前台运行
-S 同时记录到 syslog
-a[MSEC] 使用 ARP ping 验证提供的地址
-r IP 请求此 IP 地址
-o 不要请求任何选项(除非提供 -O)
-O OPT 从服务器请求选项 OPT(累积)
-x OPT:VAL 在发送的数据包中包含选项 OPT(累积)
字符串、数字和十六进制字节选项的示例:
-x hostname:bbox - 选项 12
-x lease:3600 - 选项 51(租约时间)
-x 0x3d:0100BEEFC0FFEE - 选项 61(客户端 ID)
-x 14:'"dumpfile"' - 选项 14(带 shell 引号)
-F NAME 请求服务器更新 NAME 的 DNS 映射
-V VENDOR 供应商标识符(默认 'udhcp VERSION')
-C 不要将 MAC 作为客户端标识符发送
信号:
USR1 续订租约
USR2 释放租约
udhcpc6
udhcpc6 [-fbqR] [-t N] [-T SEC] [-A SEC|-n] [-i IFACE] [-s PROG] [-p PIDFILE] [-ldo] [-r
IPv6] [-x OPT:VAL]... [-O OPT]...
-i IFACE 使用的接口 (默认 eth0)
-p FILE 创建 pid 文件
-s PROG 在 DHCP 事件时运行 PROG (默认 /etc/udhcpc/default6.script)
-B 请求广播回复
-t N 发送最多 N 个探测数据包
-T SEC 数据包之间的暂停时间 (默认 3)
-A SEC 如果未获得租约,则等待 (默认 20)
-b 如果未获得租约,则在后台运行
-n 如果未获得租约,则退出
-q 在获得租约后退出
-R 在退出时释放 IP
-f 在前台运行
-S 同时记录到 syslog
-l 发送“信息请求”而不是“请求”,(用于不分配 IPv6 地址的服务器)
-r IPv6 请求此地址(“no”表示不请求任何 IP)
-d 请求前缀
-o 不请求任何选项(除非给出 -O)
-O OPT 从服务器请求选项 OPT(累积)
-x OPT:VAL 在发送的数据包中包含选项 OPT(累积)
字符串、数字和十六进制字节选项的示例:
-x hostname:bbox - 选项 12
-x lease:3600 - 选项 51(租期)
-x 0x3d:0100BEEFC0FFEE - 选项 61(客户端 ID)
-x 14:'"dumpfile"' - 选项 14(带引号的 shell)
信号:
USR1 续订租约
USR2 释放租约
udhcpd
udhcpd [-fS] [-I ADDR] [-a MSEC] [CONFFILE]
DHCP 服务器
-f 在前台运行
-S 同时记录到 syslog
-I ADDR 本地地址
-a MSEC ARP ping 的超时时间(默认 2000)
信号:
USR1 更新租约文件
uevent
uevent [PROG ARGS]
uevent 为每个 netlink 通知运行 PROG。PROG 的环境包含来自内核传递的数据。 典型用法(用于动态设备节点创建的守护程序): # uevent mdev
& mdev -s
umount
umount [-rlfda] [-t FSTYPE] FILESYSTEM|DIRECTORY
卸载文件系统
-a 卸载所有文件系统
-r 如果安装忙,则将设备重新安装为只读
-l 延迟卸载(分离文件系统)
-f 强制卸载(例如,无法访问的 NFS 服务器)
-d 如果已使用,则释放循环设备
-t FSTYPE[,...] 仅卸载这些文件系统类型
uname
uname [-amnrspvio]
打印系统信息
-a 打印所有
-m 机器(硬件)类型
-n 主机名
-r 内核版本
-s 内核名称(默认)
-p 处理器类型
-v 内核版本
-i 硬件平台
-o 操作系统名称
uncompress
uncompress [-cf] [FILE]...
解压缩文件(或 stdin)
-c 写入标准输出
-f 覆盖
unexpand
unexpand [-fa][-t N] [FILE]...
将空格转换为制表符,并写入标准输出
-a 转换所有空格
-f 仅转换前导空格
-t N 每个 N 个字符使用制表符
uniq
uniq [-cduiz] [-f,s,w N] [FILE [OUTFILE]]
删除重复行
-c 在行前添加出现次数
-d 仅打印重复行
-u 仅打印唯一行
-i 忽略大小写
-z NUL 终止输出
-f N 跳过前 N 个字段
-s N 跳过前 N 个字符(在任何跳过的字段之后)
-w N 比较行中的 N 个字符
unix2dos
unix2dos [-ud] [FILE]
将 FILE 从 Unix 格式转换为 DOS 格式。如果没有指定文件,则使用 stdin/stdout。
-u dos2unix
-d unix2dos
unlink
unlink FILE
通过调用 unlink() 删除 FILE
unlzma
unlzma [-cfk] [FILE]...
解压缩 FILE(或 stdin)
-c 写入 stdout
-f 强制
-k 保留输入文件
-t 测试完整性
unshare
unshare [OPTIONS] [PROG ARGS]
-m,--mount[=FILE] 分离挂载命名空间
-u,--uts[=FILE] 分离 UTS 命名空间(主机名等)
-i,--ipc[=FILE] 分离 System V IPC 命名空间
-n,--net[=FILE] 分离网络命名空间
-p,--pid[=FILE] 分离 PID 命名空间
-U,--user[=FILE] 分离用户命名空间
-f 在执行 PROG 之前执行 fork
-r 将当前用户映射到 root(隐含 -U)
--mount-proc[=DIR] 首先挂载 /proc 文件系统(隐含 -m)
--propagation slave|shared|private|unchanged
修改挂载命名空间中的挂载传播方式 --setgroups allow|deny 控制用户命名空间中的 setgroups 系统调用
unxz
unxz [-cfk] [FILE]...
解压缩 FILE(或 stdin)
-c 写入 stdout
-f 强制
-k 保留输入文件
-t 测试完整性
unzip
unzip [-lnojpqK] FILE[.zip] [FILE]... [-x FILE]... [-d DIR]
从 ZIP 归档文件中提取 FILE
-l 列出内容(与 -q 结合使用以获得简短格式)
-n 绝不覆盖文件(默认:询问)
-o 覆盖
-j 不恢复路径
-p 写入 stdout
-t 测试
-q 安静
-K 不清除 SUID 位
-x FILE 排除 FILE
-d DIR 提取到 DIR
uptime
uptime
显示自上次启动以来的时间
usleep
usleep N
暂停 N 微秒
uudecode
uudecode [-o OUTFILE] [INFILE]
Uudecode 一个文件,除非给出 -o,否则在 uuencoded 源代码中查找 OUTFILE
uuencode
uuencode [-m] [FILE] STORED_FILENAME
将 FILE(或 stdin)uuencode 到 stdout
-m 使用 RFC1521 中的 base64 编码
vconfig
vconfig COMMAND [OPTIONS]
创建和删除虚拟以太网设备
add IFACE VLAN_ID
rem VLAN_NAME
set_flag IFACE 0|1 VLAN_QOS
set_egress_map VLAN_NAME SKB_PRIO VLAN_QOS
set_ingress_map VLAN_NAME SKB_PRIO VLAN_QOS
set_name_type NAME_TYPE
vi vi [-c CMD] [-R] [-H] [FILE]...
编辑 FILE
-c CMD 初始命令($EXINIT 和 ~/.exrc 也可用)
-R 只读
-H 列出可用功能
w w
显示谁已登录
watch
watch [-n SEC] [-t] PROG ARGS
定期运行 PROG
-n SEC 周期(默认 2)
-t 不打印标题
watchdog
watchdog [-t N[ms]] [-T N[ms]] [-F] DEV
定期写入看门狗设备 DEV
-T N 如果在 N 秒内未重置,则重新启动(默认 60)
-t N 每 N 秒重置一次(默认 30)
-F 在前景中运行
使用 500ms 指定毫秒周期
wc wc [-cmlwL] [FILE]...
计算 FILE(或 stdin)的行数、单词数和字节数
-c 统计字节数
-m 统计字符数
-l 统计换行符数
-w 统计单词数
-L 打印最长行的长度
wget
wget [-cqS] [--spider] [-O FILE] [-o LOGFILE] [--header STR] [--post-data STR |
--post-file FILE] [-Y on/off] [--no-check-certificate] [-P DIR] [-U AGENT] [-T SEC]
URL...
通过 HTTP 或 FTP 检索文件
--spider 仅检查 URL 是否存在:$? 为 0 表示存在
--header STR 将 STR(格式为“header: value”)添加到标头
--post-data STR 使用 POST 方法发送 STR
--post-file FILE 使用 POST 方法发送 FILE
--no-check-certificate 不验证服务器的证书
-c 继续检索中止的传输
-q 安静模式
-P DIR 保存到 DIR(默认值为 .)
-S 显示服务器响应
-T SEC 网络读取超时时间为 SEC 秒
-O FILE 保存到 FILE('-' 用于 stdout)
-o LOGFILE 将消息记录到 FILE
-U STR 将 STR 用于 User-Agent 标头
-Y on/off 使用代理
which
which [-a] COMMAND...
定位 COMMAND
-a 显示所有匹配项
who who [-aH]
显示谁已登录
-a 显示所有
-H 打印列标题
whoami
whoami
打印与当前有效用户 ID 关联的用户名
xargs
xargs [OPTIONS] [PROG ARGS]
对从 stdin 读取的每个项目运行 PROG
-0 NULL 终止的输入
-a FILE 从 FILE 而不是 stdin 读取
-o 重新打开 stdin 为 /dev/tty
-r 如果输入为空,则不运行命令
-t 在执行之前将命令打印到 stderr
-p 询问用户是否运行每个命令
-E STR,-e[STR] STR 停止输入处理
-I STR 将 PROG ARGS 中的 STR 替换为输入行
-n N 每次传递给 PROG 的参数不超过 N 个
-s N 命令行的字节数不超过 N 个
-P N 并行运行最多 N 个 PROG
-x 如果大小超出限制,则退出
xxd xxd [-pri] [-g N] [-c N] [-l LEN] [-s OFS] [-o OFS] [FILE]
十六进制转储 FILE(或 stdin)
-g N 每组的字节数
-c N 每行的字节数
-p 仅显示十六进制字节,假设 -c30
-i C 包含文件样式
-l LENGTH 仅显示前 LENGTH 个字节
-s OFFSET 跳过 OFFSET 个字节
-o OFFSET 将 OFFSET 添加到显示的偏移量
-r 反转(与 -p 一起使用,假设输入中没有偏移量)
xz xz -d [-cfk] [FILE]...
解压缩 FILE(或 stdin)
-d 解压缩
-c 写入 stdout
-f 强制
-k 保留输入文件
-t 测试完整性
xzcat
xzcat [FILE]...
解压缩到 stdout
yes yes [STRING]
重复打印一行,带有 STRING,或者 'y'
zcat
zcat [FILE]...
解压缩到 stdout
LIBC NSS
GNU Libc (glibc) 使用名称服务切换 (NSS) 来配置 C 库在本地环境中的行为,并配置它如何读取系统数据,例如密码和组信息。这通过 /etc/nsswitch.conf 配置文件以及 /lib/libnss_* 库中的一个或多个来实现。BusyBox 试图避免使用任何使用 NSS 的 libc 调用。但是,一些小程序,例如 login 和 su,将使用需要 NSS 的 libc 函数。
如果启用 CONFIG_USE_BB_PWD_GRP,BusyBox 将使用内部函数直接访问 /etc/passwd、/etc/group 和 /etc/shadow 文件,而无需使用 NSS。这可能允许您运行系统,而无需安装任何 NSS 配置文件和库。
与 glibc 配合使用时,BusyBox 的“网络”小程序也将要求您安装至少一些 glibc NSS 内容(特别是 /etc/nsswitch.conf、/lib/libnss\_dns*、/lib/libnss\_files* 和 /lib/libresolv*)。
shameless plug:作为一种替代方案,可以使用 C 库,例如 uClibc。除了使您的系统显著变小之外,uClibc 也不需要使用任何 NSS 支持文件或库。
MAINTAINER
Denis Vlasenko <_>
AUTHORS
以下人员为 BusyBox 贡献了代码,无论他们是否知道。如果您编写了包含在 BusyBox 中的代码,您应该在此处列出,以便获得您应得的荣耀。如果您应该在此处列出,或者您所做的事情的描述需要更多详细信息,或者不正确,请发送更新。
Emanuele Aina <_>
run-parts
Erik Andersen <_>
大量新内容,对大多数核心应用程序进行了重大重写,如头文件中所述,大量新应用程序。
许多乏味的工作,编写这些乏味的文件,但没有人会真正阅读。
Laurence Anderson <_>
rpm2cpio, unzip, get_header_cpio, read_gz 界面,rpm
Jeff Angielski <_>
ftpput, ftpget
Edward Betts <_>
expr, hostid, logname, whoami
John Beppu <_>
du, nslookup, sort
Brian Candler <_>
tiny-ls(ls)
Randolph Chung <_>
fbset, ping, hostname
Dave Cinege <_>
more(v2), makedevs, dutmp, 模块化,自动链接文件,
各种修复,Linux Router 项目维护
Jordan Crouse <_>
ipcalc
Magnus Damm <_>
tftp 客户端 insmod powerpc 支持
Larry Doolittle <_>
原始源代码目录编译,大量补丁和修复。
Glenn Engel <_>
httpd
Gennady Feldman <_>
Sysklogd(单线程 syslogd,IPC 循环缓冲区支持, logread),各种修复。
Karl M. Hegbloom <_>
cp_mv.c,测试套件,utility.c 的各种修复等。
Daniel Jacobowitz <_>
mktemp.c
Matt Kraai <_>
文档,错误修复,测试套件
Stephan Linz <_>
ipcalc,Red Hat 等效项
John Lombardo <_>
tr
Glenn McGrath <_>
通用解压缩代码和解压缩小程序,ifupdown,ftpgetput, nameif,sed,patch,fold,install,uudecode。 各种错误修复,审查和应用许多补丁。
Manuel Novoa III <_>
cat, head, mkfifo, mknod, rmdir, sleep, tee, tty, uniq, usleep, wc, yes,
mesg, vconfig, make_directory, parse_mode, dirname, mode_string,
get_last_path_component, simplify_path,以及一些简单的 libbb 例程
还包括 bug 修复、部分重写和大小优化,涉及以下程序:ash、basename、cal、cmp、cp、df、du、echo、env、ln、logname、md5sum、mkdir、mv、realpath、rm、sort、tail、touch、uname、watch、arith、human_readable、interface、dutmp、ifconfig、route。
Vladimir Oleynik <_>
cmdedit;xargs(当前版本);httpd(当前版本);
端口程序:ash、crond、fdisk、inetd、stty、traceroute、top;
locale、各种修复
以及对所有不完美事物毫不留情的批评者。
Bruce Perens <_>
BusyBox 的原始作者,创作于 1995 年和 1996 年。他的部分代码现在仍然可以在这里或那里找到……
Tim Riker <_>
bug 修复,狂热粉丝团成员。
Kent Robotti <_>
reset,大量的 bug 报告和补丁。
Chip Rosenthal <_>, <_>
wget - 经 Covad Communications 许可贡献。
Pavel Roskin <_>
大量的 bug 修复和补丁。
Gyepi Sam <_>
syslogd 的远程日志记录功能。
Linus Torvalds <_>
mkswap、fsck.minix、mkfs.minix。
Mark Whitley <_>
grep、sed、cut、xargs(早期版本)、
风格指南、新应用指南、bug 修复等。
Charles P. Wright <_>
gzip、mini-netcat(nc)。
Enrique Zanardi <_>
tarcat(已移除)、loadkmap、各种修复、Debian 维护。
Tito Ragusa <_>
devfsd 以及 strings、openvt 和 deallocvt 中的大小优化。
Paul Fox <_>
ash 的 vi 编辑模式,以及各种其他补丁/修复。
Roberto A. Foglietta <_>
端口程序:dnsd。
Bernhard Reutner-Fischer <_>
杂项。
Mike Frysinger <_>
初始 e2fsprogs、printenv、setarch、sum、杂项。
Jie Zhang <_>
修复了 msh 和 hush 中的两个 bug(已终止进程的退出代码)。