{{Short description|Collection of standard, Unix-based utilities from GNU}} {{More citations needed|date=June 2011}} {{Use dmy dates|date=September 2025}} {{Infobox software | name = GNU Core Utilities | logo = | logo size = | screenshot = | caption = | developer = GNU Project | latest release version = {{wikidata|property|preferred|references|edit|Q1348204|P348|P548=Q2804309}} | latest release date = {{Start date and age|{{wikidata|qualifier|preferred|single|Q1348204|P348|P548=Q2804309|P577}}}} | latest preview version = {{wikidata|property|preferred|references|edit|Q1348204|P348|P548=Q51930650}} | latest preview date = {{Start date and age|{{wikidata|qualifier|preferred|single|Q1348204|P348|P548=Q51930650|P577}}}} | programming language = C, shell script<ref>{{Cite web |title=The GNU Core Utilities Open Source Project on Open Hub: Languages Page |url=https://www.openhub.net/p/coreutils/analyses/latest/languages_summary |url-status=live |archive-url=https://web.archive.org/web/20190328192200/https://www.openhub.net/p/coreutils/analyses/latest/languages_summary |archive-date=28 March 2019 |access-date=28 March 2019 |website=openhub.net}}</ref> | operating system = Unix-like | genre = Miscellaneous utilities | license = 2007, GPL 3.0 or later since version 6.10<br />2002, GPL 2.0 or later until version 6.9 | website = {{URL|https://www.gnu.org/software/coreutils/}} }} 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 {{mono|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, 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 === * <code>chcon</code> {{endash}} Changes file security context (SELinux) * <code>chgrp</code> {{endash}} Changes file group ownership * <code>chown</code> {{endash}} Changes file user ownership * <code>chmod</code> {{endash}} Changes file permissions * <code>cp</code> {{endash}} Copies files * <code>dd</code> {{endash}} Copies and converts file data * <code>df</code> {{endash}} Reports file system free space * <code>dir</code> {{endash}} Like <code>ls -C -b</code>; by default lists files in columns, sorted vertically * <code>dircolors</code> {{endash}} Configures colors used for <code>ls</code> output * <code>install</code> {{endash}} Copies files and sets file attributes * <code>ln</code> {{endash}} Creates a link to a file * <code>ls</code> {{endash}} Lists files * <code>mkdir</code> {{endash}} Creates directories * <code>mkfifo</code> {{endash}} Creates named pipes (FIFOs) * <code>mknod</code> {{endash}} Creates block or character special files * <code>mktemp</code> {{endash}} Creates temporary regular files or directories * <code>mv</code> {{endash}} Moves and renames files * <code>realpath</code> {{endash}} Reports the absolute or relative path of a file * <code>rm</code> {{endash}} Deletes files * <code>rmdir</code> {{endash}} Deletes empty directories * <code>shred</code> {{endash}} Overwrites a file to hide its contents and optionally deletes it * <code>sync</code> {{endash}} Flushes file system buffers * <code>touch</code> {{endash}} Changes file timestamps, creating files if they do not exist * <code>truncate</code> {{endash}} Sets the size of a file via truncation or extension * <code>vdir</code> {{endash}} Like <code>ls -l -b</code>; by default lists files in long format

=== Text utilities === * <code>b2sum</code> {{endash}} Computes and checks BLAKE2b message digest * <code>base32</code> {{endash}} Encodes or decodes base32 * <code>base64</code> {{endash}} Encodes or decodes base64 * <code>basenc</code> {{endash}} Encodes or decodes various encodings including hexadecimal, base32, base64, and Z85 * <code>cat</code> {{endash}} Concatenates files * <code>cksum</code> {{endash}} Report or compute the checksum of files * <code>comm</code> {{endash}} Compares two sorted files line by line * <code>csplit</code> {{endash}} Splits a file into sections determined by context lines * <code>cut</code> {{endash}} Removes sections from each line of files * <code>expand</code> {{endash}} Converts tabs to spaces * <code>fmt</code> {{endash}} Formats text * <code>fold</code> {{endash}} Wraps each input line to fit in specified width * <code>head</code> {{endash}} Outputs the first part of files * <code>join</code> {{endash}} Joins lines of two files on a common field * <code>md5sum</code> {{endash}} Computes and checks MD5 message digest * <code>nl</code> {{endash}} Numbers lines of files * <code>numfmt</code> {{endash}} Formats numbers * <code>od</code> {{endash}} Dumps files in octal and other formats * <code>paste</code> {{endash}} Merges lines of files * <code>ptx</code> {{endash}} Produces a permuted index of file contents * <code>pr</code> {{endash}} Paginates or columnates files * <code>sha1sum</code>, <code>sha224sum</code>, <code>sha256sum</code>, <code>sha384sum</code>, <code>sha512sum</code> {{endash}} Computes and checks SHA-1/SHA-2 message digests * <code>shuf</code> {{endash}} Generates random permutations * <code>sort</code> {{endash}} Sorts lines of text files * <code>split</code> {{endash}} Splits a file into pieces * <code>sum</code> {{endash}} Checksums and counts the blocks in a file * <code>tac</code> {{endash}} Concatenates files in reverse order, line by line * <code>tail</code> {{endash}} Outputs the last part of files * <code>tr</code> {{endash}} Translates or deletes characters * <code>tsort</code> {{endash}} Performs a topological sort * <code>unexpand</code> {{endash}} Converts spaces to tabs * <code>uniq</code> {{endash}} Removes duplicate lines from a sorted file * <code>wc</code> {{endash}} Reports the number of bytes, words, and lines in files

=== Shell utilities === * <code>arch</code> {{endash}} Reports machine hardware name (same as {{code|uname -m}}) * <code>basename</code> {{endash}} Removes the path prefix from a given pathname * <code>chroot</code> {{endash}} Changes the root directory * <code>date</code> {{endash}} Reports or sets the system date and time * <code>dirname</code> {{endash}} Strips non-directory suffix from file name * <code>du</code> {{endash}} Shows disk usage on file systems * <code>echo</code> {{endash}} Outputs text * <code>env</code> {{endash}} Reports and modifies environment variables * <code>expr</code> {{endash}} Evaluates expressions * <code>factor</code> {{endash}} Factors numbers * <code>false</code> {{endash}} Does nothing but exit with unsuccessful status * <code>groups</code> {{endash}} Reports the groups of which the user is a member * <code>hostid</code> {{endash}} Reports the numeric identifier for the current host * <code>id</code> {{endash}} Reports the real or effective UID and GID * <code>link</code> {{endash}} Creates a link to a file * <code>logname</code> {{endash}} Reports the user's login name * <code>nice</code> {{endash}} Modifies scheduling priority * <code>nohup</code> {{endash}} Allows a command to continue running after logging out * <code>nproc</code> {{endash}} Queries the number of (active) processors * <code>pathchk</code> {{endash}} Checks whether file names are valid or portable * <code>pinky</code> {{endash}} A lightweight version of finger * <code>printenv</code> {{endash}} Reports environment variables * <code>printf</code> {{endash}} Formats text * <code>pwd</code> {{endash}} Reports the current working directory * <code>readlink</code> {{endash}} Reports the value of a symbolic link * <code>runcon</code> {{endash}} Run command with specified security context * <code>seq</code> {{endash}} Reports a sequence of numbers * <code>sleep</code> {{endash}} Blocks (delays, waits) for a specified amount of time * <code>stat</code> {{endash}} Reports information about an inode * <code>stdbuf</code> {{endash}} Runs a command with custom standard streams configuration * <code>stty</code> {{endash}} Changes and reports terminal line settings * <code>tee</code> {{endash}} Sends output to multiple files * <code>test</code> {{endash}} Evaluates an expression * <code>timeout</code> {{endash}} Runs a command with a time limit * <code>true</code> {{endash}} Does nothing but exit with success status * <code>tty</code> {{endash}} Reports the terminal name * <code>uname</code> {{endash}} Reports system information * <code>unlink</code> {{endash}} Removes files via <code>unlink()</code> function * <code>uptime</code> {{endash}} Reports how long the system has been running * <code>users</code> {{endash}} Reports the user names of users currently logged into the current host * <code>who</code> {{endash}} Reports logged-in users * <code>whoami</code> {{endash}} Reports the effective userid * <code>yes</code> {{endash}} Outputs a string repeatedly * <code>[</code> {{endash}} Synonym for test that enables expressions like <code>[ ''expression'' ]</code> <!-- DO NOT REMOVE THE SPACE AFTER '[' as it's required for command-line syntax -->

== History == In 1990, David MacKenzie announced ''GNU fileutils''.<ref>{{cite web |last=MacKenzie |first=David J. |date=8 February 1990 |title=GNU file utilities release 1.0 |url=https://groups.google.com/g/gnu.utils.bug/c/CviP42X_hCY/m/YssXFn-JrX4J |url-status=live |archive-url=https://web.archive.org/web/20230428222649/https://groups.google.com/g/gnu.utils.bug/c/CviP42X_hCY/m/YssXFn-JrX4J |archive-date=28 April 2023 |access-date=24 September 2025 |website=groups.google.com}}</ref>

In 1991, MacKenzie announced ''GNU shellutils'' and ''GNU textutils''.<ref>{{cite web |last=MacKenzie |first=David J. |date=16 July 1991 |title=GNU shell programming utilities released |url=https://groups.google.com/g/gnu.utils.bug/c/xpTRtuFpNQc/m/mRc_7JWZ0BYJ |url-status=live |archive-url=https://web.archive.org/web/20230428225527/https://groups.google.com/g/gnu.utils.bug/c/xpTRtuFpNQc/m/mRc_7JWZ0BYJ |archive-date=28 April 2023 |access-date=28 April 2023 |website=groups.google.com}}</ref><ref>{{cite web |last=MacKenzie |first=David J. |date=22 August 1991 |title=new GNU file and text utilities released |url=https://groups.google.com/g/gnu.utils.bug/c/iN5KuoJYRhU/m/V_6oiBAWF0EJ |url-status=live |archive-url=https://web.archive.org/web/20241203144028/https://groups.google.com/g/gnu.utils.bug/c/iN5KuoJYRhU/m/V_6oiBAWF0EJ |archive-date=3 December 2024 |access-date=24 September 2025 |website=groups.google.com}}</ref> Moreover, Jim Meyering became the maintainer of the packages (known now as coreutils) and has remained so since.<ref>{{cite web |title=GNU's Who |url=https://www.gnu.org/people/people.html#j |url-status=live |archive-url=https://web.archive.org/web/20230428041041/http://www.gnu.org/people/people.html#j |archive-date=28 April 2023 |access-date=28 April 2023 |website=gnu.org}}</ref>

In September 2002, the ''GNU coreutils'' were created by merging the earlier packages ''textutils'', ''shellutils'', and ''fileutils'', along with some other miscellaneous utilities.<ref name="merge">{{cite web |last=Meyering |first=Jim |date=13 January 2003 |title=readme-package-renamed-to-coreutils |url=https://git.savannah.gnu.org/cgit/coreutils.git/tree/README-package-renamed-to-coreutils |url-status=live |archive-url=https://web.archive.org/web/20191225234638/https://git.savannah.gnu.org/cgit/coreutils.git/tree/README-package-renamed-to-coreutils |archive-date=25 December 2019 |access-date=15 August 2018 |website=git.savannah.gnu.org}}</ref>

In July 2007, the license of the GNU coreutils was updated from GPL-2.0-or-later to GPL-3.0-or-later.<ref>{{cite web |last=Meyering |first=Jim |date=23 July 2007 |title=copying: Update to Version 3. |url=https://git.savannah.gnu.org/cgit/coreutils.git/commit/COPYING?id=5f606e6f1f0552c8af7b9cfbbafe3aad048bb99e |url-status=live |archive-url=https://web.archive.org/web/20191225234638/https://git.savannah.gnu.org/cgit/coreutils.git/commit/COPYING%3Fid%3D5f606e6f1f0552c8af7b9cfbbafe3aad048bb99e |archive-date=25 December 2019 |access-date=15 August 2018 |website=git.savannah.gnu.org}}</ref>

In 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.<ref>{{cite web |last=Rendek |first=Lubos |date=4 November 2025 |title=Ubuntu 26.04: Release Date and New Features in Resolute Raccoon |url=https://linuxconfig.org/ubuntu-26-04-release-date-and-new-features-in-resolute-raccoon |access-date=10 November 2025 |website=linuxconfig.org}}</ref> A preview version of the package is currently available, though some complain about performance and security issues.<ref>{{cite web |last=Larabel |first=Michael |date=15 September 2025 |title=Ubuntu 25.10's Rust Coreutils Transition Has Uncovered Performance Shortcomings |url=https://phoronix.com/news/Ubuntu-Rust-Coreutils-Perf |url-status=live |archive-url=https://web.archive.org/web/20251109233101/https://www.phoronix.com/news/Ubuntu-Rust-Coreutils-Perf |archive-date=9 November 2025 |access-date=9 November 2025 |website=Phoronix}}</ref>

== See also == {{Portal|Free and open-source software}} * {{Annotated link|GNOME Core Applications}} * {{Annotated link|GNU Binutils}} * {{Annotated link|List of GNU packages}} * {{Annotated link|List of KDE applications}} * {{Annotated link|List of POSIX commands}} * {{Annotated link|List of Unix daemons}} * {{Annotated link|List of web browsers for Unix and Unix-like operating systems}} * {{Annotated link|Toybox}} * {{Annotated link|Unix philosophy}} * {{Annotated link|util-linux}}

== References == {{Reflist|30em}}

== External links == {{Wikibooks|Guide to UNIX|Commands}} * {{Official website|https://www.gnu.org/software/coreutils/}} * {{cite web |title=GNU Coreutils |url=https://www.gnu.org/software/coreutils/manual/html_node/index.html |access-date=24 September 2025 |website=gnu.org}} - Manual * {{cite web |title=Readme |url=https://cgit.git.savannah.gnu.org/cgit/coreutils.git/tree/README |access-date=24 September 2025 |website=git.savannah.gnu.org}} * {{cite web |title=The Heirloom Toolchest |url=https://heirloom.sourceforge.net/tools.html |access-date=24 September 2025 |website=heirloom.sourceforge.net}} – An alternative set of utilities * {{cite web |last=Both |first=David |date=24 April 2018 |title=An introduction to the GNU Core Utilities |url=https://opensource.com/article/18/4/gnu-core-utilities |access-date=24 September 2025 |website=opensource.com}} * {{cite web |title=Rosetta Stone For *Nix |url=http://bhami.com/rosetta.html |access-date=24 September 2025 |website=bhami.com}} – configurable list of equivalent programs for *nix systems. * {{cite web |last=Rösler |first=Wolfram |date=2007 |title=The Unix Acronym List |url=https://roesler-ac.de/wolfram/acro/ |url-status=dead |archive-url=https://web.archive.org/web/20240806230502/https://roesler-ac.de/wolfram/acro/ |archive-date=6 August 2024 |access-date=24 September 2025 |website=roesler-ac.de}} – explains the names of many Unix commands. * {{cite web |title=The UNIX System Homepage |url=http://unix.org |access-date=24 September 2025 |website=unix.org}}

{{GNU}} {{Core Utilities commands}} {{Unix commands}}

Category:Free software programmed in C Category:Free system software Core Utilities Unix programs Category:Software using the GNU General Public License Category:System administration Category:Unix software Category:Unix SUS2008 utilities