Shell

Kommandozeileninterpreter

Ein Kommandozeileninterpreter als Computerprogramm interpretiert Zeilenweise Text als Befehle und übergibt diese Befehle dem Betriebssystem und gibt gegebenenfalls Rückmeldungen aus. Der Text wird von der Kommandozeile oder aus einer Datei eingelesen.

Der Kommandozeileninterpreter, im Englischen auch command line interpreter (CLI) genannt, kapselt das Betriebssystem von Anwendern ab und wird daher auch als Shell bezeichnet. Die Shell hat gegenüber grafischen Benutzeroberflächen die Vorteile, das Betriebssystem direkter, umfangreicher und automatisiert steuern zu können. Ausserdem belastet der Kommandozeileninterpreter den Prozessor nur sehr wenig und hat wenig Abhängigkeiten. Deshalb ist er auch auf kleinsten Geräten zu finden. Allerdings ist eine längere Einarbeitungszeit für die Anwender notwendig, da sie die notwendigen Befehle kennen müssen. Dies wird allgemein als Nachteil betrachtet.

Shell-Derivate

sh

Die Bourne-Shell aus den späten 1970ern war die standard Shell unter UNIX. Nicht zu verwechseln mit der Bourne Again Shell!

ash

Die Almquist-Shell (ash) ist ein Rewrite der Bourne-Shell. Es kam aus lizenzrechtlichen und politischen Gründen zu dieser neuen Implementierung. Kommt auch in Busybox zum Einsatz.

dash

Die Debian Almquist-Shell ist ein Abkömmling der Almquist-Shell, siehe oben.

bash

Bourne Again Shell. DIE Standard-Shell unter Linux und Mac OSX schlechthin. Einerseits sehr mächtig mit vielen Erweiterungen zur ursprünglichen Shell (sh), andererseits kompatibel zu POSIX. Allerdings auch sehr fett und entsprechend langsam. Als interaktive Shell bei den meisten die erste Wahl, jedoch nicht unbedingt als Interpreter für Skripte. Je nach Distribution wird aus Performance Gründen für Skripte auf die dash zurueckgegriffen.

Busybox

Das Schweizer Taschenmesser für Embedded Linux. Busybox kombiniert die wichtigsten Werkzeuge in einer einzigen ausführbaren Datei und ist auf geringe Größe optimiert. Die Befehle sind möglichtst so programmiert, dass sie sich genau so verhalten, wie die entsprechenden GNU-Befehle. Allerdings besitzen die Befehle bei Busybox nicht ganz so viele Optionen. Die wichtigsten Optionen sind für gewöhnlich enthalten. Busybox versucht nicht vollkommen POSIX Konform zu sein. Eher versucht Busybox das Verhalten nachzubilden, dass erwartet wird. Busybox beinhaltet neben vielen grundlegenden Befehlen auch die Almquist-Shell als Kommandozeileninterpreter. Da Busybox auf Embedded Linux Systemen bevorzugt anzutreffen ist, beschränken sich die weiter unten aufgeführten Befehle hauptsächlich auf die in Busybox integrierten Versionen.

Die Ausgabe vom Aufruf

''busybox --help''

gibt unter anderem die eingebauten Funktionen aus. Welche Funktionen in Busybox eingebaut sind ist unterschiedlich. Eine recht typische Ausgabe könnte so aussehen:

Currently defined functions:
      [, [[, acpid, addgroup, adduser, adjtimex, ar, arping, ash, awk, basename, brctl, bunzip2, bzcat, bzip2, cal, cat,
      chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, cpio, crond, crontab, cut, date, dc, dd, deallocvt, delgroup,
      deluser, df, dirname, dmesg, dnsdomainname, dos2unix, dpkg, dpkg-deb, du, dumpkmap, dumpleases, echo, ed, egrep, eject,
      env, expand, expr, false, fbset, fdflush, fdisk, fgrep, find, fold, free, freeramdisk, fsck.minix, ftpget, ftpput,
      getopt, getty, grep, gunzip, gzip, halt, head, hexdump, hostid, hostname, httpd, hwclock, id, ifconfig, ifdown, ifup,
      init, ionice, ip, ipcalc, kill, killall, klogd, last, length, less, linuxrc, ln, loadfont, loadkmap, logger, login,
      logname, logread, losetup, ls, lzmacat, makedevs, md5sum, mdev, mesg, microcom, mkdir, mkfifo, mkfs.minix, mknod,
      mkswap, mktemp, more, mount, mt, mv, nameif, nc, netstat, nslookup, od, openvt, passwd, patch, pidof, ping, ping6,
      pivot_root, poweroff, printf, ps, pwd, rdate, readlink, realpath, reboot, renice, reset, rm, rmdir, route, rpm,
      rpm2cpio, run-parts, sed, setkeycodes, sh, sha1sum, sha256sum, sha512sum, sleep, sort, start-stop-daemon, static-sh,
      strings, stty, su, sulogin, swapoff, swapon, sync, syslogd, tac, tail, tar, tee, telnet, telnetd, test, tftp, time,
      timeout, top, touch, tr, traceroute, true, tty, tunctl, udhcpc, udhcpd, umount, uname, uncompress, unexpand, uniq,
      unix2dos, unlzma, unzip, uptime, usleep, uudecode, uuencode, vconfig, vi, vlock, watch, watchdog, wc, wget, which, who,
      whoami, xargs, yes, zcat

Im Folgenden werden einige dieser Befehle näher betrachtet.

Syntax

Befehl [--Option] [-o] [Argument]

oder eben englisch…

command [--option] [-o] [argument]

Sowohl Optionen als auch Argumente sind hier in eckigen Klammern angegeben. Das bedeutet, dass diese Angaben Optional, also nicht verpflichtend, sind. Es handelt sich hier um eine generelle Syntax und bezieht sich nicht auf einen speziellen Befehl. Wird bei der Beschreibung eines bestimmten Kommando eine Option oder ein Argument in spitzen Klammern angegeben, so sind diese Angaben verpflichtend und dürfen nicht einfach weggelassen werden. Bei den Optionen gibt es die lange Version mit zwei Bindestrich-Minus '–' gefolgt von einer ausgeschriebenen Option und die kurze Version mit nur einem '-' gefolgt von einem alphanummerischen Zeichen. Ausnahmen bestätigen die Regel. Die eckigen bzw. spitzen Klammern werden bei den tatsächlichen Befehlen natürlich nicht geschrieben, sie dienen ausschließlich der Syntax-Erklärung, die Sie auch in den „man pages“ finden. Als Beispiel der Befehl „ls“, der weiter unten noch genauer erklärt wird.

ls -l *.jpg

Bei diesem Beispiel würden all Dateien, die mit .jpg enden (*.jpg), aufgelisten (ls) und zwar in der Langform (-l). ls ist der Befehl, -l die Option und *.jpg das Argument.

Anmelden/login

stdin

Sitzen Sie vor dem Rechner, bei dem Sie sich auf der Kommandozeile anmelden möchten, werden Sie für gewöhnlich per Promt dazu aufgefordert.

login:

dort geben Sie den Login-Namen an, gefolgt von einem Druck auf die Enter-Taster (sonst warten Sie ziemlich lange…)

login:meinloginname

Daraufhin werden Sie zur Eingabe ihres Passworts aufgefordert. Auch hier wartet der Rechner auf den Abschluss durch <return>, also der Enter-Taster. Je nach Kommandozeileninterpreter und Profil erwartet Sie nun ein Prompt. Das könnte so aussehen:

~/$

Das Promt ist die Eingabeaufforderung. Der Rechner wartet also auf einen Befehl von Ihnen.

ssh

SSH ist die Secure SHell. Alle Daten werden zwischen der lokalen Maschine, dem ssh-client, und der entfernten Maschine, dem ssh-server, verschlüsselt übertragen, also getunnelt. Das gilt auch für das Passwort. Dieses wird zwar im Klartext, aber eben durch einen verschlüsselten Tunnel übermittelt. Die einfachste Syntax findet Anwendung, wenn der Login-Name des lokalen Benutzers identisch ist mit dem Login-Namen auf dem entfernten Rechner. Es wird der Befehl gefolgt vom Namen des Rechners angeben.

ssh <hostname>

Wird der Name nicht aufgelöst, weil im Netzwerk nicht bekannt, kann man auch direkt die IP Adresse angeben.

ssh <ip>

Will man sich als jemand anderes Anmelden, setzt man vor der IP-Adresse bzw. dem Hostnamen noch den Login-Namen, verbunden mit dem '@'-Zeichen. Das sieht dann genauso wie eine E-Mail-Adresse aus.

ssh <user@hostname>

putty

Auf dem Betriebssystem aus Redmond muss man sich mit 'putty' behelfen, um sich per ssh auf einen anderen Rechner einloggen zu können. Putty stellt eine grafische Oberfläche zur Verfügung, dort kann man die nötigen Daten wie IP-Adresse und Loginnamen eingeben.

Sich im Dateisystem zurechtfinden

whoami

Wer bin ich (engl.: who am i)? Gibt den Benutzernamen aus, der mit der momentan verwendeten User-ID verknüpft ist.

who

who [-a]

Zeigt an, wer (engl. „who“) eingeloggt ist.

Optionen

-a

alle anzeigen

pwd

pwd [OPTION]…

Gibt den vollen Dateinamen vom momentanten Arbeitsverzeichnis aus.

Optionen

-L, --logical

PWD gibt den logischen Dateinamen von der Umgebung aus, auch wenn es ein symbolischer Link ist (wird bei busybox pwd ignoriert).

-P, --physical

PWD gibt den physikalischen Dateinamen aus, folgt also dem symbolischen Link (wird bei busybox pwd ignoriert) .

--help

diese Hilfe anzeigen und beenden.

--version

Versionsinformation ausgeben und benden (wird bei busybox pwd ignoriert) .

Note

Die Optionen sind je nach shell nicht unbedingt vorhanden. PWD gibt je nach Version immer den physikalischen Dateinamen aus, z.B. auch bei busybox pwd!

ls

ls [-1AacCdeFilnpLRrSsTtuvwxXhk] [FILE]…
Listet Inhalt(e) vom Verzeichnis.

Optionen

-1
Listet in einer einzigen Spalte auf

-A
Listet nicht . und .. auf

-a
Versteckt nicht die Einträge, die mit . beginnen

-C
Listet in Spalten (engl.: columns) auf

-c
In Kombination mit -l: sortiert nach ctime

--color[={allways,never,auto}]
Steuert die Farbgebung

-d
Listet Verzeichniss (engl.: directory) Einträge statt den Inhalt

-F
Hängt einen Indikator an Einträge an. Je nach Typ ein Zeichen von */=@|

-h
Listet Größen in menschenlesbarem (engl.: human readable) Format (z.B. 1K 243M 2G)

-i
Listet Inode-Nummer (engl.: inode number)

-l
Langes Listenformat

-n
Listet numerische UID und GID anstatt der Namen

-p
Hängt einen Indikator an Einträge an. Je nach Typ ein Zeichen von /=@|

-L
Listet die Einträge auf, auf die Symlinks verweisen, statt des Symlinks selbst.

-R
Listet die Unterverzeichnisse rekursiv auf

-r
Sortiert in umgekehrter (engl.: reverse) Reihenfolge

-S
Sortiert nach Datei-Größe (engl.: size)

-s
Listet die Größe (engl.: size) von jeder Datei, in blocks

-T NUM

-t
In Kombination mit -l: sortiert nach modifikations Zeit

-u
In Kombination mit -l: sortiert nach access time

-v
Sortiert nach Version

-w NUM
Nimmt an, dass das Terminal NUM Spalten breit ist

-X
Sortiert nach Erweiterung

-x
Listet in Reihen auf

Dateien lesen und ausgeben

more

more [FILE]…

Seitenweise FILE oder die Eingabe von 'stdin' (falls FILE nicht angeben) betrachten.

less

less [-EMNmh~I?] [FILE]…

View a file or list of files. The position within files can be changed, and files can be manipulated in various ways.

Optionen

-E

Quit once the end of a file is reached

-M,-m

Display a status line containing the line numbers and percentage through the file

-N

Prefix line numbers to each line

-I

Ignore case in all searches

-~

Suppress ~s displayed past the end of the file

cat

cat [-u] [FILE]…

FILE(s) verknüpfen (engl: „concatenate“) und nach stdout ausgeben.

Optionen

-u

Use unbuffered i/o (wird bei busybox ignoriert)

tac

tac [FILE]…

FILE(s) zusammenführen und in umgekehrter Reihenfolge zeilenweise nach stdout ausgeben. Siehe auch cat (tac ist cat rückwerts).

Dateien anlegen, entfernen, ändern

touch

touch [-c] [-d DATE] FILE [FILE]…

Update the last-modified date on the given FILE[s]

Optionen

-c

Do not create files

-d DT

Date/time to use

NOTE

„touch“ eigent sich nicht nur zum anlegen von Dateien, sondern ist vorrangig zum Ändern des Zeitstempels gedacht.

rm

rm [OPTIONS] FILE…

Remove (unlink) the FILE(s). Use '–' to indicate that all following arguments are non-options.

Optionen

-i

Always prompt before removing

-f

Never prompt

-r,-R

Remove directories recursively

rmdir

rmdir [OPTIONS] DIRECTORY…
Remove the DIRECTORY, if it is empty.

Optionen

-p,--parents
Include parents

-ignore-fail-on-non-empty

mv

mv [OPTIONS] SOURCE DEST
oder:
mv [OPTIONS] SOURCE… DIRECTORY
Benennt SOURCE nach DEST um oder verschiebt SOURCE(s) nach DIRECTORY

Optionen

-f
erzwingt (engl: force) ein Überschreiben und fragt vorher nicht nach.

-i interaktiv, fragt vor dem Überschreiben nach.

NOTE

Je nach Einstellungen für das System und/oder User ist das Standardverhalten unterschiedlich. Daher ist es in Scripten sinnvoll, ein gewünschtes Verhalten durch Verwendung der Optionen zu erzwingen.

chmod

chmod [-Rcvf] MODE[,MODE]… FILE…

Each MODE is one or more of the letters ugoa, one of the symbols +-= and one or more of the letters rwxst

Options

-R

Recurse directories

-c

List changed files

-v

List all files

-f

Hide errors

chown

chown [-RhLHPcvf]… OWNER[<.|:>[GROUP]] FILE…

Ändert den Eigentümer (engl.: Change owner, short chown) und/oder gruppe von jedem FILE nach OWNER und/oder GROUP.

Optionen

-R

Recurse directories

-h

Affect symlinks instead of symlink targets

-L

Traverse all symlinks to directories

-H

Traverse symlinks on command line only

-P

Do not traverse symlinks (default)

-c

List changed files

-v

List all files

-f

Hide errors

Informationen erhalten

man

file

which

which [COMMAND]…

Lokalisiert einen Befehl (engl. COMMAND) und gibt den absoluten Pfad auf stdout aus. Fehlt COMMAND, gibt which eine kurze Hilfe aus.

 
Nach oben
seminar/regelungstechnik/shell.txt · Zuletzt geändert: 2011/07/25 00:05 von joko.keuschnig
 
 
GNU Free Documentation License 1.3
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0