Toybox


Toybox is a free and open-source software implementation of some Unix command line utilities for embedded devices. These include ls, cp, mv, and about 150 others. The Toybox project was started in 2006, and became a BSD-licensed BusyBox alternative. Toybox is included with Android 6.0 "Marshmallow" and all later Android versions, and is also available for installation on certain other operating systems.

Functionality and aim

Toybox aims to provide a BSD licensed replacement for the GPL licensed BusyBox.
Toybox's major technical design goals are simplicity, smallness, speed and standard compliance. Toybox is POSIX-2008 and LSB 4.1 compatible, and doesn't focus on having every option found in GNU counterparts.
Toybox is licensed using a permissive BSD license, where BusyBox uses the copyleft GNU General Public License, which lead to different usage domains. Busybox is mostly used in the copyleft FOSS domain, while Toybox is used mostly with permissive licensed projects and by commercial companies, e.g. Google's Android, which is an explicit target of Toybox. Feature-wise, Toybox has not reached parity with Busybox.

History

In early 2006 Toybox was started by Rob Landley after he ended his BusyBox maintainership due to a dispute with Bruce Perens, the original creator of BusyBox. In 2008 the project went dormant.
At the end of 2011, Tim Bird, a Sony employee suggested to create an alternative to BusyBox which would not be under the GNU General Public License. Rob Landley followed the request and suggested instead to base this library on the dormant Toybox. He re-licensed Toybox from the GNU General Public License to the 2-clause BSD License, and took up the Toybox development again. In March 2013 the project was relicensed to an even more permissive 0-clause BSD license, a Public domain equivalent license variant.
At the end of 2014 Toybox was integrated into the Android 6.0.x "Marshmallow" development branches.

Controversy

In January 2012 the proposal of creating a BSD license alternative to the GPL licensed BusyBox project drew harsh criticism from Matthew Garrett for taking away the only relevant tool for copyright enforcement of the Software Freedom Conservancy group. Rob Landley, who had started the BusyBox-based lawsuits, responded this was intentional, explaining that the lawsuits had not benefited the project but that they had led to corporate avoidance, expressing a desire to stop the lawsuits "in whatever way I see fit".

Project progress

The official Toybox documentation lists an overview of the available, partially available, and missing commands. Version 0.8.3 achieves approximately 80% of the project's implementation goals targeted for 1.0.

;List of Toybox Commands

  • acpi — shows battery status and other ACPI information
  • arch — print the type of computer architecture.
  • base64 — encoder and decoder for base64
  • basename — return non-directory portion of a pathname
  • blkid — command-line utility to locate/print block device attributes
  • blockdev — call block device ioctls from the command line
  • bunzip2 — block-sorting file compressor
  • bzcat — decompresses files to stdout
  • cal — prints a calendar of the given month or year
  • cat — Copy file content to stdout
  • chattr — change file attributes on a file system
  • chgrp — Change group
  • chmodChange file modes
  • chown — Change owner
  • chroot — Changes the apparent root directory
  • chrt — manipulate the real-time attributes of a process
  • cksum — Write file checksums and sizes
  • clear
  • cmp — Compare two files
  • comm — Select or reject lines common to two files
  • count — Count the number of elements of an array
  • cp — Copy
  • cpio — Copy files to and from archives
  • cut — Cut out selected fields of each line of a file
  • date — Display system date/time
  • df — Report free disk space
  • dirname — Return the directory portion of a pathname
  • dmesg — Display message or driver message
  • du — Estimate file space usage
  • echo
  • eject
  • env
  • expand — Convert tabs to spaces
  • factor
  • fallocate
  • false — Return false value
  • fgrep — Search a file with a fixed pattern
  • findCommand-line utility that searches through one or more directory trees
  • ftpget — Use File Transfer Protocol to get a file from an FTP server
  • ftpput — Use File Transfer Protocol to put a file from an FTP server
  • egrep
  • grep — Search for PATTERN in each FILE or standard input
  • groups — Display a group
  • gzip — File compression
  • head — Copy the first part of files
  • help — Command help lists all commands
  • hostname — Show or set the system's host name
  • id — Prints the user or group identifier
  • install
  • ifconfig — System administration utility for network interface configuration.
  • ln — Create a link named LINK_NAME or DIRECTORY to the specified TARGET.
  • kill — Send signals to running processes in order to request the termination of the process
  • killall — kill processes by name
  • link — call link function
  • login
  • logname — Return the user's login name
  • losetup
  • lspci — Prints detailed information about all PCI buses and devices
  • md5sum — Generate or check MD5 message digests
  • ls — List of files or folders
  • mkdir — Create a folder
  • mkfifo — Make FIFO special files
  • mknod — Make special files
  • microcom — A minimalistic terminal program
  • mount — Mount a file system
  • mountpoint
  • mv — move file
  • nbd-client
  • nc — Arbitrary TCP and UDP connections and listens
  • netcat
  • nice — Invoke a utility with an altered nice value
  • nl — line numbering filter
  • nohup — Invoke a utility immune to hangups
  • od — dump files in various formats
  • oneit
  • partprobe
  • passwd — Change user password
  • paste — Merge corresponding or subsequent lines of files
  • patch — Apply changes to files
  • pidof — Find the process ID of a running program
  • pkill — look up or signal processes based on name and other
  • pmap — report memory map of a process
  • poweroff
  • printenv — print all or part of environment
  • printf — write formatted output
  • ps — report process status
  • pmap — Report memory map of a process
  • pwd — Print working directory name
  • pwdx — Report current working directory of a process
  • readahead — initiate file readahead into page cache
  • readlink — print value of a symbolic link or canonical file name
  • realpath — return the canonicalised absolute pathname
  • reboot
  • renice — set nice values of running processes
  • reset — terminal initialization
  • rev — reverse lines of a file or files
  • rfkill — tool for enabling and disabling wireless devices
  • rm — Remove directory entries
  • rmdir — Remove directories
  • rmmod — simple program to remove a module from the Kernel
  • sed — stream editor
  • seq — Generate a sequence of numbers
  • setsid — Run a program in a new session
  • sha1sum — Compute and check SHA1 message digest
  • shred — overwrite a file to hide its contents, and optionally delete it
  • sleep — Suspend execution for an interval
  • sort — Sort, merge, or sequence check text files
  • split — Split files into pieces
  • stat — Display file or file system status
  • strings — Print the strings of printable characters in files.
  • stty — Print or change terminal characteristics.
  • su — Change user ID
  • swapon
  • swapoff
  • switch_root — switch to another filesystem as the root of the mount tree.
  • sync — Flush file system buffers
  • sysctl — configure kernel parameters at runtime
  • tac — Concatenate and print files in reverse
  • tail — Copy the last part of a file
  • tar — utility for collecting many files into one archive file
  • taskset — Retrieve or set a process's CPU affinity
  • tee — Duplicate standard input
  • test — evaluate conditional expressions
  • time — time a simple command
  • timeout — Run a command with a time limit
  • top — task manager program that displays information about CPU and memory utilization.
  • touch — change file access and modification times
  • true — Return true value
  • truncate — shrink or extend the size of a file to the specified size
  • tty — Return user's terminal name
  • tunctl — create and manage persistent TUN/TAP interfaces
  • umount
  • uname
  • uniq — report or filter out repeated lines in a file
  • unix2dosUNIX to DOS text file format converter
  • unlink — call the unlink function to remove the specified file
  • unshare
  • uptime — tell how long the system has been running.
  • usleep — sleep some number of microseconds
  • uuencode — Encode a binary file
  • uudecode — Decode a binary file
  • vconfigVLAN configuration program.
  • vmstat — report virtual memory statistics
  • w — Shows who is logged on and what they are doing
  • watch — execute a program periodically, showing output fullscreen
  • wc — Word, line, and byte or character count
  • which — Shows the full path of commands
  • who — Display who is on the system
  • whoami — Print effective userid
  • xargs — Construct argument lists and invoke utility
  • xxd — make a hexdump or do the reverse.
  • yes — to print a string repetitively
  • zcat — expand and concatenate data