Toybox

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

Toybox
Original author(s) Robert Landley
Developer(s) Robert Landley and others
Stable release 0.6.1 / November 3, 2015 (2015-11-03)
Written in C
Operating system Unix-like
Type Independent SUSp XCU implementation
License BSD License
Website www.landley.net/toybox

Toybox is an implementation of some Linux command line utilities. These include ls, cp, mv, and about 150 others. The Toybox project was started in 2006,[1] and became a BSD-licensed BusyBox alternative.[2][3] Toybox is included with Android 6.0 "Marshmallow"[4] and all later Android versions, and is also available for installation on certain other operating systems.

Functionality and aim

Toybox aims on providing a BSD licensed replacement for the GPL licensed Busybox.[5] Toybox's major technical design goals are simplicity, smallness, speed and standard compliance.[6] Toybox is POSIX-2008 and LSB 4.1 compatible,[1] and doesn't focus on having every option found in GNU counterparts.

Toybox is licensed using the 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[7] which is an explicit target of toybox[8]). Feature-wise Toybox has not reached parity with Busybox, Toybox offers currently only a subset of the Busybox functionality.

History

In early 2006 Toybox was started by Rob Landley[1][3] after he ended his BusyBox maintainership due to a dispute with Bruce Perens.[9] In 2008 the project went dormant.[2] On 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.[5] 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 BSD License,[10] and took up the Toybox development again.

On end of 2014 Toybox was integrated into the Android 6.x (Android Marshmallow) development branches.[11][7][4]

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.[12] The starter of BusyBox based lawsuits, Rob Landley, responded this was intentional as he came to the conclusion that the lawsuits resulted not in the hoped for positive outcomes and he wants to stop them "in whatever way I see fit".[13][14]

Project progress

The official Toybox documentation lists an overview of the available, partially available and the missing commands. According to the roadmap to version 1.0,[15] approx. 50% of the projects implementation goals are achieved.[16][17] The available commands include (expand to view):

  • cal — prints a calendar of the given month or year
  • cat — Copy file content to stdout
  • chgrp — Change group
  • chmod — Change file modes
  • chown — Change owner
  • chroot — Changes the apparent root directory
  • cksum
  • 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
  • echo
  • eject
  • env
  • expand — Convert tabs to spaces
  • factor
  • fallocate
  • false — Return false value
  • fgrep — Search a file with a fixed pattern
  • find — Command-line utility that searches through one or more directory trees
  • 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
  • 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
  • pmap — Report memory map of a process
  • pwd — Print working directory name
  • pwdx — Report current working directory of a process
  • readahead
  • readlink
  • realpath
  • renice — set nice values of running processes
  • rev — reverse lines of a file or files
  • rfkill
  • rm — Remove directory entries
  • rmdir — Remove directories
  • seq — Generate a sequence of numbers
  • setsid — Run a program in a new session
  • sha1sum — Compute and check SHA1 message digest
  • 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.
  • su — Change user ID
  • swapon
  • swapoff
  • switch root
  • sync — Flush file system buffers
  • tac — Concatenate and print files in reverse
  • tail — Copy the last part of a file
  • taskset — Retrieve or set a process's CPU affinity
  • tee — Duplicate standard input
  • time — time a simple command
  • timeout — Run a command with a time limit
  • 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
  • umount
  • uname
  • uniq — report or filter out repeated lines in a file
  • unix2dosUNIX to DOS text file format converter
  • unlink
  • unshare
  • usleep — sleep some number of microseconds
  • uuencoding — Encode a binary file
  • uudecode — Decode a binary file
  • vconfig
  • w — Show who is logged on and what they are doing.
  • wc — Word, line, and byte or character count
  • which — Shows the full path of (shell) commands
  • who — Display who is on the system
  • whoami — Print effective userid
  • xargs — Construct argument lists and invoke utility
  • yes — to print a string repetitively

See also

References

  1. 1.0 1.1 1.2 Lua error in package.lua at line 80: module 'strict' not found.
  2. 2.0 2.1 Lua error in package.lua at line 80: module 'strict' not found.
  3. 3.0 3.1 Lua error in package.lua at line 80: module 'strict' not found.
  4. 4.0 4.1 Android gets a toybox on lwn.net by Jake Edge (January 14, 2015)
  5. 5.0 5.1 Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. 7.0 7.1 toybox on android.googlesource.com (2014-12-28)
  8. celf-2015.txt by Rob Landley (2015)
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Toybox relaunch on toybox.landley.narkive.com (2011-11-20)
  11. Issue 76861: Importing parts of Toybox into Android, including dos2unix, unix2dos, sort, uniq, and usleep
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. todo.txt
  16. Toybox Help
  17. Lua error in package.lua at line 80: module 'strict' not found.

External links