1

Entwicklung

1

Wissen

2.4 Kommandos fur den Einstieg in Linux

̈

2.4.1 Was ist eine Shell?

Eine Shell ist in ausnahmsweise mal keine Tankstelle, sondern in unserem Fall eine Art Benutzerumgebung fur denjenigen, der sich uber Telnet oder ̈ ̈ SSH beispielsweise einloggt. Nach dem Login wird man von einer sehr um- fangreichen und technisch ausgefeilten, umwerfenden und alles grafisch sprengendem Eingabeaufforderung begrußt, die so mancher nichtswissen- ̈ de User eines bestimmten Betriebssystems als Steinzeit bezeichnet, der allerdings von diesen Dingen nicht die geringste Ahnung besitzt. Es gibt verschiedene Shells, die am meisten bekannten Umgebungen sind ̈ die Bash und die C-Shell. Jede Shell besitzt ihre Eigenarten und Moglich- keiten, die sich geringfugig von der anderen Shell unterscheiden.

̈ ̈

Vielleicht haben Sie ja auch schon einmal etwas von Shellscripten gehort. Das sind die Scripte, die dann fur die Bash oder Csh geschrieben worden ̈ sind (als Beispiel) um irgendwelche Aufgaben zu erfullen. ̈ Eine Shell hat auch nichts damit zu tun, jemanden eine Shelle zu verpassen (hihi) oder etwa an der Haustur zu shellen ect... Jaja ich bin witzig... wenn ̈ ̈ ̈ Sie schmunzeln ware das schon, behalten Sie sich diese Einstellung weil es in diesem Buch auch noch kompliziertere Bereiche gibt, beispielswei- se ... auch ich weiss auch nicht. Shellen Sie dann schon. Anstatt Witze zu lesen werden Sie an einigen Stellen wertvolle und technisch ausgefeilte In- ̈ formationen finden, die Ihnen viel Arbeit sparen konnen und einiges an Wis- ̈ ̈ sen vermitteln. Ab und zu mochte ich aus bis heute ungeklarten Grunden ̈ paranoisch-tangentiale Abweichungen in geistig-abdriftender Form zu Pa- piere bringen, weil das Leben schon ernst genug ist und ein langweiliges Fachbuch ist zwar sehr gut, vielleicht kann man es auch mal anders probie- ren. Mit Luckenfuller hat das nichts zu tun, denn ich das Buch wird immer ̈ ̈ ̈ großer werden.

2.4.2 logout
 logout 
̈ Mit diesem Kommando konnen Sie sich ausloggen. Beispiel: logout 2.4.3 exit
 exit [n] 
Beendet ein Shellscript oder eine Shell mit dem optionalen Fehlercode n. Wird der Fehlercode nicht angegeben, wird eine 0 zuruckgeliefert. ̈ Beispiel:
 exit 
Beendet ein Script. Wenn Sie in keinem Script sind, werden Sie aus Ihrer Shell ausgeloggt.
 exit 0 
Beendet ein Script oder die Bash mit dem Fehlercode 0 (alles OK).
 exit 2 
Beendet ein Script oder die Bash mit dem Fehlercode ¡¿ 0. n Ein Fehlercode. Beispiel:
 exit 1 
2.4.4 su su [ -] username

Mit dieser Anweisung wechselt man zu einem anderen Benutzer. In der Praxis ist das dann zum Beispiel so, dass man sich als normaler User ein- loggt und dann zum ROOT User wechselt. Der Root Zugang ist dann ge- nerell komplett fur den Zugriff von außen deaktiviert.

̈ - Das Startscript des Users ausfuhren, je nach Shell zum Beispiel die .profile ̈ username ̈ Der Name des Users, zu dem man wechseln mochte.

Hinweis! Unter Linux kann man in der /etc/login.defs einstellen, auf welchem Termi- nal sich root einloggen kann. Unter FreeBSD ist das die Datei /ety/ttys - mehr dazu finden Sie unter dem Befehl fur den Login

̈ ̈

Can ́t SU TO ROOT oder BAD SU? Das bedeutet, Sie konnen sich als ROOT nicht mehr einloggen, obwohl Sie ganz genau wissen das Kennwort ist korrekt und Sie gehen davon aus, dass niemand Ihr Kennwort kennt. Wie funktioniert SU eigentlich? Gehen wir mal einige Dinge durch. Jemand, ̈ der SU machen mochte, muss Mitglied der Gruppe wheel sein, hier ein Beispiel:

 
Datei: /etc/group
wheel:*:0:root,xxx
daemon:*:1:daemon
kmem:*:2:root
sys:*:3:root
tty:*:4:root 

Nehmen wir mal an, Sie wissen Ihr User ist Mitglied von wheel und Sie ̈ ̈ konnen sich immernoch nicht einloggen. Der typische Spruch ware jetzt - ̈ ̈ das Passort fur ROOT sei falsch oder wurde geandert - wenn es geandert ̈ ̈ wurde ohne Ihr Wissen dann haben Sie ein boses Problem, insbesonde- re wenn der Server in einem Rechenzentrum steht und Sie nicht erwarten ̈ konnen, nachts um 23 Uhr noch eine qualifizierte Person zu erreichen. Also wir haben das angeblich falsche Passwort und Nichtmitgliedschaft in der Gruppe wheel. Sie sind sich sicher, dass dies nicht der Fehler sein kann? Dann habe ich noch einen guten Tip. Das su Kommando funktioniert nur mit STICKY BIT - schauen Sie mal:

 natserver# which su
/usr/bin/su
natserver# ls -l /usr/bin/su
-r-sr-xr-x 1 root wheel 8280 Oct                     9 16:28 /usr/bin/su 

Wenn das s bei Ihnen nicht hinterlegt ist, kann es sein dass Sie sich deswe- ̈ gen nicht einloggen konnen. Wenn der Root-Login vor Ort im Rechenzen- trum funktioniert, weisen Sie die jeweilige Remote-Hands Person darauf hin, sich als root einzuloggen und dann mal den Befehl

chmod +s /usr/bin/su ̈ einzugeben. Eine andere Variante ware das Freischalten des Root-Logins fur Fernzugang - siehe Login-Kommando fur entsprechende Details. ̈ ̈ Beispiel:
 su -l root 
2.4.5 echo
 echo [-n] text 
̈ Mit diesem Befehl konnen Sie, wie kann es anders sein, Text auf den Aus- gabestream (Bildschirm in der Regel) ausgeben. -n Kein Returnzeichen senden Die -n Option ist sinnvoll fur zum Beispiel sowas hier: ̈
 echo -n "Wie heißen Sie? ";read name 
Beispiele: echo * Gibt die Dateinamen des aktuellen Inhaltsverzeichnisses aus. Jetzt kommt naturlich die Frage nach dem WARUM. Die Bash-Shell verarbeitet das * ̈ automatisch, bevor die echo Anweisung ausgefuhrt wird. Da dieses Zei- ̈ ̈ chen halt vom System her als Platzhalter samtlicher Dateien gilt, gibt der Befehl die Namen entsprechend aus. Falls ich Sie jetzt ein wenig verwirrt haben sollte, werfen Sie doch einmal einen kleinen Blick in den Abschnitt ”Metazeichen” dieses Kapitels, BEVOR Sie sich die folgenden Beispiele ansehen! Um in einem Shellscript (das ist eine Art Batchdatei) alle ubergebenen Pa- ̈ rameter auszugeben, verwenden Sie ein einfaches
 echo ${*} 
Die Anzahl der ubergebenen Argumente finden Sie in ̈
 ${#}
echo "*" 
Gibt ein * aus, weil bei der Verwendung der Anfuhrungszeichen fast alle ̈ Metazeichen ihre Bedeutung verlieren - bis auf / $ und ‘
 echo ’*’ 
̈ Gibt ein * aus, weil der Ausdruck vollstandig aus Konstante angesehen wird.
 echo  ́* ́ 
Gibt ́* ́ aus.
 echo ‘*‘ 
Gibt einen Fehler aus, weil versucht wird, das * als Befehl zu interpretieren.
 echo "Text $USER" 
interpretiert die Shellvariable als Variable und gibt den Usernamen aus.
 echo * 
Gibt das aktuelle Verzeichnis aus (die Dateinamen).
 echo "* Fehler!" 
Gibt den Text * Fehler! aus.
 echo "Hallo \$NAME" 
gibt
 Hallo \$NAME 
zuruck, die Variable wird nicht interpretiert weil der Backslash das Metazei- ̈ chen $ entwertet.
 echo " ́hallo $name ́" 
Fuhrt zu einem ́hallo fritz ́ oder was immer auch unter ̈
 $name 
gespeichert ist.
 echo ’Text $USER’ 
interpretiert die Ausgabe als konstanten Ausdruck.
 echo ‘ls -l‘ 
interpretiert den Inhalt als Befehl, der erst ausgefuhrt wird bevor in diesem ̈ Beispiel echo ausgefuhrt wird. Hier wird ein Inhaltsverzeichnis ausgege- ̈ ben. Alle diese Kommandos fuhren zu verschiedenen Ergebnissen! ̈ Dieser Befehl dient der Textausgabe. Bitte beachten Sie die Auswirkung von Metazeichen , um die Beispiele zu verstehen. Sie sind am Anfang et- ̈ was verwirrend, aber je mehr Sie sich damit beschaftigen, um so einfacher wird es.

2.4.6 cd

 cd [..] [Verzeichnis] [/] [ ] 
Hiermit gelangen Sie in ein bestimmtes Verzeichnis. .. Ein Verzeichnis zuruck ̈ /

Sprung in das Root-Verzeichnis (Hauptverzeichnis) Verzeichnis Angabe eines Verzeichnisnamens kein Parameter Sprung in das Verzeichnis, in dem man VORHER war (einfach nur cd) ̈ Sprung in das personliche Homeverzeichnis Tip: Das Homeverzeichnis des gerade angemeldeten Benutzers befindet sich in der Variablen

 $HOME 
und der Benutzername in der Variablen
 $USER 
. Beispiel:
 cd /usr/share/examples/cvsup/ 

2.4.7 history

history Zeigt die Befehle an, die man zuletzt eingegeben hat. Beispiel:
 history
 

2.4.8 ls

   ls [-[ l ] [ F ] [r] [ R ] [r] [ a ] [ i ] [k] [n] [t] 

[u]] [dateisuchmuster] Hiermit wird ein Verzeichnis angezeigt. -l langes Format bei der Verzeichnisdarstellung verwenden, siehe Beispiel- ausgabe. -F Gibt ein bestimmtes Zeichen hinter einem Dateinamen aus, welches der Er- mittlung des Dateityps dient. Ein solches Zeichen steht unmittelbar hinter ̈ dem Dateinamen. Mogliche Werte sind: = fur ein Socket (hier nicht weiter ̈ wichtig), @ fur ein symbolischer Link (siehe Befehl ln), / fur ein Verzeichnis, ̈ ̈ * steht fur ein ausfuhrbares Programm, / fur ein Script oder einen Hardlink, ̈ ̈ ̈ — bedeutet FiFo (First in, First out). Ein Leerzeichen steht fur alle sons- ̈ tigen Dateien. -r ̈ ruckwarts sortieren ̈ -R Rekursive Darstellung, Unterverzeichnisse werden berucksichtigt. ̈ -a Zeigt auch unsichtbare Dateien an, die ublicherweise durch einen . (Punkt) ̈ am Dateianfang gekennzeichnet sind. -i ̈ Gibt die INODE-Nummern aus. Ein INODE ist ein Zahler, der bei jeder neu- ̈ en Datei um +1 erhoht wird und somit dafur sorgt, daß jede Datei auf einem ̈ ̈ Datentrager eine andere Kennung besitzt. Dies ist sehr sinnvoll, wenn man sog. Hardlinks verwendet, um Verweise auf Dateien zu erzeugen. Ein Ver- weis ist eine Art Dateiverknupfung, wie Sie es unter Windows kennenge- ̈ lernt haben (sollten). -k ̈ Großenangaben in KB (die Umgebungsvariable POSIXLY CORRECT wird dann nicht beachtet). -n Anstatt die Namen des Eigentumers / der Gruppe anzuzeigen, wird die UID ̈ und die GID gezeigt. -t Sortierung nach dem Erstellungsdatum der Dateien, die neuesten Files wer-den zuerst dargestellt. -u Sortierung nach dem letzten Zugriff. In Verbindung mit -l wird das Datum ̈ des letzten Zugriffs ausgegeben, anstatt das Datum der letzten Anderung. Wichtig: Wenn sich ein Inhaltsverzeichnis im Suchbegriff befindet , wird der Inhalt des Verzeichnisses mit allen Dateien ausgegeben!!! Befinden sich aber dort noch einmal weitere Verzeichnisse, wird der Inhalt dieser Ver- zeichnisse nicht weiter dargestellt (weil es keine echte Rekursion ist, wie ̈ der Fachmann so schon sagt).

̈ ̈ Zusatzliche Konstruktionsmoglichkeiten durch die Shell:
 ls ??? 
Alle Dateien und Verzeichnisse mit 3 Buchstaben werden aufgelistet. Verzeich- nisse werden durch einen Doppelpunkt gekennzeichnet.
 ls da? 
Alle Dateien mit da und einem weiteren Zeichen werden dargestellt. Verzeich- nisse werden durch einen Doppelpunkt gekennzeichnet.
 ls *a* 
Alle Dateien, in dem sich ein a befindet, werden angezeigt. Verzeichnisse wer-den durch einen Doppelpunkt gekennzeichnet.
 ls Datei[1-4] 
Zeigt alle Dateinamen mit dem Namen Datei1, Datei2, Datei3, Datei4 (nur die Namen) an. Tip: Wenn Sie auf die Idee kommen sollten, 100000 leere Dateien mit dem Kommando touch dateien[1-100000] zu erstellen (um sich oder andere zu ̈ nerven), muß ich Sie glucklicherweise enttauschen. Dies wird von der Shell ̈ ̈ in dieser Form nicht interpretiert. Merken Sie sich: Sie konnen mit der Klam- mer in dieser Form nur Dateien suchen oder kopieren, nicht aber erstellen.
 ls -l a[ab]* 
Es werden alle Dateien, die mit einem a beginnen und daraufhin minde- stens ein weiteres a oder b besitzen, angezeigt.
 ls -l a[!ab]* 
̈ Es werden alle Dateien, die mit einem a beginnen und die als nachstes Zeichen KEIN a oder b beinhalten, angezeigt. Die Dateinamen mussen ̈ insgesamt min-destens zwei Zeichen lang sein. Beispiel:
 ls -l a[!ab]*
-rw-r--r--          1 root       root                 0 May      9 16:09 a1
-rw-r--r--          1 root       root                 0 May      9 16:10 ax
-rw-r--r--          1 root       root                 0 May      9 16:10 axxx
ls -l
total 220
drw-------        14  root       root             1024  Apr 4       16:21 .
drwxr-xr-x        21  root       root             1024  Apr 4       14:57 ..
-rw-r--r--          1 root       root            66045  Apr 3       21:34 .X.err
-rw-r--r--          1 root       root                51 Apr 3       16:47 .profile
-rw-------          1 root       root            12288  Mar 28      17:06 .swp 
̈ Kleine Erlauterung zu dem dargestellten Ergebnis von ls -l dr-xr-xr-x 2 root admins 12345 Datum Dateiname Das erste Zeichen kann folgenden Inhalt haben: D Inhaltsverzeichnis - Normale Datei, Programm L Symbolischer Link (= eine Art Verkn ̈pfung, keine "wirkliche" Datei) u b,c Ger ̈tedatei (Siehe Verzeichnis /dev) a P Named-Pipe (f ̈r unsere Zwecke u nicht weiter wichtig) Die restlichen Zeichen der Ausgabe sind die Zugriffsrechte: r-xr-xr-x ̈ ̈ Tip: Die Zugriffsrechte konnen mit dem Befehl chmod geandert werden. r bedeutet Leserecht, x Ausfuhrungsrecht, s Schreibrecht. Die ersten drei ̈ ̈ Zeichen bestimmen den User, die nachsten 3 die Gruppe des Users und die letzen 3 Zeichen die Benutzerrechte fur allen anderen User, die nicht ̈ der Eigentumer sind und die auch nicht zur Gruppe der Datei oder des ̈ ̈ Verzeichnisses angehoren. 2 ̈ ̈ Verwaiszahler. Ein Verweiszahler zeigt an, wieviele Verknupfungen es zu ̈ die-ser Datei gibt. Tip: Ein neuer Verweis kann mit dem Kommando ln er- stellt werden. root Eigentumer ̈ admins Gruppe des Eigentumers. ̈ 12345 ̈ Dateigroße in Bytes.
 ls -ali
65025 drw-------            14 root    root 1024 Apr 4        16:21    .
        2 drwxr-xr-x        21 root    root 1024 Apr 4        14:57    ..
65676 -rw-r--r--            1 root     root 66045 Apr 3       21:34    .X.err
65719 -rw-r--r--            1 root     root        54 Apr 4   13:16    zahlen
65703 -rw-r--r--            1 root     root 2219 Mar 28       13:06     ̃test2 
̈ Wie sie hier sehen konnen, wird zu Beginn vor den Zugriffsrechten die INODE Nummer einer Datei oder eines Verzeichnisses angegeben.
 ls -lF
-rwxrwxrwx          1 root root 121 Apr 3 20:48 mywait*
drw-------          2 root root 1024 Mar 25 18:44 nsmail/ 

Tip: Wenn man sich ein Directory mittels ls -lF ansieht, steht hinter einem Softlink ein * weil dort das ausfuhrbare Programm steht. Schreibt man nur

̈
 ls -f , dann steht direkt hinter dem Softlink ein @.
ls -l|more 

Die Ausgabe von ls -l wird uber den sog. Pipe-Mechanismus, eigentlich ̈ eine Art Weiterleitung, an den Befehl more weitergegeben.

Tip: — ist eine Art Umleitung der Ergebnismenge eines Befehls zu einem anderen Befehl, der direkt folgt.
 ls -l >/home/user/frieda 
Schreibt den Inhalt des Inhaltsverzeichnisses in die Datei frieda.
 ls -l >../sub1/sub2/bimbam 

Indirekter, relativer Pfad (also wie unter DOS, ausgehend vom aktuellen Ver-zeichnis) Ausgabe in die Datei bimbam.

 ls -ltru 
̈

Zeigt Ihnen alle Dateien an, sortiert nach der Haufigkeit des Zugriffs. Die am meisten verwendeten Dateien sind unten, die weniger verwendeten Da- teien sind oben in der Liste. Wir haben noch mehr!

 ls .??* [ˆA-/-ˆ?]
Zeigt Dateien an, die eine Punkt beinhalten.
hope# ls .??* [ˆA-/-ˆ?]
.#Makefile.1.1.2.16               .htaccess2
.htaccess                         .htaccess_dirs
Dateien nach Datum sortieren
ls -Fltr
Das Ergebnis wurde dann etwa so aussehen
                   ̈
-rwxr-x---      1   www  www    2435  Jan 1     2001   handlemail.pl*
-rwxr-x---      1   www  www     824  Jan 2     2001   ticker.inc*
-rwxr-x---      1   www  www     304  Jan 4     2001   test_datum.php3*
-rwxr-x---      1   www  www    2947  Jan 9     2001   ns_key.cgi*
-rwxr-x---      1   www  www      95  Jan 9     2001   createcakey*
-rwxr-x---      1   www  www     783  Jan 9     2001   ssl.config*
-rwxr-x---      1   www  www     472  Jan 10    2001   createbrowserkey*
Nur die Verzeichnisse auflisten:
ls -d */.
Resultat:

hope# ls -d */.
CA/.           dcl/.            pix_kategorien/.
CONTRIB/. diff/.                pix_lex/.
CVS/.          docbook/.        pix_menu/.
INTERNA/. dox/.                 pix_userspezifisch/.
Images/. filearea/.             promotion/.
        ̈                           ̈
Die großten Dateien auflisten konnen wir auch:
ls -l | sort +4n | tail
hope# ls -l | sort +4n | tail
-rw-r--r-- 1 www www 1889702 Feb 26 05:00 0500-260...
-rw-r--r-- 1 www www 1891232 Feb 26 15:45 1545-260...
-rw-r--r-- 1 www www 1891744 Feb 26 15:50 1550-260... 

Es ist sehr wichtig, dass man sieht wie die Ergebnisse der Befehle ausse- hen. Dann kommt man schneller auf den Gedanken, weitere Kombinatio- nen anzuwenden um bestimmte Ziele zu erreichen.

̈

Mit ls -t zeig ich die altesten Files an, mit ls -tr die neuesten. ls -u gilt fur ̈ ̈ das Anderungsdatum. ̈ Die zuletzt geanderten Files auflisten (also nach Datum mal wieder)

 ls -lagFqt * | head
Das sieht dann so aus:
hope# ls -lagFqt * | head
-rwxr-x--- 1 www              www     7685   Feb    28  00:13   Makefile*
-rwxr-x--- 1 www              www 37697      Feb    28  00:03   ....
-rw-r--r-- 1 www              www     2409   Feb    28  00:03   ....
-rw-r--r-- 1 www              www      967   Feb    28  00:03   ....
 

2.4.9 file!

file datei... Gibt den Typ von datei zuruck. ̈
 FreeBSD 32 Bit:
shell: file *
arch:ELF 32-bit LSB executable, Intel 80386,
 version 1, dynamically linked (uses shared libs), stripped
bash:ELF 32-bit LSB executable, Intel 80386,
 version 1, dynamically linked (uses shared libs), stripped
bzip2:ELF 32-bit LSB executable, Intel 80386,
 version 1, dynamically linked (uses shared libs), not stripped
Linux 64 Bit:
file /bin/df
/bin/df: ELF 64-bit LSB executable, x86-64,
version 1 (SYSV), for GNU/Linux 2.6.4,
dynamically linked (uses shared libs), stripped 

2.4.10 mkdir

 mkdir [-p] verzeichnis 
Erstellt ein Verzeichnis. -p Erstellt Unterverzeichnisse, wenn notwendig. Beispiel:
 mkdir testverzeichnis 

2.4.11 login

Id : klogi.tex, v1.42004/10/0111 : 51 : 42bkExp login Diese Anweisung wird beim Login ausgefuhrt, um Sie zu identifizieren. ̈ ̈ ̈

Wahrend einer Anmeldesitzung (Session) konnen Sie sich mit login einfach ”neu” einloggen, ohne sich auszuloggen. Es wird ein weiterer Anmeldepro- zess aktiviert, der Ihren Benutzernamen und Ihr Kennwort abfragt. Wenn Sie sich wieder ausloggen, erhalten Sie den Benutzernamen, den Sie vor dem login Kommando verwendet haben (wenn Sie schon angemeldet ge- ̈ wesen sind, sonst fliegenSSie in den Standardlogin). Wenn Sie sich vollig neu einloggen, wird der Login durch den mingetty Prozess gestartet (siehe Datei /etc/inittab, Eintrag 1:123:respawn:/sbin/mingetty --noclear tty1).

̈

Wenn Sie sich als root ”remote” einloggen mochten (also von einer an- deren Arbeitsstation aus , sagen wir mal beispielsweise mit telnet) dann wird der Login aus Sicherheitsgrunden nicht angenommen. Diese Einstel- ̈ ̈ ̈ lung konnen Sie andern, in dem Sie die (SuSe-Linux) gemeinerweise den ̈ oder die Eintrage CONSOLE in der Datei /etc/login.defs einkommen- tieren (z. B. # console ...). Verwendet Ihr System den PAM Authenti- ̈ fizierungsmechanismus (das merken Sie spatestens daran, wenn Sie sich ̈ immer noch nicht einloggen konnen) (siehe Abschnitt ?? Seite ??), mussen ̈ Sie in der Datei /etc/pam.d/login den Eintrag

 auth required /lib/security/pam securetty.so 

einkommentieren (also # auth...). Verwenden Sie Red Hat Linux, dann hin- terlegen Sie in der Konfigurationsdatei /etc/securetty die Parameter ̈ pty1 und pty2. Stellen Sie auch den PAM Parameter ein wie erwahnt. Be- ̈ nutzen Sie FreeBSD, dann erstellen Sie sich besser einen zusatzlichen Ac- count und wechseln dann in den Admin-Modus durch das SU Kommando. ̈ ̈ ̈ Zusatzlich muss jeder Rechner mit Namen aufgelost werden konnen, das bedeutet wenn Sie keinen Namensserver verwenden, mussen die Rechner ̈ die sich mit Telnet und FTP einloggen wollen in der /etc/hosts eingetragen ̈ ̈ sein. Mochten Sie die Sicherheit Ihres FreeBSD Systems zerstoren dann brauchen Sie nur in der /etc/ttys hinter dem gewunschten Terminal die Opti- ̈ on secure zu hinterlegen (siehe man ttys). Wenn Sie sich immernoch nicht ̈ einloggen konnen, dann versuchen Sie mal den Linux-Server anzupingen. ̈ Konnen sie ihn nicht anpingen, sind aber der Meinung das Netz sei in Ord- nung, dann senden Sie mal vom Linux-Server aus einen Ping los und ver- suchen Sie es erneut. Manchmal werden die Netzwerktreiber nicht sofort aktiviert.

Beispiel: login

2.4.12 shutdown

 shutdown [ -h | -r | -k] [now] 

Der Rechner wird heruntergefahren. Alle Programme werden sofort been- det. Der Shutdown kann nicht von Programmen abgefangen oder gebremst werden. Es erfolgen auch keine Mitteilungen in der Form wie ”Sind Sie si- ̈ cher” oder ahnliches. Vorteil: Ihr System wird auf jeden Fall herunterfahren, nicht wie bei dem Betriebssystem, das ich nicht nennen werde, deren Fir- ma sich immer unbeliebter macht .

 -h 
̈ Fahrt das System herunter, es erfolgt kein Neustart.
 -r 
Reboot, Rechner wird nach dem Shutdown neu gestartet.
 now 
Der Shutdown soll sofort erfolgen.
 -k 
̈ Das System fahrt nicht wirklich herunter, es werden nur Warnungen aus- gegeben.

Beispiel:
 shutdown -h now 

2.4.13 type

type shellbefehl

̈

Gibt den Typ eines Befehls an. Entweder bekommen wir zu horen, daß es ein shellinterner Befehl ist, oder halt nicht. Damit kann man feststellen, ob ein bestimmter Befehl Teil des Betriebssystems ist, oder ob er von Festplat- te geladen wird. Tip: Die Reihenfolge, wo die Shell nach Befehlen sucht, ist in der Varia- blen $PATH hinterlegt. Die Definition finden Sie in der Datei /.profile

 Beispiel:
type mkdir
2.4.14     cal
cal
Gibt einen Kalender aus.
Beispiel:
cal 

2.4.15 date

 date [format] 

Gibt das Datum aus, auch in einer von uns gewunschten Schreibweise - ̈ auch ein Datum kann man setzen wie wir nachher sehen werden. Wir lesen mal ein Datum aus:

 date +%d.%m.%y
var= ‘date +%d.%m.%y‘
echo $var 

Jetzt versuchen wir mal, das Datum zu setzen. Normalerweise ist es ja so, dass ich mich einfach ins BIOS begebe, dort das Datum einstelle und alles ist erledigt. Wenn man aber einen Server im Rechenzentrum stehen hat, sieht die Angelegenheit ganz anders aus. Nehmen wir mal an, das Datum steht auf

 bsdserver# date
Sat Jan 1 06:18:04 CET 2000
Also ein Zeitpunkt in der Vergangenheit. Wir versuchen mal, das Datum auf
den 
 Fri Oct 26 22:13:08 CEST 2001
zu bewegen - also einen ganz anderen Zeitpunkt.
Ich versuch es mal direkt einzustellen.
date 0110262238
Ergibt: 2001 - 10 - 26 22:38 Uhr (yyyy-mm-tt hh:mm)
Beispiel:
date
Noch ein paar Beispiele:
date 0308141200 

2.4.16 pwd

 pwd 
̈ Gibt das aktuelle Verzeichnis an, in dem man sich gerade aufhalt. Beispiel:
 pwd 

2.4.17 cp

 cp [-d][-f][-p][-R] [-s] quelle ziel 
̈

Kopiert eine Datei oder ein Verzeichnis. Der Befehl hat viel mehr Moglich- ̈ keiten als hier dargestellt, daher verweise ich zusatzlich auf die Dokumen- tation zu diesem Kommando.

 -d 
Symbolische Links auch als symbolische Links kopieren.
 -f 
Existierende Dateien im Zielverzeichnis auf jeden Fall uberschreiben. ̈
 -p 
Eigentumer, Gruppen, Zugriffszeiten ect. mitkopieren. ̈
 -R 
Rekursion, kopiert ganze Verzeichnisse.
 -s 
Erstellt symbolische Links anstatt die Dateien zu kopieren!!! Eigentlich recht sinnvoll!!!! Damit kann verhindert werden, daß bestimmte Dateien, die im- ̈ mer wieder benotigt werden, auf dem ganzen System verteilt werden!!! Wenn quelle ein Verzeichnis ist oder wenn es aus mehreren Dateien be- steht, muß ziel naturlich ebenso ein vorhandenes Verzeichnis sein.

̈

Hinweis! ̈ Die Option -s ist mehr als wichtig! Nehmen wir mal an, Sie mochten ger- ne (warum auch immer) 50 Dateien, die immer gleich sind (ausser wenn ein Update eingespielt wird) in jedem Userverzeichnis verfugbar machen.

̈

Insgesamt haben diese Dateien einen Umfang von 100 MB. Bei 10 Usern ̈ hatten wir dann schon eine sinnlose Speicherplatzverschwendung von 1000 MB. Kopieren Sie einfach die Dateien in die Userverzeichnisse mit der -s ̈ ̈ Option, dann ßieht das so ausals waren die Dateien in den Userverzeich- nissen, in ”Wirklichkeit” aber sind es nur Dateiverweise!!! Eine sehr nutzli- ̈ ̈ che Moglichkeit, finden Sie nicht? So kopieren Sie Devices aus dem Verzeichnis /dev nach /mnt. Die Datei- Eigenschaften sollen erhalten bleiben. Dieser Kopiervorgang ist sehr wich- tig, wenn Sie beispielsweise eigene Distributionen erstellen und Device- ̈ Eintrage nicht extra mittels mknod per Hand erstellen wollen. Wenn Sie nur ̈ cp verwenden wurden, ware der Vorgang nicht erfolgreich:

̈
 Beispiel:
cp -dpR /dev /mnt 

Was kann passieren, wenn man Dateien aus einem Verzeichnis B rekursiv ̈ ̈ nach A kopieren mochte? So einiges. In 99 Prozent aller Falle gibt es kein ̈ Problem, aber der unwahrscheinliche Fall kann doch eintreten, dass plotz- lich nichts mehr funktioniert. Ein Praxisbeispiel. Wir haben zwei Zielverzeichnisse. Das Quellverzeichnis ist immer gleich. Der Befehl cp -Rv scheint im ersten Verzeichnis nicht zu funktionieren.

 drwxrwxrwx        38 root      wheel    9216 Dec     7 22:08 cms_mgh

drwxr-xr-x      29 root     www       8704 Dec     7 22:10 cms_mgh2 

Die Zielverzeichnisse sehen normal aus. Wo ist nur der Unterschied? Gibt es irgend eine dubiose ACL Einstellung? Da hier FreeBSD zum Einsatz kam, gibt es dort den Befehl getfacl.

 juno27file:cms_mgh
#owner:0
#group:0
user::rwx
group::rwx
other::rwx
juno27file:cms_mgh2
#owner:0
#group:80
user::rwx
group::r-x
other::r-x
Der Befehl chflags, dessen Attribute mittels ls -lo einsehbar sind, zeigen
                  ̈
auch nichts an. Ubrig bleibt noch der Inode. Ich habe auch mal mehrere
Testfiles dazu erzeugt.
11969121    drwxrwxrwx 38 r.. www 9216 Dec 7 22:08 cms_mgh
 6107349    drwxr-xr-x 29 r.. www 8704 Dec 7 22:10 cms_mgh2
11499936    drwxr-xr-x 2 r.. www 512 Dec 7 22:35 cms_mgh4
11499937    drwxr-xr-x 2 r.. www 512 Dec 7 22:35 cms_mgh5
11499938    drwxr-xr-x 2 r.. www 512 Dec 7 22:38 cms_mgh6 
̈ ̈

Die Losung hab ich damals nicht ermitteln konnen. Wenn Sie folgendes erhalten cp: omitting directory Verwenden Sie die Option -r und vergessen Sie nicht quelle/ und ziel/ statt andere Konstruktionen zu verwenden. Ein Beispiel aus einem Makefile

  -cp -rpv ./ ${INSTALLDIR}/ 

2.4.18 install

 install [-bCcMpSsv] [-B suffix] [-f flags] [-g group] [-m
mode] [-o owner] quelldatei zielpfad ... 

Mit diesem Befehl kann man Dateien oder Verzeichnisse mit bestimmten ̈ Eigenschaften kopieren. Dieser Befehl ist ahnlich wie cp, nur dass Sie hier ̈ noch ein paar Zusatze haben.

 -b 
Backup anlegen, falls Ziel vorhanden
 -B 
Suffix fur Backup ̈
 -C 
̈ ̈ Datei kopieren, wenn Quelle+Ziel identisch, keine Anderung der Anderungs- zeit an der Datei
 -c 
ganz normal kopieren (Default)
 -d 
Notwendige Verzeichnisse / Unterverzeichnisse erstellen
 -f 
File-Flags einstellen (man 1 chflags)
 -g 
Benutzergruppe, Text oder nummerisch erlaubt
 -M 
kein mmap benutzen (Datei wird nicht im Ram ausgelagert, siehe man mmap 2)
 -m 
Zugriffsrecht fur die Datei einstellen, zum Beispiel 755 (rwx-rw-rw) ̈
 -o 
Eigentumer der Datei ̈
 -p 
Quelldatei Datum erhalten (mod time)
 -S 
Save copy, Datei erst unter anderem Namen in das Zielverzeichnis kopie- ren und dann umbenennen
 -s 
strip ausfuhren (man 1 strip) ̈
 -v 
̈ Verbose, Tatigkeitshinweis anzeigen Die Flags fur die Dateiattribute sind wie folgt (stellen Sie ein no vor dem ̈ Flag, um es abzuschalten - zum Beispiel noarch:
  arch 
Archiv-Flag (super-user)
 opaque 
opaque flag (owner / super-user)
 nodump 
Kein Dump der Datei erlaubt (owner / super-user)
 sappnd 
append-only (nur Anf ̈gen erlaubt) (super-user) u
 schg 
(Datei} kann in keiner Weise ver ̈ndert werden) (super-user) a
 sunlnk 
undeletable flag (Datei} kann nicht gel ̈scht o werden) (super-user)
 uappnd 
append-only flag (nur Anf ̈gen erlaubt) (super-user) u
 uchg 
immutable flag (Datei kann in keiner Weise ver ̈ndert werden) (owner / super-user) a
 uunlnk 
undeletable flag (Datei kann nicht gel ̈scht werden) (owner / super-user only) o Mit ls -lo kann man sich die Flags der einzelnen Dateien dann ansehen. Beispiel:
 install -c -s -o root -g wheel -m 555 -m 711 quelldatei 
/usr/local/sbin

2.4.19 rcp

 rcp quelle ziel 

Dieses Kommando kopiert Dateien zwischen zwei verschiedenen Syste- men. Damit das Zielsystem dem Quellsystem einen Zugang erlaubt, muss in der Datei $HOME/.rlogin der Quellrechner auf dem Zielrechner eingetra- gen sein. Hier ein Beispiel fur den Zielrechner, User root.

̈
 master                 root 

Dem Computer ”master” mit dem Usernamen ”root” wird es erlaubt, Datei- en remote zu kopieren. Auf diesem Computer kopieren wir nun eine Datei zum Rechner ”linux”. Beispiel:

 rcp identity.pub root@linux:root/ 

War doch gar nicht so schwer! Der Kopiervorgang wird unverschlusselt ̈ ̈ durchgefuhrt. Um einen verschlusselten Kopiervorgang zu ermoglichen, ̈ ̈ mussen Sie SSH auf dem Client und auf dem Server installieren.

̈

2.4.20 cat

 cat datei...
Inhalt einer Datei anzeigen.
Beispiel:
cat datei 

2.4.21 mv

 mv [-b ] [ -i ] quelle ziel 
Dateien umbenennen oder verschieben.
 -b            Benennt gleichnamige Dateien im
              Zielverzeichnis als Backup um ( ̃),
              anstatt sie zu l ̈schen.
                                    o
-i            Fragt vorher, ob Dateien
               ̈berschrieben werden d ̈rfen.
              u                              u
Beispiel:
mv datei1 datei2 

2.4.22 cmp

 cmp [-s] datei1 datei2 

Vergleicht die Dateien miteinander und liefert, wenn nichts angegeben ist, die Position der ersten Abweichung. -s Es erfolgt keine Bildschirmausgabe, das Ergebnis wird als Exitcode uber- ̈ geben und kann beispielsweise mit

   echo $? 
ausgegeben werden. Exitcode 0 bedeutet: Dateien sind identisch. Exitcode ̈ 1 bedeutet, daß die Dateien nicht identisch sind. Großer 1 steht fur einen ̈
 Fehler.
Beispiel:
cmp datei1 datei2 

2.4.23 rm

 rm [-r] datei oder verzeichnis... 
̈ Loschen von Dateien oder Verzeichnissen. -r ̈
 rekursiv loschen
Beispiel:
rm -r verzeichnis 

2.4.24 ln

 ln [-s] quelle neuer link 

Erzeugt eine neue Dateiverknupfung. ̈ -s Es wird ein Softlink erzeugt. Ein Softlink ist ein Eintrag mit einem neuen IN- ̈ ODE (Dateizahler), der Plattenubergreifend verwendet werden kann. Wird ̈ der Parameter nicht verwendet, wird ein neuer Link mit dem selben INODE erzeugt, was aber nur die eigene Partition betrifft, auf der die Quelldaten liegen. Ein Softlink kann in einem Verzeichnis leicht durch ein l erkannt werden (probieren Sie mal ls -la), ein Hardlink jedoch nicht. Dateiverknupfungen sorgen dafur, daß gleiche Dateien an einem Ort blei- ̈ ̈ ̈ ben und unter anderem Namen in anderen Verzeichnissen sein konnen. Das beste Beispiel sind die Mtools die oft unter Linux benutzt werden, wel- ̈ che den Zugriff auf MS-Dos Disketten ermoglichen. Die gesamten Befehle wie mdir, mcopy usw. sind Links, die nur auf eine einzige, immer gleiche Datei zeigen!!! Das Program uberpruft einfach, mit welchem Dateinamen ̈ ̈ es aufgerufen wurde und fuhrt anschließend die gewunschten Operationen ̈ ̈ durch.

Tip: Der Name eines Scripts kann in einem Shellscript uber die Variable ̈
   ${0}
abgefragt werden! Beispiel:
  echo ${0} 
̈

. Dieser Parameter andert sich nie, egal ob beispielsweise die Anweisung shift irgendwo verwendet wird um die Inhalte der ubergebenen Parameter ̈ eines Scripts eine Stelle nach Links zu verschieben.

 Beispiel:
ln -s altesDir neuesDir 

2.4.25 clear

clear ̈ Loscht aller Wahrscheinlichkeit den Screen -) Beispiel: clear

2.4.26 touch

touch datei,... ̈

TAndert das Zugriffsdatum einer Datei. Wenn datei eine nicht vorhandene Datei ist, wird sie neu erstellt. Tip: Nehmen wir mal an, Sie haben irgendwo auf dem Server ein Script, ̈ wel-ches uberpruft, welche Dateien alter als 7 Tage sind (z. B. mit dem find ̈ ̈ ̈ Kommando). Wenn Sie nicht wollen, daß Ihre Dateien alter werden (weil ein ̈ Script sie sonst vielleicht loscht!), geben wir einfach ein touch * und schon haben alle unsere Dateien im Verzeichnis das aktuelle Datum! Jede Datei besitzt intern drei Zeitangaben, von denen eine mit dem normalen ls -l aus- gegeben wird. Die drei Zeiten sind: Das Datum, an dem die Datei erzeugt wurde, wann sie zuletzt aufgerufen wurde und wann sie zuletzt modifiziert worden ist.

 Beispiel:
touch datei 

2.4.27 wc

 wc -[l | w | c ] [datei] 

̈ ̈ Zahlt eine Anzahl von Zeilen, Wortern und Zeichen. -w ̈ ̈ Zahlt die Worter. -l ̈ Zahlt die Zeilen. -c ̈ Zahlt die Zeichen. ̈ Wenn Sie nichts angeben, wird in der Reihenfolge Zeilen, Worter und Zei- chen ausgegeben.

 Beispiel:
cat /etc/passwd | wc -l
298
Wir haben 298 Zeilen in der Datei /etc/passwd.
wc -l *
wc: Desktop: Is a directory
         0 Desktop
wc: Mail: Is a directory
         0 Mail
    3777 ServerLog
      729 StartLog

...
87069 total
Die letzte Zeile beschreibt immer die Anzahl der jeweiligen gefundenen
Option.
wc *
wc: Desktop: Is a directory
         0           0         0 Desktop
wc: Mail: Is a directory
         0           0         0 Mail
       65          438     3777 ServerLog
       51           94      729 StartLog
...
2023      10733       87069 total 
̈

Hier haben wir die Anzahl der Zeilen, Worter und Zeichen. Betrachten Sie diesen Befehl als einen in einer Kette von Befehlen, die man in Kombination zueinander benutzt. Was ich damit meine, werden Sie irgendwann schon selbst feststellen.

Beispiel: wc * weiter ̈

Dies sind Auszüge aus unserer X-ITEC Buchserie. Sie können alle Bücher unter URL bestellen

Alle Rechte, auch die der Ubersetzung, vorbehalten. Kein Teil des Wer kes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder einem an- deren Verfahren) ohne schriftliche Genehmigung des Autors reproduziert ̈ oder unter Verwendung elektronischer Systeme verarbeitet, vervielfaltigt ̈ oder verbreitet werden. Der Autor ubernimmt keine Gewahr fur die Funktion ̈ ̈ einzelner Programme oder von Teilen derselben. Insbesondere ubernimmt ̈ er keinerlei Haftung fur eventuelle, aus dem Gebrauch resultierende Fol geschaden.

Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnun- gen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daß solche Namen im Sinne der Warenzeichen- und ̈ Markenschutz-Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden durften.

̈ ̈

(C) Boris Koster 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009