6.15. Coreutils-5.2.1

Das Paket Coreutils enthält eine große Anzahl an Shell-Werkzeugen zum Einstellen der grundlegenden Systemeigenschaften.

Geschätzte Kompilierzeit: 0.9 SBU

Ungefähr benötigter Festplattenplatz: 69 MB

Coreutils ist abhängig von: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl und Sed

6.15.1. Installieren von Coreutils

Die Funktion von uname ist bekannterweise ein wenig fehlerhaft, weil der Schalter -p immer unknown ausgibt. Der folgende Patch behebt das Problem auf Intel-Architekturen:

patch -Np1 -i ../coreutils-5.2.1-uname-2.patch

Verhindern Sie, dass Coreutils Programme installiert, die später von anderen Paketen zur Verfügung gestellt werden:

patch -Np1 -i \
    ../coreutils-5.2.1-suppress_uptime_kill_su-1.patch

Bereiten Sie Coreutils zum Kompilieren vor:

DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/usr

Kompilieren Sie das Paket:

make

Diese Testsuite macht einige Annahmen in Hinsicht auf die Existenz von Benutzern und Gruppen, die in dem frühen Stadium unseres LFS-Systems noch nicht vorhanden sind. Sie müssen noch einige Dinge einrichten, bevor Sie die Tests laufen lassen können. Falls Sie diese Testsuite nicht ausführen möchten, fahren Sie mit „Installieren Sie das Paket“ fort.

Erstellen Sie zwei Dummy-Gruppen und einen Dummy-Benutzer:

echo "dummy1:x:1000:" >> /etc/group
echo "dummy2:x:1001:dummy" >> /etc/group
echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd

Sie können die Testsuite nun durchlaufen lassen. Als erstes starten Sie einige Tests, die als root laufen müssen:

make NON_ROOT_USERNAME=dummy check-root

Die verbleibenden Tests werden als Benutzer dummy ausgeführt:

src/su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"

Danach entfernen Sie die dummy Gruppen und Benutzer:

sed -i '/dummy/d' /etc/passwd /etc/group

Installieren Sie das Paket:

make install

Und verschieben Sie einige Programme an die richtige Stelle:

mv /usr/bin/{[,basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{date,echo,false,head,hostname,install,ln} /bin
mv /usr/bin/{ls,mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
mv /usr/bin/{sleep,stty,test,touch,true,uname} /bin
mv /usr/bin/chroot /usr/sbin

Schließlich erstellen Sie noch einen symbolischen Link, um FHS-konform zu sein:

ln -s ../../bin/install /usr/bin

6.15.2. Inhalt von Coreutils

Installierte Programme: basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami und yes

Kurze Beschreibungen

basename

Entfernt den Pfad und Suffix von einem angegebenen Dateinamen

cat

Gibt Dateien an der Standard-Ausgabe aus bzw. fügt sie zusammen

chgrp

Ändert die Gruppenzugehörigkeit einer Datei. Die Gruppe kann entweder als Name oder als numerische ID angegeben werden

chmod

Ändert die Zugriffsrechte der angegebenen Dateien. Der Modus kann entweder symbolisch, in Form der durchzuführenden Änderungen, oder als Oktalzahl angegeben werden (repräsentiert die absoluten neuen Rechte)

chown

Ändert Besitzer und/oder Gruppenzugehörigkeit der angegebenen Dateien

chroot

Führt einen Befehl mit dem angegebenen Ordner als / aus

cksum

Gibt die CRC-Prüfsumme (Cyclic Redundancy Check) und die Anzahl der Bytes für jede angegebene Datei aus

comm

Vergleicht zwei sortierte Dateien und gibt in drei Spalten die Zeilen aus, die jeweils einzigartig bzw. gleich sind

cp

Kopiert Dateien

csplit

Teilt eine Datei in mehrere neue Dateien. Dazu wird ein bestimmtes Muster oder Zeilennummern verwendet. Ausserdem gibt csplit die Anzahl Bytes jeder neuen Datei aus.

cut

Gibt Ausschnitte von Zeilen aus. Die Ausschnitte werden nach Feldern oder Positionsangaben gewählt.

date

Gibt die aktuelle Zeit im angegebenen Format aus oder stellt die Systemzeit ein

dd

Kopiert eine Datei mit der angegebenen Blockgröße und -anzahl. Optional kann währenddessen eine Konvertierung durchgeführt werden.

df

Berichtet über den verfügbaren (und verwendeten) Festplattenspeicher auf allen eingehängten Dateisystemen oder den Dateisystemen, die die angegebenen Dateien enthalten

dir

Listet den Inhalt eines Ordners auf (das Gleiche wie das Kommando ls)

dircolors

Gibt Kommandos zum Setzen der Umgebungsvariable LS_COLOR aus, um damit das Farbschema von ls zu ändern

dirname

Entfernt den nicht-ordnerspezifischen Teil eines Dateinamens

du

Gibt aus, wieviel Festplattenspeicher der aktuelle Ordner, die Unterordner und Dateien oder eine einzelne Datei verbraucht

echo

Gibt eine angegebene Zeichenkette aus

env

Führt ein Kommando in einer modifizierten Arbeitsumgebung aus

expand

Konvertiert Tabulatoren zu Leerzeichen

expr

Wertet einen Ausdruck aus

factor

Gibt den Primfaktor aller angegebenen Ganzzahlen aus

false

Tut gar nichts, ist immer erfolglos. Es beendet sich immer mit einem Abschlusskode, der auf einen Fehler hinweist.

fmt

Formatiert die Absätze in der übergebenen Datei neu

fold

Fügt Zeilenumbrüche in den angegebenen Dateien ein

groups

Gibt die Gruppenzugehörigkeit eines Benutzers aus

head

Gibt die ersten zehn (oder die angegebene Anzahl) von Zeilen einer Datei aus

hostid

Gibt die numerische ID (hexadezimal) des Systems aus

hostname

Setzt den Hostnamen bzw. zeigt ihn an

id

Gibt die effektive Benutzer-ID, Gruppen-ID, und Gruppenzugehörigkeit des aktuellen Benutzers oder eines angegebenen Benutzers aus

install

Kopiert Dateien und setzt deren Zugriffsrechte und, falls möglich, Besitzer und Gruppe

join

Fügt aus zwei Dateien die Zeilen mit identischen join-Feldern zusammen

link

Erzeugt einen harten Link von der angegebenen Datei zu einer Datei

ln

Erzeugt einen harten oder symbolischen Link zwischen Dateien

logname

Gibt den Login-Namen des aktuellen Benutzers aus

ls

Listet den Inhalt des angegebenen Ordners auf

md5sum

Erzeugt eine MD5-Prüfsumme (Message Digest 5) bzw. zeigt sie an

mkdir

Erzeugt Ordner mit den angegebenen Namen

mkfifo

Erzeugt FIFO's (First-In, First-Out, eine sogenannte "named Pipe" im UNIX Sprachgebrauch) mit dem angegebenen Namen

mknod

Erzeugt eine Gerätedatei mit dem angegebenen Namen. Eine Gerätedatei ist eine spezielle zeichen- oder blockorientierte Datei oder ein FIFO.

mv

Verschiebt Dateien und Ordner oder benennt sie um

nice

Startet ein Programm mit geänderter Priorität

nl

Nummeriert die Zeilen der angegebenen Dateien

nohup

Führt ein Programm aus, so dass es immun gegen „hangup“s ist, die Ausgaben werden in eine Protokolldatei umgeleitet

od

Gibt eine Datei oktal- oder in anderen Formaten aus

paste

Fügt angegebene Dateien zusammen. Sequenziell zusammengehörende Zeilen werden Seite an Seite durch Tabulatoren getrennt zusammengefügt.

pathchk

Prüft, ob Dateinamen gültig und portierbar sind

pinky

Eine abgespeckte Version von finger. Es gibt ein paar Informationen über den angegebenen Benutzer aus.

pr

Bereitet Dateien seiten- oder spaltenweise für den Ausdruck vor

printenv

Gibt die Umgebungsvariablen aus

printf

Gibt die angegebenen Argumente in einem bestimmten Format aus -- dies ist der C printf Funktion sehr ähnlich

ptx

Erzeugt aus dem Inhalt von Dateien einen vertauschten Index, mit jedem Stichwort im Kontext

pwd

Gibt den Namen des aktuellen Ordners aus

readlink

Gibt das Ziel eines symbolischen Links aus

rm

Löscht Dateien oder Ordner

rmdir

Löscht leere Ordner

seq

Gibt eine Zahlenreihe in einem bestimmten Wertebereich und mit einem bestimmten Inkrement aus

sha1sum

Prüft 160-Bit SHA1-Prüfsummen oder gibt sie aus

shred

Überschreibt eine Datei mehrfach mit zufälligen Mustern, um das Wiederherstellen der Daten zu erschweren

sleep

Pausiert für die angegebene Zeit

sort

Sortiert die Zeilen einer Datei

split

Teilt eine Datei in Stücke, nach Größe oder nach Zeilennummern

stat

Zeigt den Datei- oder Dateisystemstatus an

stty

Setzt Terminal-Einstellungen oder zeigt sie an

sum

Gibt Prüfsumme und Anzahl der Blöcke einer Datei aus

sync

Schreibt den Dateisystempuffer. Geänderte Blöcke werden auf die Festplatte geschrieben und der Superblock wird aktualisiert.

tac

Fügt Dateien rückwärts zusammen

tail

Gibt die letzten zehn (oder die angegebene Anzahl) von Zeilen einer Datei aus

tee

Liest von der Standardeingabe während gleichzeitig auf die Standardausgabe und in eine Datei geschrieben wird

test

Vergleicht Werte und prüft Dateitypen

touch

Ändert Zeitstempel von Dateien, setzt Zugriffs- und Änderungszeit einer Datei auf die aktuelle Zeit. Dateien, die noch nicht existieren, werden mit der Länge 0 angelegt.

tr

Übersetzt, quetscht oder entfernt Zeichen von der Standardeingabe

true

Macht nichts, ist immer erfolgreich. Beendet immer mit einem Statuskode, der Erfolg bedeutet.

tsort

Sortiert topologisch. Schreibt eine vollständig sortierte Liste entsprechend der teilweisen Sortierung in einer Datei.

tty

Gibt den Dateinamen des Terminals aus, das mit der Standardeingabe verbunden ist

uname

Gibt Systeminformationen aus

unexpand

Konvertiert Leerzeichen zu Tabulatoren

uniq

Entfernt alle identischen Zeilen bis auf eine

unlink

Entfernt eine Datei

users

Gibt die Namen der eingeloggten Benutzer aus

vdir

Macht das Gleiche wie das Kommando ls -l

wc

Gibt die Anzahl Zeilen, Wörter und Bytes einer Datei aus. Und eine Summe, falls mehrere Dateien angegeben wurden.

who

Gibt aus, wer gerade eingeloggt ist

whoami

Gibt den Benutzernamen aus, der mit der aktuell effektiven Benutzer-ID verknüpft ist

yes

Gibt „y“ oder eine andere Zeichenkette solange aus, bis es beendet wird