Druckversion

Nutzerkommandos - Weiteres

Job zu bestimmter Zeit starten - at Weiter

Aufruf:   at [-V] [-q queue] [-f file] [-mldbv] ZEIT

Mit at lassen sich Kommandos zu einem späteren Zeitpunkt ausführen.

Der Zeitpunkt lässt sich in verschiedenen Formaten angeben:

17:23

17.23 Uhr des heutigen Tages

midnight

0.00 Uhr

noon

12.00 Uhr

teatime

16.00 Uhr

10:30pm

22.30 Uhr, mit dem Suffix am anstatt »pm« 10:30 Uhr

1204

Am 4. Dezember dieses Jahres, alternative Angaben sind 12.04 und 12/04

7/12/05

Am 12. Juli 2005, alternative Angaben sind 7.12.05 und 71205.

Zeitpunkt + Zeitspanne

Als Zeitpunkt kann jede oben beschriebene Angabe stehen und now (»jetzt«), als Zeitspanne kommt ein Wert gefolgt von minutes (Minuten), hours (Stunden), days (Tage) und weeks (Wochen) in Frage.

tomorrow, today

Spezifizieren den Zeitpunkt »Morgen« und »heute«.

Die Berechtigung zur Benutzung von at kann durch die beiden Dateien /etc/at.allow und /etc/at.deny beeinflusst werden. Existieren die Dateien nicht, sind alle Nutzer zum Aufruf des Kommandos berechtigt. Im Falle einer existierenden /etc/at.allow sind nur die dort aufgeführten Nutzer zur Benutzung zugelassen, die /etc/at.deny wird dann nicht ausgewertet. Gibt es nur letztere Datei, so sind die enthaltenen Nutzer von der Verwendung des Kommandos ausgeschlossen.

at liest die zu startenden Kommandos von der Standardeingabe oder aus einer Datei, falls eine solche mit der Option "-f" angegeben wurde. Alle Kommandos werden in eine Warteschlange eingereiht, deren Name aus einem einzelnen Buchstaben besteht. Die Voreinstellung "a" kann mit der Option "-q" überschrieben werden. Die alphabetische Reihenfolge der Queues gibt die Priorität ihrer Bearbeitung vor.

Nach Beendigung eines Jobs versendet at die Ausgaben des Kommandos per Mail (sendmail muss installiert sein!) an den Auftraggeber. Für Kommandos, die keine Ausgaben erzeugen, kann mit der Option "-m" eine Mail-Benachrichtigung über den erfolgten Abschluss der Bearbeitung erzwungen werden.

user@sonne> at teatime tomorrow
at> echo "Wieder mal Feierabend"
at> [Ctrl]-[D] <EOT>
warning: commands will be executed using /bin/sh
job 3 at 2000-06-07 16:00

user@sonne> at now +30 weeks
at> mail -s "Wunschliste" Weihnachtsmann@weissnicht.wo < liste.txt at> [Ctrl]-[D] <EOT>
warning: commands will be executed using /bin/sh
job 5 at 2001-01-02 09:12

at-Jobliste betrachten - atq Zurück Anfang Weiter

Aufruf:   atq [-V] [-q queue]

Der Inhalt der Warteschlange ausstehender at-Jobs wird angezeigt. Sollen nur die Aufträge einer bestimmten Queue betrachtet werden, muss mit der Option "-q" der Name der Warteschlange angegeben werden.

user@sonne> atq
1 2000-06-06 16:00 a
3 2000-06-07 16:00 a
4 2001-01-02 09:07 a
5 2001-01-02 09:12 a
6 2000-06-11 10:16 b


Die Informationen sind Jobnummer, Zeitpunkt des Auftrags und Name der Warteschlange. Eine analoge Ausgabe liefert at -l.

at-Job abbrechen - atrm Zurück Anfang Weiter

Aufruf:   atrm [-V] job [job...]

Aufträge können anhand ihrer Jobnummer gelöscht werden:

user@sonne> atrm 3 4 5 6
user@sonne> atq
1 2000-06-06 16:00 a

at -r arbeitet analog.

Job starten, wenn der Rechner ruht - batch Zurück Anfang Weiter

Aufruf:   batch [-V] [-q queue] [-f file] [-mv] [ZEIT]

Batch arbeitet analog zum Kommando at mit dem einzigen Unterschied, dass batch den Start des Kommandos soweit zurückstellt, bis die Auslastung des Systems eine gewisse Grenze (load average < 0.8) unterschritten hat.

Das Kommando wird man bspw. dazu benutzen, eine langwierige und ressourcenintensive Berechnung erst nach Feierabend zu starten (wenn normalerweise die Rechner nicht mehr benötigt werden). Sollte aber dennoch ein Kollege Überstunden scheffeln (das soll es wohl geben;-) und den Rechner benutzen, wird die Bearbeitung des Jobs zurückgestellt...

Verwendung und Optionen des Kommandos sind exakt wie bei at beschrieben.

Taschenrechner - bc Zurück Anfang Weiter

Aufruf:   bc [ -lwsqv ] [long-options] [ file ... ]

bc ist ein Kommandozeilenrechner, der mit beliebiger (!) Genauigkeit zu rechnen vermag. Die Bedienung des Rechners erinnert stark an die Programmiersprache C. Für komplexere Berechnungen wird man deshalb den Algorithmus in eine Datei schreiben und diese als Argument übergeben.

Der bc wird mit der Option -l angewiesen, die Standard-Mathematik-Bibliothek zu verwenden, mit -q verschwindet die lästige Copyright-Ausgabe. Die anderen Optionen betreffen die Kompatibilität zum POSIX-Standard, -w gibt Warnungen bei Nicht-POSIX-konformen Erweiterungen und -s lässt nur POSIX-konforme Funktionen zu.

Ohne eine Dateiangabe im Argument, startet der bc im interaktiven Modus und erwartet die Eingaben. Mit "quit" kann der Rechner wieder verlassen werden:

user@sonne> bc -l
bc 1.05
Copyright 1991, 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=20
variable=5625
sqrt(variable)
75.00000000000000000000
quit
user@sonne>

Im Beispiel wurde die Genauigkeit der Ausgabe auf 20 Nachkommastellen gesetzt scale=20, anschließend einer Variablen ein Wert zugewiesen variable=5625 und die Quadratwurzel dieser Variable berechnet sqrt(variable).

Um den Rechner auf der Kommandozeile benutzen zu können, muss er seine Eingaben aus einer Pipe erhalten. Das obige Beispiel hätte man auch so formulieren können (die Skalierung der Ausgabe wurde bewusst weggelassen):

user@sonne> echo "variable=1764;sqrt(variable)" | bc -ql
42
user@sonne>

42 ist die Lösung! Wie lautete eigentlich die Frage?

Zahlen werden immer im Format Vorkommastellen.Nachkommastellen angegeben, wobei die Vorkommastellen für sich allein stehen können und diese im Falle des Wertes "0" auch entfallen dürfen. Gültige Angaben sind somit: 12.476212, 42, 0.12 oder kurz .12.

Variablen werden durch beliebig lange Kombinationen aus Buchstaben, Ziffern und dem Unterstrich benannt, wobei das erste Zeichen ein Buchstabe sein muss. Es gibt vier spezielle Variablen, scale setzt die Genauigkeit der Ausgabe, ibase die Basis der Eingabe und obase die Basis der Ausgabe. last enthält immer den zuletzt berechneten Wert.

Um z.B. eine binäre Zahl in eine hexadezimale umzurechnen, geben wir Folgendes ein:

user@sonne> echo "obase=16;ibase=2;1100;" | bc -l
C

Für komplexere Algorithmen sind Kommentare sicherlich hilfreich. Alle Eingaben des bc, die zwischen /* und */ eingeschlossen sind, werden von diesem ignoriert.

Zur Berechnung stehen zahlreiche Ausdrücke zur Verfügung. An dieser Stelle kann nur auf einige wenige eingegangen werden. Wer sich mit C auskennt, wird die Feinheiten der Verwendung mancher Ausdrücke beurteilen können.

Nachfolgend kann expr eine Variable, eine Zahl oder wiederum ein Ausdruck sein. var bezeichnet immer eine Variable.

-expr

Negation

++var, var++

Inkrement-Operatoren

--var, var--

Dekrement-Operatoren

expr [+-*/] expr

Addition / Subtraktion / Multiplikation / Division

expr % expr

Modulo-Operator

expr ^ expr

Potenzieren

( expr )

Klammerung zur Änderung der Vorangregeln

var = expr

Einfache Zuweisung

var <Operation>= expr

Andere Schreibweise für "var = var <Operation> expr

expr1 < expr2

Kleiner-als Vergleich, analog dazu ">", "<=" (Kleiner oder gleich), ">=", "==" (Gleichheit), "!=" (Ungleichheit)

!expr

Negation

expr && expr

Logisches UND, analog "||" (logisches ODER)

length( expr )

Anzahl Zeichen in expr

read ( )

Liest einen Wert von der Standardeingabe

sqrt( expr )

Quadratwurzel von expr

Weiterhin stehen die bedingte Ausführung if ( expr ) tu_etwas [else tu_etwas], die Schleifen while ( expr ) tu_etwas und for ( [expr1] ; [expr2]; [expr3] ) tu_etwas zur Verfügung. Die weiteren Steuerkonstrukte (return, break, continue, halt) sind exakt wie in C zu handhaben.

Bevor einige Beispiele das Verständnis fördern sollen, folgt noch eine Auflistung mathematischer Funktionen, die verfügbar sind, wenn der bc mit der Option -l gestartet wird:

s (x)

Den Sinus von x

c (x)

Den Cosinus von x

a (x)

Den Arcustangens von x

l (x)

Den natürlichen Logarithmus von x

e (x)

e hoch x

j (n,x)

Besselfunktion

Und nun noch einige Beispiele, die auch eine Funktionsdefinition beinhalten:

user@sonne> echo "scale=50; 4*a(1)" | bc -l
3.14159265358979323846264338327950288419716939937508

user@sonne> bc -l
define f (x) {
     if (x <= 1) return (1);
     return (f(x-1) * x);
     }
f(7)
5040
quit

Kalender - cal Zurück Anfang Weiter

Aufruf:   cal [-mjy] [month [year]]

Der Standardkalender glänzt zwar nicht gerade mit einer besonderen Optik, dafür beherrscht er die Berechnung der Tage vom 1.1.0001 bis 31.12.9999.

Per Voreinstellung wird der Sonntag als erster Tag der Woche dargestellt, mit der Option -m kann es der Montag sein. Wer an den julianischen Kalenderdaten interessiert ist, der wähle die Option -j und den Kalender für ein ganzes Jahr zaubert -y hervor.

Vergessen Sie nicht, das Jahr mit 4 Ziffern zu benennen, sonst landen Sie knappe 2000 Jahre in der Vergangenheit. Wird als Argument nur eine Zahl angegeben, so wird diese als Jahr interpretiert, bei zweien steht die erste Zahl für den Monat und die zweite fürs Jahr:

user@sonne> cal 7 2000
      Juli 2000
So Mo Di Mi Do Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
user@sonne> cal 9 1752
   September 1752
So Mo Di Mi Do Fr Sa
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Datumsanzeige - date Zurück Anfang Weiter

Aufruf:   date [OPTION]... [+FORMAT]

Mit dem Kommando lässt sich die Systemzeit anzeigen und (falls man die Rechte des Administrators besitzt) ändern.

user@sonne> date
Fre Jun 9 14:08:51 MEST 2000

Als Optionen sind u.a. nützlich: die Anzeige der Modifikationszeit einer Datei mit der Option -r Dateiname, die Anzeige der »Universal Time« -u, das Setzen der Systemzeit -s und die Formatierung der Ausgabe mittels der Option -d Format.

Um die Ausgabe, vor allem für die Verwendung in Shellskripten, zu manipulieren, stehen eine Reihe von Platzhaltern zu Verfügung. Ein solcher Formatstring muss durch ein Plus + eingeleitet werden:

user@sonne> date "+Es ist der %d Tag im Monat %m des Jahres %Y."
Es ist der 26 Tag im Monat 11 des Jahres 2000.

Solche Platzhalter gibt es sprichwörtlich »wie Sand am Meer«, die Interessanteren enthält nachfolgende Tabelle:

%%

Das Prozentzeichen selbst

%n

Zeilenumbruch

%t

Tabulator

%H bzw. %I

Stunden 24 bzw. 12 Stunden-Format

%M

Minuten

%r bzw. %X

Zeit im 12 bzw. 24 Stunden-Format (Stunden/Minuten/Sekunden [am|pm])

%s

Sekunden seit dem 01.01.1970

%S

Sekunden der aktuellen Minute

%b bzw. %B

Name des Monats mit 3 Stellen bzw. ausgeschrieben

%c

Datum und Zeit im lokalen Format

%d

Tag des Monats

%j

Tag im Jahr

%m

Monat des Jahres (numerisch)

%U

Nummer der Woche im Jahr

%w bzw. %W

Wochentag (0..6) erster Tag ist Sonntag bzw. Montag

%y bzw, %Y

Jahreszahl 2- bzw. 4-stellig

Diskettenzugriff - Die Mtools Zurück Anfang

Der Austausch von Daten zwischen Windows-Systemen und Linux erfordert die Festlegung auf ein von beiden Seiten verstandenes Format. Und da sich Windows mit der Unterstützung von Fremdformaten etwas bedeckt hält, ist es an Linux, die Daten entsprechend abzuspeichern.

Für den Zugriff auf MSDOS-Dateien entwickelte man eine ganze Kollektion von Werkzeugen, die sich in Sachen Bedienung stark an den (fast gleichnamigen) DOS-Kommandos orientieren, daher auch der Begriff der m-Tools (MSDOS-Tools). Bedeutung erlangt die Sammlung vor allem beim Zugriff auf DOS-Disketten; die nachfolgenden Beispiele beziehen sich auf dieses Medium.

mattrib

Dient zum Ändern der Attribute einer DOS-Datei. Ein führendes Plus "+" setzt eine Option; ein Minus "-" entfernt sie.

Als Attribute sind a (Archivbit), r (Nur-Lese-Bit), s (Systembit) und h (Hidden-Bit) erlaubt. Ohne Angabe einer Option zeigt das Kommando die Attribute der angebenen Dateien an. Um Attribute rekursiv auf Unterverzeichnisse anzuwenden, kann die Option -/ verwendet werden.

user@sonne> mattrib a:\hash.h
   A A:/hash.h
user@sonne> mattrib -a a:\hash.h
   A:/hash.h

mbadblocks

Überprüft eine DOS-Diskette auf fehlerhafte Blöcke. Solche werden in der FAT (File Allocation Table) markiert und bei einer späteren Neuformatierung (mit mformat) ausgeblendet.

mcd

Wechselt das Verzeichnis in einem DOS-Dateisystem; bzw. zeigt - bei Aufruf ohne Argument - das aktuelle Arbeitsverzeichnis an:

# Ohne Angabe des Dateisystems wird immer A: angenommen
user@sonne> mmd tmp
user@sonne> mcd tmp
user@sonne> mcd
A:\tmp

mcopy

Dateien werden mit diesem Kommando kopiert, dabei können sowohl Quelle(n) als auch Ziel DOS- oder Unix-Dateien sein. Eine DOS-Datei muss daher explizit durch die Laufwerksangabe spezifiziert werden. Die Angabe des Ziels kann entfallen, dann wird das aktuelle Verzeichnis angenommen. Die wichtigen Optionen sind -/ zum rekursiven Kopieren von Verzeichnisinhalten und -t zur Transformation der DOS-Dateienden in das Unixformat.

# Datei(en) auf Diskette im Laufwerk a:
user@sonne> mcopy foo.* a:
# Alle Dateien von Diskette ins aktuelle Verzeichnis
user@sonne> mcopy a:*

mdel

Löscht Dateien auf einem DOS-Dateisystem:

# Datei auf Diskette B löschen:
user@sonne> mdel b:foo.bar
# Alle Dateien auf Diskette A löschen:
user@sonne> mdel \*

Anmerkung: Das Quoten des Metazeichens (*) ist notwendig, damit es nicht von der lokalen Shell ausgewertet wird.

mdeltree

Dient zum rekusrsiven Löschen von Verzeichnissen auf einem DOS-Dateisystem.

mdir

Zeigt den Inhalt eines Verzeichnisses auf einem DOS-Dateisystem an:

user@sonne> mdir
 Volume in drive A has no label
Directory for A:\tmp
.       <DIR>   04-14-1999 9:51
..      <DIR>   04-14-1999 9:51
                2 files 0 bytes
                484 864 bytes free

mdu

Das Kommando zeigt - analog zum Unixkommando "du" - die Belegung des DOS-Dateisystems an. Die Angabe erfolgt in so genannten Clustern, deren Größe u.a.m. das Kommando minfo offenbart.

mformat

Erzeugt ein DOS-Dateisystem auf einer Diskette. In den meisten Fällen genügt die Angabe des Laufwerks; anhand des Laufwerktyps werden Default-Werte verwendet. Benötigt man abweichende Werte, genügt die Angabe dieser. Für alle nicht spezifizierten Parameter werden automatisch die Voreinstellungen gewählt. Das Kommando selbst versteht (fast) dieselben Optionen, wie das Kommando mkdosfs. Im Zusammenhang mit der Systemadministration (Dateisysteme anlegen) wird näher darauf eingegangen.

minfo

Zeigt die Parameter eines DOS-Dateisystems an.

mkmanifest

Der aus Anwendersicht wohl gravierendste Unterschied zwischen klassischem DOS- und Unix-Dateisystemen ist die DOS-Beschränkung der Dateinamen auf bestimmte Zeichen und Länge (auch unter FAT16 und FAT32 bestehen Unterschiede bez. Unix-Dateisystemen).

Die verschiedenen Mtools-Werkzeuge mappen nun Unixnamen, die nicht in das 8:3-DOS-Schema passen, auf einen unter DOS gültigen Namen. Lesen Sie diese Diskette später wiederum mit mtools aus, werden die alten Namen rekonstruiert. Ein Problem haben Sie jedoch, falls Sie solche Dateien in einem Zwischenschritt mit einem Nicht-Mtools-Werkzeug kopieren, da die Information zur Namensumsetzung nun verloren geht. Und genau hier setzte mkmanifest an.

Das Kommando erzeugt aus den eingegebenen Namen ein kleines Shellskript, mit dem sich die "alten" Dateinamen auf jeden Fall rekonstruieren lassen:

user@sonne> mkmanifest Ein_langer_Dateiname Zu.viele.Punkte illegal: okay.c prn.dev > manifest
user@sonne> cat manifest
mv ein_lang Ein_langer_Dateiname
mv zuxviele.pun Zu.viele.Punkte
mv illegalx illegal:
mv xrn.dev prn.dev

Die Datei "okay.c" ist nicht enthalten, da sie der DOS-Konvention für Dateinamen genügt und somit nicht umbenannt wird. Kopieren Sie die Datei "manifest" ebenso auf Diskette, dann sind Sie jederzeit in der Lage, die originalen Dateinamen wieder herzustellen.

mlabel

Setzt den Namen eines DOS-Dateisystems bzw. liest diesen aus:

user@sonne> mlabel a:
 Volume has no label
Enter the new volume label : test

user@sonne> mlabel a:
 Volume label is TEST

mmd

Erzeugt ein Verzeichnis auf einem DOS-Dateisystem.

user@sonne> mmd b:\directory

mmount

Es ist eine Erweiterung des Unix-Mount-Befehls und "mountet" ein DOS-Dateisystem. Alle Optionen, die "mount" versteht, sind zulässig. Für weitere Informationen lese man den Abschnitt Mounten eines Dateisystems (Systemadministration-Dateisysteme).

mmove

Verschiebt Dateien in einem DOS-Dateisystem und/oder benennt sie um. Werden mehrere Dateien angegeben, muss das letzte Argument ein Verzeichnis sein (reines Verschieben). Es lassen sich ebenso Verzeichnisse samt Inhalt verschieben.

mrd

Entfernt ein leeres Verzeichnis aus einem DOS-Dateisystem.

user@sonne> mrd b:\directory

mread

Kopiert eine Datei eines DOS-Dateisystems in ein Unix-Dateisystem. Mit -t wird das Format automatisch konvertiert (CF/LF nach LF).

mren

Dient zum Umbenennen von Dateien oder Verzeichnissen.

user@sonne> mren a:foo.bla a:foo.old

mtoolstest

Mit diesem Kommando kann die Konfiguration der Mtools überprüft werden. Die Ausgabe des Kommandos kann als Ausgangspunkt für eigene Konfigurationsdateien dienen.

mtype

Dient zum Betrachten des Inhalts einer DOS-Datei.

Korrekturen, Hinweise?
Startseite Nächste Seite Nächstes Kapitel Vorherige Seite Kapitelanfang