toybox
======

toybox 是一个轻量级的Linux命令行工具集合，它将常用的Linux命令行工具合并到一个单独的可执行文件中。

#### 前置条件

#### \[h2\]使用方法1

*   正常连接设备
*   使用hdc shell进入命令行执行模式

#### \[h2\]使用方法2

*   应用沙箱内运行

#### 命令行说明

toybox的执行方式有两种：

*   toybox \[COMMAND\] \[ARGUMENTS...\]
    
*   直接执行 \[COMMAND\] \[ARGUMENTS...\]
    

其中 \[COMMAND\] 可被替换为toybox支持的任意命令（可通过输入不带参数的toybox命令查询）。

\[ARGUMENTS...\] 为\[COMMAND\]所需要的参数。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/bd/v3/ZjMjHCNsSK-ofK9EbpUlGg/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073502Z&HW-CC-Expire=86400&HW-CC-Sign=938A7D34D0ADFF1D3387EDA34FC3293A08D3F74621BBA669E5BA30FC1BADFCD1)

当前版本中，不同设备对toybox的支持情况存在差异。开发者可直接执行toybox获取设备支持的全量命令。

#### \[h2\]帮助命令

格式：toybox \[--long | --help | --version | \[COMMAND\] \[ARGUMENTS...\]\]

| 选项 | 参数 | 说明 |
| :-- | :-- | :-- |
| \--help | NA | 显示命令帮助。 |
| \--long | NA | 显示支持的所有命令的路径。 |
| \--version | NA | 显示版本号。 |
| NA | NA | 显示所有\[COMMAND\]支持的命令。 |
| \[COMMAND\] | \[ARGUMENTS\] | 执行具体的命令。大部分命令也支持--help和--version参数。 |

格式：help \[-ahu\] \[COMMAND\]

| 参数 | 说明 |
| :-- | :-- |
| COMMAND | 显示COMMAND的帮助。\[COMMAND\] 可被替换为toybox支持的任意命令。 |

| 选项 | 说明 |
| :-- | :-- |
| \-a | 显示所有命令的帮助。 |
| \-h | 仅显示help命令的帮助。 |
| \-u | 以HTML方式显示help命令的帮助。 |

#### \[h2\]数学与计算机基础函数

| 命令 | 说明 |
| :-- | :-- |
| factor | 
分解质因数。

usage: factor \[-hx\] NUMBER...

 |
| mcookie | 

生成128位强随机数。

usage: mcookie \[-vV\]

 |
| mkpasswd | 

对密码进行加密。

usage: mkpasswd \[-P FD\] \[-m TYPE\] \[-S SALT\] \[PASSWORD\] \[SALT\]

 |
| uuidgen | 

创建并打印新的RFC4122随机UUID。

usage: uuidgen

 |

#### \[h2\]终端操作

| 命令 | 说明 |
| :-- | :-- |
| chvt | 
切换到虚拟终端N。

usage: chvt NUM

 |
| chroot | 

以指定的根目录运行命令。

usage: chroot NEWROOT \[COMMAND \[ARG...\]\]

 |
| clear | 

清空终端。

usage: clear

 |
| nohup | 

运行一个独立于终端的命令。

usage: nohup COMMAND...

 |
| tty | 

显示连接到标准输入设备的终端的名称。

usage: tty \[-s\]

 |
| reset | 

复位终端。

usage: reset

 |

#### \[h2\]sh逻辑命令

| 命令 | 说明 |
| :-- | :-- |
| false | 
返回非零值。

usage: false

 |
| test | 

通过执行测试返回true或false。没有参数时返回false。

usage: test \[-bcdefghkLprSsuwx PATH\] \[-nz STRING\] \[-t FD\] \[X ?? Y\]

 |
| true | 

返回零。

usage: true

 |
| yes | 

反复输出行直到被杀死。如果没有参数，则输出“y”。

usage: yes \[args...\]

 |

#### \[h2\]系统操作

| 命令 | 说明 |
| :-- | :-- |
| dmesg | 
显示或控制内核环形缓冲区。

usage: dmesg \[-Cc\] \[-r | -t | -T\] \[-n LEVEL\] \[-s SIZE\] \[-w | -W\]

 |
| getconf | 

获取系统配置值，部分值需要path参数。

usage: getconf -a \[PATH\] | -l | NAME \[PATH\]

 |
| env | 

设置命令调用的环境，或列出环境变量。

usage: env \[-0i\] \[-e FILE\] \[-u NAME\] \[NAME=VALUE...\] \[COMMAND...\]

 |
| hostname | 

获取当前主机名。

usage: hostname \[-bdsf\] \[-F FILENAME\] \[newname\]

 |
| insmod | 

加载内核模块。

usage: insmod MODULE \[OPTION...\]

 |
| lsmod | 

显示当前已经加载的模块，它们的大小和依赖。

usage: lsmod

 |
| nproc | 

打印处理器数量。

usage: nproc \[--all\]

 |
| printenv | 

打印环境变量。

usage: printenv \[-0\] \[env\_var...\]

 |
| rmmod | 

卸载内核模块。

usage: rmmod \[-wf\] MODULE...

 |
| swapoff | 

停用交换空间。

usage: swapoff FILE

 |
| swapon | 

在指定的设备或文件上，使能内存交换。

usage: swapon \[-d\] \[-p priority\] filename

 |
| uname | 

打印系统信息。

usage: uname \[-asnrvmo\]

 |
| vmstat | 

打印虚拟内存信息。

usage: vmstat \[-n\] \[DELAY \[COUNT\]\]

 |

#### \[h2\]时间日期

| 命令 | 说明 |
| :-- | :-- |
| cal | 
打印日历。

usage: cal \[-h\] \[\[\[DAY\] MONTH\] YEAR\]

 |
| date | 

设置/获取当前日期/时间。

usage: date \[-u\] \[-I RES\] \[-r FILE\] \[-d DATE\] \[+DISPLAY\_FORMAT\] \[-D SET\_FORMAT\] \[SET\]

 |
| sleep | 

等待设置的时间后再退出。可以是小数。可选的后缀可以是“m”（分钟）、“h”（小时）、“d”（天）或“s”（秒，默认值）。

usage: sleep DURATION...

 |
| time | 

运行命令行并报告真实时间、用户时间和系统时间（以秒为单位）。(真实时间=时钟时间，用户时间=命令代码使用cpu的时间，系统时间=操作系统使用cpu的时间。)

usage: time \[-pv\] COMMAND...

 |
| uptime | 

显示当前时间，系统运行了多长时间，用户数量，以及过去1、5和15分钟的系统负载平均值。

usage: uptime \[-ps\]

 |
| usleep | 

等待设置的时间后再退出，单位微秒。

usage: usleep MICROSECONDS

 |

#### \[h2\]登录用户操作

| 命令 | 说明 |
| :-- | :-- |
| groups | 
打印用户所在的组。

usage: groups \[user\]

 |
| id | 

打印用户和组ID。

usage: id \[-Ggnru\] \[USER...\]

 |
| logname/whoami | 

打印当前用户名。

usage: logname/whoami

 |
| who | 

打印有关已登录用户的信息。

usage: who

 |
| w | 

显示用户登录情况和登录时间。

usage: w

 |

#### \[h2\]进程操作

| 命令 | 说明 |
| :-- | :-- |
| iotop | 
根据I/O对进程排序。

usage: iotop \[-AaKObq\] \[-n NUMBER\] \[-d SECONDS\] \[-p PID,\] \[-u USER,\]

 |
| kill | 

向进程发送信号。

usage: kill \[-l \[SIGNAL\] | -s SIGNAL | -SIGNAL\] pid...

 |
| killall | 

向具有给定名称的所有进程发送信号（默认：SIGTERM）。

usage: killall \[-l\] \[-iqv\] \[-SIGNAL | -s SIGNAL\] PROCESS\_NAME...

 |
| pidof | 

打印具有给定名称的所有进程的PID。

usage: pidof \[-s\] \[-o omitpid\[,omitpid...\]\] \[NAME...\]

 |
| pkill | 

按照进程名来杀死进程。

usage: pkill \[-fnovx\] \[-SIGNAL | -l SIGNAL\] \[PATTERN\] \[-G GID,\] \[-g PGRP,\] \[-P PPID,\] \[-s SID,\] \[-t TERM,\] \[-U UID,\] \[-u EUID,\]

 |
| ps | 

显示进程信息。

usage: ps \[-AadefLlnwZ\] \[-gG GROUP,\] \[-k FIELD,\] \[-o FIELD,\] \[-p PID,\] \[-t TTY,\] \[-uU USER,\]

 |
| pwdx | 

打印进程的工作目录。

usage: pwdx PID...

 |
| renice | 

调整进程/组/用户级别的进程优先级。

usage: renice \[-gpu\] -n INCREMENT ID...

 |
| setsid | 

在新的会话中运行命令。

usage: setsid \[-t\] command \[args...\]

 |
| taskset | 

启动一个仅在指定处理器上运行的任务，或者修改已经存在的进程的处理器偏好。

usage: taskset \[-ap\] \[mask\] \[PID | cmd \[args...\]\]

 |
| timeout | 

创建子进程执行命令，如果子进程超时未退出，则向子进程发送一个信号。DURATION可以是小数。可选的后缀可以是“m”（分钟）、“h”（小时）、“d”（天）或“s”（秒，默认值）。

usage: timeout \[-k DURATION\] \[-s SIGNAL\] DURATION COMMAND...

 |
| top | 

实时显示进程信息。

usage: top \[-Hhbq\] \[-k FIELD,\] \[-o FIELD,\] \[-s SORT\] \[-n NUMBER\] \[-m LINES\] \[-d SECONDS\] \[-p PID,\] \[-u USER,\]

 |
| nice | 

以指定的优先级运行命令。

usage: nice \[-n PRIORITY\] COMMAND...

 |
| nsenter | 

在特定的命名空间中运行指令。

usage: nsenter \[-t pid\] \[-F\] \[-i\] \[-m\] \[-n\] \[-p\] \[-u\] \[-U\] COMMAND...

 |
| ulimit/prlimit | 

显示或者设置进程的资源限制。

usage: ulimit/prlimit \[-P PID\] \[-SHRacdefilmnpqrstuv\] \[LIMIT\]

 |
| watch | 

每隔-n秒运行一次参数中的命令，显示执行结果。按q退出。

usage: watch \[-tebx\] \[-n SEC\] COMMAND...

 |
| xargs | 

运行命令行一次或多次，附加标准输入设备中的参数。

usage: xargs \[-0Pprt\] \[-snE STR\] COMMAND...

 |

#### \[h2\]设备节点操作

| 命令 | 说明 |
| :-- | :-- |
| df | 
显示命令行中列出的每个文件系统的总共、已使用和空闲的磁盘空间。无参数时显示已装载的所有文件系统。

usage: df \[-aHhikP\] \[-t TYPE\] \[FILE...\]

 |
| du | 

显示磁盘使用情况，文件和目录占用的空间。

usage: du \[-d N\] \[-abcHKkLlmsx\] \[FILE...\]

 |
| free | 

显示物理内存和交换空间的总量、可用量和已用量。

usage: free \[-bkmgt\]

 |
| freeramdisk | 

释放特定ramdisk的所有内存。

usage: freeramdisk \[RAM device\]

 |
| fstype | 

打印文件系统的类型。

usage: fstype DEV...

 |
| fsync | 

将文件状态与存储设备同步。

usage: fsync \[-d\] \[FILE...\]

 |
| lspci | 

显示 PCI 设备信息。

usage: lspci \[-ekmn\] \[-i FILE \]

 |
| lsusb | 

显示 USB 设备信息。

usage: lsusb

 |
| mount | 

在目录上挂载新的文件系统。如果没有参数，则显示现有的挂载。

usage: mount \[-afFrsvw\] \[-t TYPE\] \[-o OPTION,\] \[\[DEVICE\] DIR\]

 |
| mountpoint | 

检查目录或者设备是否是挂载点。

usage: mountpoint \[-qd\] DIR

mountpoint \[-qx\] DEVICE

 |
| sync | 

将缓存的数据写到磁盘。

usage: sync

 |
| sysctl | 

读写 /proc/sys 下的系统控制数据。

usage: sysctl \[-aAeNnqw\] \[-p \[FILE\] | KEY\[=VALUE\]...\]

 |
| umount | 

取消挂载文件系统。

usage: umount \[-a \[-t TYPE\[,TYPE...\]\]\] \[-vrfD\] \[DIR...\]

 |

#### \[h2\]网络操作

| 命令 | 说明 |
| :-- | :-- |
| ftpget/ftpput | 
与FTP服务器沟通，支持读、写、列举文件等操作。ftpget自带-g选项。ftpput自带-s选项。

usage: ftpget/ftpput \[-cvgslLmMdD\] \[-p PORT\] \[-P PASSWORD\] \[-u USER\] HOST \[LOCAL\] REMOTE

 |
| ifconfig | 

显示或配置网络接口。

usage: ifconfig \[-aS\] \[INTERFACE \[ACTION...\]\]

 |
| netstat | 

显示网络信息。

usage: netstat \[-pWrxwutneal\]

 |
| ping/ping6 | 

检测网络连通性。ping6自带-6选项。

usage: ping/ping6 \[OPTIONS\] HOST

 |
| telnet | 

连接telnet服务器。

usage: telnet HOST \[PORT\]

 |
| traceroute/traceroute6 | 

跟踪报文到HOST的路径。traceroute6自带-6选项。

usage: traceroute \[-46FUIldnvr\] \[-f 1ST\_TTL\] \[-m MAXTTL\] \[-p PORT\] \[-q PROBES\]

\[-s SRC\_IP\] \[-t TOS\] \[-w WAIT\_SEC\] \[-g GATEWAY\] \[-i IFACE\] \[-z PAUSE\_MSEC\] HOST \[BYTES\]

usage: traceroute6 \[-dnrv\] \[-m MAXTTL\] \[-p PORT\] \[-q PROBES\]\[-s SRC\_IP\] \[-t TOS\] \[-w WAIT\_SEC\]

\[-i IFACE\] HOST \[BYTES\]

 |
| wget | 

从网络上下载资源。

usage: wget \[OPTIONS\]... \[URL\]

\[OPTIONS\] = --max-redirect x -d -O filename -p data

 |

#### \[h2\]文件操作

| 命令 | 说明 |
| :-- | :-- |
| awk | 
awk是一个处理文本的工具，可对文档内容进行筛选、分析。

usage: awk \[-F sepstring\] \[-v assignment\]... program \[argument...\]

or:

awk \[-F sepstring\] -f progfile \[-f progfile\]... \[-v assignment\]...

\[argument...\]

 |
| base64 | 

通过base64算法进行加密/解密。

usage: base64 \[-di\] \[-w COLUMNS\] \[FILE...\]

 |
| basename | 

返回删除后缀的路径名的非目录部分。

usage: basename \[-a\] \[-s SUFFIX\] NAME... | NAME \[SUFFIX\]

 |
| cat | 

复制（连接）文件到标准输出设备。如果未列出任何文件，则从标准输入设备复制。“-”代表标准输入设备。

usage: cat \[-etuv\] \[FILE...\]

 |
| chcon | 

修改文件的SELinux安全上下文。

usage: chcon \[-hRv\] CONTEXT FILE...

 |
| chgrp/chown | 

修改文件的组。

usage: chgrp/chown \[-RHLP\] \[-fvh\] GROUP FILE...

 |
| chmod | 

更改列出的文件的模式（使用-R递归）。

usage: chmod \[-R\] MODE FILE...

 |
| cksum | 

对于每个文件，输出crc32的校验和、长度和文件名。如果未列出任何文件，则从标准输入设备复制。“-”代表标准输入设备。

usage: cksum \[-HIPLN\] \[FILE...\]

 |
| cmp | 

比较文件的内容（如果只给出一个，则与标准输入设备进行比较），可选在开始时跳过字节。

usage: cmp \[-ls\] \[-n LEN\] FILE1 \[FILE2 \[SKIP1 \[SKIP2\]\]\]

 |
| comm | 

读取FILE1和FILE2（这两个文件应该是有序的），并生成三个文本列作为输出：仅在FILE1中的行、仅在FILE2中的行、在两个文件中都有的行。“-”代表标准输入设备。

usage: comm \[-123\] FILE1 FILE2

 |
| count | 

将标准输入设备复制到标准输出设备，将简单的进度指示器显示到标准错误输出stderr。

usage: count \[-l\]

 |
| cp | 

将文件从SOURCE复制到DEST。如果有多个源，DEST必须是一个目录。

usage: cp \[-aDdFfHiLlnPpRrsTuv\] \[--preserve=motcxa\] \[-t TARGET\] SOURCE... \[DEST\]

 |
| cpio | 

从“newc”格式的cpio档案中读写文件。

usage: cpio -{o | t | i | p DEST} \[-v\] \[--verbose\] \[-F FILE\] \[--no-preserve-owner\]

\[ignored: -mdu -H newc\]

 |
| crc32 | 

输出每个文件的crc32校验和。

usage: crc32 \[file...\]

 |
| cut | 

将每个FILE中的行的选定部分打印到标准输出。每个选择列表以逗号分隔，可以是数字（从1开始计数）或破折号分隔的范围（其中X-表示X到行尾，-X表示从开始到X）。

usage: cut \[-Ds\] \[-bcCfF LIST\] \[-dO DELIM\] \[FILE...\]

 |
| dd | 

用于转换和复制文件的命令，可以用于创建磁盘镜像、备份数据、转换字符编码等任务。

usage: dd \[if | of=FILE\] \[ibs | obs | bs | count | seek | skip=N\] \[conv | status | iflag | oflag=FLAG\[,FLAG...\]\]

 |
| diff | 

比较文件/文件夹，输出差异。

usage: diff \[-abBdiNqrTstw\] \[-L LABEL\] \[-S FILE\] \[-U LINES\] \[-F REGEX \] FILE1 FILE2

 |
| dirname | 

显示路径的目录部分。

usage: dirname PATH...

 |
| dos2unix | 

将换行符格式从dos“\\r\\n”转换为unix“\\n”。如果没有列出文件，从标准输入设备获取输入。“-”代表标准输入设备。

usage: dos2unix \[FILE...\]

 |
| echo | 

将每个参数写入标准输出设备，每个参数之间有一个空格，后跟一个换行符。

usage: echo \[-Een\] \[ARG...\]

 |
| grep/egrep/fgrep | 

显示匹配正则表达式的行。如果没有-e，则第一个参数为要匹配的正则表达式。没有文件（或“-”文件名）读取标准输入设备。如果匹配，则返回0；如果找不到匹配，则返回1；如果命令错误，则返回2。

egrep自带-E选项，fgrep自带-F选项。E和F选项不能同时选。

usage: grep/egrep/fgrep \[-EFrivwcloqsHbhn\] \[-ABC NUM\] \[-m MAX\] \[-e REGEX\]... \[-MS PATTERN\]... \[-f REGFILE\] \[FILE\]...

 |
| gzip | 

压缩文件。

usage: gzip \[-19cdfkt\] \[FILE...\]

 |
| expand | 

根据输入参数将制表符展开为空格。

usage: expand \[-t TABLIST\] \[FILE...\]

 |
| fallocate | 

让文件系统给文件预留空间。

usage: fallocate \[-o OFFSET\] -l SIZE FILE

 |
| file | 

检查给定的文件并描述其内容类型。

usage: file \[-bhLs\] \[FILE...\]

 |
| find | 

在目录中搜索匹配的文件。

usage: find \[-HL\] \[DIR...\] \[\[/topic/body/section/table/tgroup/tbody/row/entry/p/options {""}) \] (options\]

 |
| flock | 

管理文件锁（advisory lock）。

usage: flock \[-sxun\] fd

 |
| fmt | 

将输入重新格式化为给定行长的换行，保留现有的缩进级别，写入标准输出设备。

usage: fmt \[-w WIDTH\] \[FILE...\]

 |
| gunzip | 

解压文件。如果没有文件，则从标准输入设备解压到标准输出设备。成功后，输入文件将被删除并替换为新的没有.gz后缀的文件。

usage: gunzip \[-cfkt\] \[FILE...\]

 |
| head | 

将文件中的第一行复制到标准输出设备中。如果未列出任何文件，从标准输入设备拷贝。“-”代表标准输入设备。

usage: head \[-cn NUM\] \[-qv\] \[FILE...\]

 |
| hexedit | 

十六进制文件编辑器，所有修改立刻写入磁盘。

usage: hexedit \[-r\] FILE

 |
| iconv | 

转换文件编码。

usage: iconv \[-f FROM\] \[-t TO\] \[FILE...\]

 |
| inotifyd | 

在文件系统事件出现的时候，运行特定的程序。

usage: inotifyd PROG FILE\[:MASK\] ...

 |
| install | 

复制文件并设置文件属性。

usage: install \[-dDpsv\] \[-o USER\] \[-g GROUP\] \[-m MODE\] \[-t TARGET\] \[SOURCE...\] \[DEST\]

 |
| link | 

创建文件的硬链接。

usage: link FILE NEWLINK

 |
| ln | 

在 FROM 和 TO 之间创建软/硬链接。

usage: ln \[-fnrsTv\] \[-t DIR\] \[FROM...\] TO

 |
| ls | 

查看当前目录有哪些文件/文件夹。

usage: ls \[-1ACFHLNRSUXZabcdfghilmnopqrstuwx\] \[--color\[=auto\]\] \[FILE...\]

 |
| lsattr | 

列出Linux文件系统中的文件属性。

usage: lsattr \[-Radlv\] \[Files...\]

 |
| lsof | 

列出属于所有活跃进程的所有打开的文件，或使用列出的FILE的进程。

usage: lsof \[-lt\] \[-p PID1,PID2,...\] \[FILE...\]

 |
| md5sum | 

计算每个输入文件的哈希，如果没有，则从标准输入设备读取。每个输入文件输出一行哈希后跟文件名。

usage: ???sum \[-bcs\] \[FILE\]...

 |
| mkdir | 

创建一个或多个目录。

usage: mkdir \[-vp\] \[-m MODE\] \[DIR...\]

 |
| mkfifo | 

创建FIFO文件（命名管道）。

usage: mkfifo \[NAME...\]

 |
| mkswap | 

创建Linux的交换空间。

usage: mkswap \[-L LABEL\] DEVICE

 |
| mktemp | 

安全地创建一个新文件“DIR/TEMPLATE”并打印其名称。

usage: mktemp \[-dqu\] \[-p DIR\] \[TEMPLATE\]

 |
| mknod | 

创建一个特殊的文件（b为块设备，c或u为字符设备，p为命名管道）。

usage: mknod \[-m MODE\] NAME TYPE \[MAJOR MINOR\]

 |
| more | 

查看文件，一次一页。

usage: more \[FILE...\]

 |
| mv | 

移动或重命名文件。

usage: mv \[-FfinTvx\] \[-t TARGET\] SOURCE... \[DEST\]

 |
| nl | 

给输入的文件添加行号。

usage: nl \[-E\] \[-l #\] \[-b MODE\] \[-n STYLE\] \[-s SEPARATOR\] \[-v #\] \[-w WIDTH\] \[FILE...\]

 |
| od | 

以八进制/十六进制格式转储数据。

usage: od \[-bcdosxv\] \[-j #\] \[-N #\] \[-w #\] \[-A doxn\] \[-t acdfoux\[#\]\]

 |
| paste | 

从每个输入文件中合并相应的行。

usage: paste \[-s\] \[-d DELIMITERS\] \[FILE...\]

 |
| patch | 

将统一的diff应用于一个或多个文件。

usage: patch \[-d DIR\] \[-i file\] \[-p depth\] \[-Rlsu\] \[--dry-run\]

 |
| pgrep | 

查找进程。PATTERN是扩展正则表达式，用于命令名称的检测。

usage: pgrep \[-clfnovx\] \[-d DELIM\] \[-L SIGNAL\] \[PATTERN\] \[-G GID,\] \[-g PGRP,\] \[-P PPID,\] \[-s SID,\] \[-t TERM,\] \[-U UID,\] \[-u EUID,\]

 |
| printf | 

使用C语言的printf语法，根据Format格式化并打印参数。

usage: printf FORMAT \[ARGUMENT...\]

 |
| pwd | 

打印工作（当前）目录。

usage: pwd \[-L | -P\]

 |
| readahead | 

将文件预加载到磁盘缓存中。

usage: readahead FILE...

 |
| readlink | 

如果没有选项，则显示symlink指向什么，如果不是symlink则返回错误。

usage: readlink \[-efmnqz\] FILE...

 |
| realpath | 

显示规范绝对路径名。

usage: realpath \[-LPemqsz\] \[--relative-base DIR\] \[-R DIR\] FILE...

 |
| rev | 

逆向输出每一行。

usage: rev \[FILE...\]

 |
| rm | 

删除文件。

usage: rm \[-fiRrv\] FILE...

 |
| rmdir | 

删除一个或多个目录。

usage: rmdir \[-p\] \[DIR...\]

 |
| sed | 

流编辑器。将编辑脚本应用于输入行。

usage: sed \[-inrszE\] \[-e SCRIPT\]... | SCRIPT \[-f SCRIPT\_FILE\]... \[FILE...\]

 |
| seq | 

从头到尾按递增计数。省略参数默认值为1。使用两个参数作为第一个和最后一个。参数可以是负数或浮点数。

usage: seq \[-w | -f fmt\_str\] \[-s sep\_str\] \[first\] \[increment\] last

 |
| setfattr | 

写入POSIX扩展属性。

usage: setfattr \[-h\] \[-x | -n NAME\] \[-v VALUE\] FILE...

 |
| sha1sum/sha256sum | 

计算sha系列哈希值。

usage: ???sum \[-bcs\] \[FILE\]...

 |
| shred | 

安全的删除文件（用随机数据覆盖文件内容）。

usage: shred \[-fuxz\] \[-n COUNT\] \[-o OFFSET\] \[-s SIZE\] FILE...

 |
| sort | 

对从输入文件（或标准输入设备）到标准输出设备的所有文本行进行排序。

usage: sort \[-Mbcdfginrsuz\] \[FILE...\] \[-k#\[,#\[x\]\] \[-t X\]\] \[-o FILE\]

 |
| split | 

将输入（或标准输入设备）数据复制到一系列输出（或“x”）文件，使用按字母顺序递增的后缀（aa,ab,ac...az,ba,bb...）。

usage: split \[-a SUFFIX\_LEN\] \[-b BYTES\] \[-l LINES\] \[-n PARTS\] \[INPUT \[OUTPUT\]\]

 |
| stat | 

显示文件或文件系统的状态。

usage: stat \[-tfL\] \[-c FORMAT\] FILE...

 |
| strings | 

在二进制文件中显示可打印字符串。

usage: strings \[-fo\] \[-t oxd\] \[-n LEN\] \[FILE...\]

 |
| tac | 

以相反的顺序输出行。

usage: tac \[FILE...\]

 |
| tail | 

将文件中的最后几行复制到标准输出设备中。“-”代表标准输入设备。

usage: tail \[-n | c NUMBER\] \[-f | F\] \[-s SECONDS\] \[FILE...\]

 |
| tar | 

在.tar文件中创建、解压缩或列出文件。

usage: tar \[-cxt\] \[-fvohmjkOS\] \[-XTCf NAME\] \[--selinux\] \[FILE...\]

 |
| tee | 

将标准输入设备复制到每个列出的文件，也复制到标准输出设备。“-”代表标准输出设备。

usage: tee \[-ai\] \[FILE...\]

 |
| touch | 

更新每个FILE的访问和修改时间为当前时间。

usage: touch \[-amch\] \[-d DATE\] \[-t TIME\] \[-r FILE\] FILE...

 |
| truncate | 

设置文件的长度，必要时稀疏扩展。

usage: truncate \[-c\] -s SIZE file...

 |
| uniq | 

报告或过滤文件中的重复行。

usage: uniq \[-cduiz\] \[-w MAXCHARS\] \[-f FIELDS\] \[-s CHAR\] \[INFILE \[OUTFILE\]\]

 |
| unix2dos | 

将换行符格式从unix“\\n”转换为dos“\\r\\n”。如果没有列出文件，从标准输入设备获取输入。“-”代表标准输入设备。

usage: unix2dos \[FILE...\]

 |
| unlink | 

删除文件。

usage: unlink FILE

 |
| uudecode | 

从标准输入设备（或INFILE）解码文件。

usage: uudecode \[-o OUTFILE\] \[INFILE\]

 |
| uuencode | 

标准输入设备（或文件）进行编码，输出到标准输出设备，在输出中包含encode-filename。

usage: uuencode \[-m\] \[INFILE\] ENCODE\_FILENAME

 |
| wc | 

统计输入中的行数、单词和字符。

usage: wc \[-Llwcm\] \[FILE...\]

 |
| which | 

在$PATH中搜索与文件名匹配的可执行文件。

usage: which \[-a\] filename ...

 |
| xxd | 

以16进制的形式显示文件内容。若没有列出任何文件，从标准输入设备复制。

usage: xxd \[-eipr\] \[-cglos N\] \[file\]

 |
| zcat | 

将文件解压缩到标准输出设备。比如“gzip -dc”。

usage: zcat \[-f\] \[FILE...\]

 |

#### 常见问题

#### \[h2\]报错："Unknown COMMAND xxx"

在命令行中输入"xxx"或"toybox xxx"或"help xxx"时，如果遇到报错"Unknown COMMAND xxx"，表示toybox不支持xxx命令。

如果该命令在本文的描述中，则证明产品未编译该命令。如需帮助请通过“华为开发者联盟官网”->“支持”，[在线提单](https://developer.huawei.com/consumer/cn/support/)方式获取支持。

#### \[h2\]报错："Operation not permitted"/"Permission denied"

toybox存在大量操作文件和进程的命令，如果调用者缺少对被操作对象的权限，就会报错。

1.  权限缺失。请检查被操作的文件，以及所属文件夹的读、写、执行权限，确认自己是否有权限执行。
2.  SELinux拦截。可以在内核日志中搜索"avc: denied"关键字。

例子：

如果出现类似avc: denied { xxx } for comm="ls" xxxxxx的日志，表示命令ls触发了SELinux拦截。

如遇权限缺失问题，又需要执行该命令，可通过“华为开发者联盟官网”->“支持”，[在线提单](https://developer.huawei.com/consumer/cn/support/)方式获取支持。

#### \[h2\]其他Linux标准报错

toybox大部分命令为对内核的调用，出错时会通过perror打印Linux内核错误码对应的文本。

常见的错误有："File exists"/"Not a directory"/"Read-only file system"等。

这些为Linux标准错误，可以参考Linux相关资料查询报错原因。请根据具体报错，检查命令的参数或者命令的格式是否出现错误。

例子：

试图在只读文件系统中进行创建文件的操作，会有报错"Read-only file system"。

cat可以打印文件内容，如果试图cat一个目录，会有报错 "Is a directory"。

试图用ls命令查看一个不存在的文件或目录，会有报错"No such file or directory"。

#### \[h2\]命令与toybox描述不符合

如果发现在shell下输入"命令 参数"的表现与"toybox 命令 参数"不一致，可能有两种原因导致。

1.  实际调用的是shell的实现而非toybox。
    
    对于time/test/pwd/realpath/ulimit/kill等命令，shell会直接使用自己的实现。
    
    此时如果想要调用toybox命令，请使用"toybox \[COMMAND\] \[ARGUMENTS...\]"的格式。
    
2.  设备未将该命令配置给toybox，而是有另外的实现。
    
    此时如果想要调用toybox命令，请使用"toybox \[COMMAND\] \[ARGUMENTS...\]"的格式。