Entwicklung
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 logoutlogouẗ 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:
exitBeendet ein Script. Wenn Sie in keinem Script sind, werden Sie aus Ihrer Shell ausgeloggt.
exit 0Beendet ein Script oder die Bash mit dem Fehlercode 0 (alles OK).
exit 2Beendet ein Script oder die Bash mit dem Fehlercode ¡¿ 0. n Ein Fehlercode. Beispiel:
exit 12.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 root2.4.5 echo
echo [-n] texẗ 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 nameBeispiele: 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 \$NAMEzuruck, 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 ̈
$namegespeichert 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
$HOMEund 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/friedaSchreibt 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 -ltrü
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] verzeichnisErstellt 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: login2.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 .
-ḧ Fahrt das System herunter, es erfolgt kein Neustart.
-rReboot, Rechner wird nach dem Shutdown neu gestartet.
nowDer 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.
-dSymbolische Links auch als symbolische Links kopieren.
-fExistierende Dateien im Zielverzeichnis auf jeden Fall uberschreiben. ̈
-pEigentumer, Gruppen, Zugriffszeiten ect. mitkopieren. ̈
-RRekursion, kopiert ganze Verzeichnisse.
-sErstellt 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.
-bBackup anlegen, falls Ziel vorhanden
-BSuffix fur Backup ̈
-C̈ ̈ Datei kopieren, wenn Quelle+Ziel identisch, keine Anderung der Anderungs- zeit an der Datei
-cganz normal kopieren (Default)
-dNotwendige Verzeichnisse / Unterverzeichnisse erstellen
-fFile-Flags einstellen (man 1 chflags)
-gBenutzergruppe, Text oder nummerisch erlaubt
-Mkein mmap benutzen (Datei wird nicht im Ram ausgelagert, siehe man mmap 2)
-mZugriffsrecht fur die Datei einstellen, zum Beispiel 755 (rwx-rw-rw) ̈
-oEigentumer der Datei ̈
-pQuelldatei Datum erhalten (mod time)
-SSave copy, Datei erst unter anderem Namen in das Zielverzeichnis kopie- ren und dann umbenennen
-sstrip 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:
archArchiv-Flag (super-user)
opaqueopaque flag (owner / super-user)
nodumpKein Dump der Datei erlaubt (owner / super-user)
sappndappend-only (nur Anf ̈gen erlaubt) (super-user) u
schg(Datei} kann in keiner Weise ver ̈ndert werden) (super-user) a
sunlnkundeletable flag (Datei} kann nicht gel ̈scht o werden) (super-user)
uappndappend-only flag (nur Anf ̈gen erlaubt) (super-user) u
uchgimmutable flag (Datei kann in keiner Weise ver ̈ndert werden) (owner / super-user) a
uunlnkundeletable 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 zielDateien 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: clear2.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