GNU Core Utilities
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 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, or license. For example, BusyBox which is licensed under GPL-2.0-only, and Toybox which is licensed under 0BSD.
Commands
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.File utilities
chcon Changes file security context 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 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 formatText utilities
b2sum 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 filesShell utilities
arch Reports machine hardware name 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 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 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 repeatedlyHistory
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 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.
On April 2026, Canonical is planning to replace the standard, C-based coreutils package with one written in Rust in their release of Ubuntu 25.10 and 26.04 LTS. A preview version of the package is currently available, though some complain about performance and security issues.