This article needs more citations. (June 2011) |
| GNU Core Utilities | |
|---|---|
| Developer | GNU Project |
| Stable release | |
| Written in | C, shell script |
| Operating system | Unix-like |
| Type | Miscellaneous utilities |
| License | 2007, GPL 3.0 or later since version 6.10 2002, GPL 2.0 or later until version 6.9 |
| Website | www |
| Repository | |
The GNU Core Utilities or Coreutils is a collection of GNU software that implements many standard, Unix-based shell commands. The utilities generally provide POSIX compliant interface when the POSIXLY_CORRECT environment variable is set, but otherwise offers a superset to the standard interface. For example, the utilities support long options and options after parameters. This environment variable enables a different functionality in BSD.
Similar collections are available in the FOSS ecosystem, with a slightly different scope and focus (less functionality), or license. For example, BusyBox which is licensed under GPL-2.0-only, Toybox which is licensed under 0BSD and Uutils under MIT License. The Uutils developers acknowledged distributing code copied from GNU Coreutils without complying with its GPL-3.0-or-later license in version 0.12.0 .
Currently, there are over 100 commands implemented by Coreutils, with the commands listed below. Throughout this article and customary for Unix-based systems, the term file refers to all file system items including regular files and special files such as directories.
chcon – Changes file security context (SELinux)chgrp – Changes file group ownershipchown – Changes file user ownershipchmod – Changes file permissionscp – Copies filesdd – Copies and converts file datadf – Reports file system free spacedir – Like ls -C -b; by default lists files in columns, sorted verticallydircolors – Configures colors used for ls outputinstall – Copies files and sets file attributesln – Creates a link to a filels – Lists filesmkdir – Creates directoriesmkfifo – Creates named pipes (FIFOs)mknod – Creates block or character special filesmktemp – Creates temporary regular files or directoriesmv – Moves and renames filesrealpath – Reports the absolute or relative path of a filerm – Deletes filesrmdir – Deletes empty directoriesshred – Overwrites a file to hide its contents and optionally deletes itsync – Flushes file system bufferstouch – Changes file timestamps, creating files if they do not existtruncate – Sets the size of a file via truncation or extensionvdir – Like ls -l -b; by default lists files in long formatb2sum – Computes and checks BLAKE2b message digestbase32 – Encodes or decodes base32base64 – Encodes or decodes base64basenc – Encodes or decodes various encodings including hexadecimal, base32, base64, and Z85cat – Concatenates filescksum – Report or compute the checksum of filescomm – Compares two sorted files line by linecsplit – Splits a file into sections determined by context linescut – Removes sections from each line of filesexpand – Converts tabs to spacesfmt – Formats textfold – Wraps each input line to fit in specified widthhead – Outputs the first part of filesjoin – Joins lines of two files on a common fieldmd5sum – Computes and checks MD5 message digestnl – Numbers lines of filesnumfmt – Formats numbersod – Dumps files in octal and other formatspaste – Merges lines of filesptx – Produces a permuted index of file contentspr – Paginates or columnates filessha1sum, sha224sum, sha256sum, sha384sum, sha512sum – Computes and checks SHA-1/SHA-2 message digestsshuf – Generates random permutationssort – Sorts lines of text filessplit – Splits a file into piecessum – Checksums and counts the blocks in a filetac – Concatenates files in reverse order, line by linetail – Outputs the last part of filestr – Translates or deletes characterstsort – Performs a topological sortunexpand – Converts spaces to tabsuniq – Removes duplicate lines from a sorted filewc – Reports the number of bytes, words, and lines in filesarch – Reports machine hardware name (same as uname -m)basename – Removes the path prefix from a given pathnamechroot – Changes the root directorydate – Reports or sets the system date and timedirname – Strips non-directory suffix from file namedu – Shows disk usage on file systemsecho – Outputs textenv – Reports and modifies environment variablesexpr – Evaluates expressionsfactor – Factors numbersfalse – Does nothing but exit with unsuccessful statusgroups – Reports the groups of which the user is a memberhostid – Reports the numeric identifier for the current hostid – Reports the real or effective UID and GIDlink – Creates a link to a filelogname – Reports the user's login namenice – Modifies scheduling prioritynohup – Allows a command to continue running after logging outnproc – Queries the number of (active) processorspathchk – Checks whether file names are valid or portablepinky – A lightweight version of fingerprintenv – Reports environment variablesprintf – Formats textpwd – Reports the current working directoryreadlink – Reports the value of a symbolic linkruncon – Run command with specified security contextseq – Reports a sequence of numberssleep – Blocks (delays, waits) for a specified amount of timestat – Reports information about an inodestdbuf – Runs a command with custom standard streams configurationstty – Changes and reports terminal line settingstee – Sends output to multiple filestest – Evaluates an expressiontimeout – Runs a command with a time limittrue – Does nothing but exit with success statustty – Reports the terminal nameuname – Reports system informationunlink – Removes files via unlink() functionuptime – Reports how long the system has been runningusers – Reports the user names of users currently logged into the current hostwho – Reports logged-in userswhoami – Reports the effective useridyes – Outputs a string repeatedly[ – Synonym for test that enables expressions like [ expression ]In 1970, in the initial version of Unix, a few commands, written in assembly like cp, chmod, etc have been introduced for the first time.
In 1990, David MacKenzie announced GNU fileutils.
In 1991, MacKenzie announced GNU shellutils and GNU textutils. Moreover, Jim Meyering became the maintainer of the packages (known now as Coreutils) and has remained so since.
In September 2002, the GNU Coreutils were created by merging the earlier packages textutils, shellutils, and fileutils, along with some other miscellaneous utilities.
In July 2007, the license of the GNU Coreutils was updated from GPL-2.0-or-later to GPL-3.0-or-later.
Canonical has replaced the standard, C-based Coreutils package with the Rust implementation written by the Uutils Project in their release of Ubuntu 25.10 and 26.04 LTS.