Die GNU Core Utilities (‚Kernprogramme‘), kurz coreutils, sind eine vom GNU-Projekt unter der General Public License veröffentlichte Sammlung von grundlegenden Befehlszeilen-Programmen wie beispielsweise das zum Auflisten von Dateien verwendete ls. Die Sammlung stellt die Funktionalität der üblichen Unix-Kommandos zur Verfügung und ist für viele verschiedene Betriebssysteme verfügbar, insbesondere für GNU/Linux, aber auch für Windows mit dem WSL oder Cygwin. Die Befehlszeilenprogramme orientieren sich am POSIX-Standard, sind aber bewusst nicht vollständig konform. Die Programme beschränken sich, wie bei Unix üblich, auf eine bestimmte Aufgabe. Dadurch können sie einfach in umfangreichere Befehle oder Programme bzw. Skripte eingefügt werden (siehe Unix-Philosophie).
Unterstützt werden viele Hardwareplattformen, beispielsweise x86, SPARC, ARM und PowerPC.
Die Sammlung fasst die ursprünglich einzeln angebotenen Pakete textutils (für Texte), shellutils (für die Shell), und fileutils (für Dateien) in einem zusammen. Sie wird auch in anderen Zusammenstellungen gepflegt, so enthält beispielsweise BusyBox Versionen der meisten der unten gelisteten Programme.
chgrp
chown
chmod
cp
dd
df
dir
ls
dircolors
install
ln
mkdir
mkfifo
mknod
mv
rm
rmdir
shred
sync
touch
vdir
awk
cat
cksum
comm
csplit
cut
expand
fmt
fold
head
join
md5sum
nl
od
paste
ptx
pr
sed
sha1sum
sort
split
sum
tac
tail
tr
tsort
unexpand
uniq
wc
basename
chroot
date
dirname
du
echo
env
expr
factor
false
groups
hostid
id
link
logname
nice
nohup
pathchk
pinky
printenv
printf
pwd
readlink
seq
sleep
stat
stty
tee
test
true
tty
uname
unlink
users
who
whoami
yes
[ ... ]
Häufiger wird kritisiert, dass GNU-Programme Bloatware seien,[3] dies wird unter anderem daran festgemacht, dass die GNU-Version von true aus 80 Zeilen Code besteht,[4] wobei nach etablierten C-Standards drei Zeilen Code ausreichen würden. Andere Unix-ähnliche Systeme wie zum Beispiel OpenBSD nutzen solche „3-Zeiler“.[5] Des Weiteren erweitern GNU-Versionen oft die Funktionalität von Unix-Programmen, wodurch die Unix-Programme mit den GNU-Programmen inkompatibel werden.[3]