shell in unix
von Jürg Oehler, im August 2001 n.Chr
| alternativ dazu gibt es graphische benutzerinterfaces wie kde, gnome. diese greifen jedoch auch auf shell- funktionalitäten zurück. die shell wird insbesondere zum aufstarten der graphischen umgebung (xinit) und zum aufstarten von programmen verwendet. |
|
|
| date | zeigt das aktuelle systemdatum an. als root kann damit die systemuhr auch richtig gestellt werden. |
| logname, id | zeigt die identiät des benutzers an. logname ist der verwendete login name und id zeigt die aktuelle identiät an. |
| hostname | zeigt den aktuellen namen des komputers am ersten netzwerkinterface an. |
| echo | (internes) shellkommando zum anzeigen von informationen auf stdout. die funktion löst auch umgebungsvariablen auf (<echo $HOME>) |
| stty | zeigt die einstellungen der seriellen zugänge. als root können die einstellungen auch verändert werden. |
| who | zeigt wer auf dem system arbeitet. auf at&t systemen kann auch der runlevel (-r) und die bootzeit -b sichtbar gemacht werden. |
| ps | zeigt die prozesse an |
| set | zeigt die programmumgebung an. die programmumgebung kann aber mit der funktion auch angepasst werden. zu der programmumgebung gehören variablen und funktionen. |
| iostat | im unixkernel werden an allen zentralen orten zähler nachgeführt. mit iostat können diese zähler abgefragt und in form von statistiken ausgegeben werden. es werden sämtliche knotenpunkte für ein und ausgabe erfasst. im linux fehlte die funktion bis anhin. sie ist neu im sarpaket enthalten. |
| vmstat | statistik des virtuellen speichers |
| netstat | statistik des netzwerkverkehrs |
| finger | finger ist ein bsd (berkley) kommando und zeigt etwas mehr informationen über den benutzer als who. finger ist auch netzwerkfähig und sollte nur dann aktiviert werden, wenn die sicherheitsfragen geklärt sind. |
| type, whereis | suchen ausführbare programme im PATH |
| uptime | zeigt seit wann der komputer läuft und vermittelt anhaltspunkte über die auslastung. |
| mkfs | legt filesysteme auf rawdevices an. das kommando legt auch dort neue dateisysteme an, wo bereits solche vorhanden sind. ist ein dateisystem bereits am system angehängt (gemountet), kann die operation nicht ausgeführt werden. |
| labelit | damit können softpartitions bezeichnet werden. |
| fsch | filesystemcheck: überprüft das dateisystem. das kommando wird nach systemabstürzen oder gelegentlich auch nach dem einsatz des staubsauger's nützlich. |
| du | zeigt die platzbelegung (in blocks a 512bytes) für die einzelnen verzeichnisse/dateien an. |
| df | zeigt die freien blöcke a 512bytes für die einzelnen dateisysteme an. |
| mount | zeigt angehängte dateisysteme im betriebssystem. als root können neue dateisystem eingehängt oder herausgelöst werden. |
| sync | unix arbeitet nie direkt auf den harddisks. die zu sichernden daten werden in einem cash speicher gesammelt und miteinander auf die entsprechenden devices geschrieben. mit sync wird dieser vorgang erzwungen. |
| mkdir | legt neue verzeichnisse im dateisystem an. |
| rmdir | löscht die verzeichnisse gnadenlos, sofern die entsprechenden berechtigungen vorhanden sind. |
| file | programm, welches versucht, den dateiinhalt zu ermittel. siehe auch (magic) |
| ls | zeigt den inhalt eines verzeichnisses an. |
| pwd | zeigt den standort im dateibaum absolut an. |
| find | findet dateien mit bestimmten eigenschaften im dateibaum. |
| cd | change directory: erlaubt den standort im dateibaum zu wechseln. |
| touch | setzt den zugriffszeitpunkt einer datei auf die aktuelle zeit. kann aber noch mehr |
| chmod | verändert die zugriffsberechtiungen der dateien oder verzeichnisse |
| chown | verändert den eigentümer der dateien oder verzeichnisse |
| ln | erstellt hard und soft links. links sind lediglich neue namen zu einem i-node. hinter jeder i-node verwaltet das system eine datei. innerhalb des dateisystems ist die i-node eindeutig. das system arbeitet immer ohne namen. die dateinamen sind nur für uns menschen vorhanden. |
| rm | löscht dateien oder verzeichnisse. rm wird verzeichnisse mit inhalt nicht löschen wie dies rmdir macht. |
| mv | verschiebt dateien im dateisystem, falls dateien über das dateisystem hinaus verschoben werden, muss kopiert und gelöscht werden. |
| cp | kopiert dateien. |
| ed, vi (emacs, joe, vim, nvi...) | ascii datei editoren können dateiinhalte verändern und zurückschreiben |
| sed | streameditor: ascii editor, welcher gemäss commandos ascii dateien nicht interaktiv durchführt. (im batchmode) |
| grep, egrep, fgrep | sucht nach zeichenketten in dateien |
| cat, split | zusammenhängen oder aufsplitten von dateien. cat wird auch zum anzeigen von dateiinhalten verwendet. allerding sind pager dazu geeigneter. |
| head, tail | zeigt dateianfänge oder dateienden an. |
| more, pg (less) | sind sogenannte pagers. sie geben den inhalt von (ascii) dateien zeilen- oder seitenweise aus. blättern wie auch suchen von text wird meist erlaubt. am effizientesten ist more. dafür kann nicht zurückgeblättert werden. |
| sum | rechnet quersummen von datei inhalten |
| wc | word count, zählt buchstaben, worte und zeilen in dateien. |
| mt | manpulating tapes, damit können scsi-bänder gesteuert werden |
| dump | schreibt den inhalt von dateisystemen auf einen stream, idealerweise ein sicherungsmedium. es könnte aber auch eine datei oder gar ein raw-device sein. |
| restore | umkehrfunktion von dump. damit können die gesicherten daten bei notwendigkeit in das dateisystem eingespiesen werden. |
| tar, cpio, pax | archivfunktionen: die archiv funktionen schreiben die datei inhalte mit verzeichnis auf einen stream. diese funktionen sind viel weniger effizient als dump. dafür sind diese archive über jahrzehnte lesbar. |
| dd | diskdump: liest datenstreams (rawdevices) und schreibt sie auf datenstreams. dazwischen können auch umfangreiche konvertierungen vorgenommen werden. dd ist gegeignet, um disks zu klonen. |
| mknod | legt spezielle i-nodes in dateibäumen an. über solche i-nodes können dann die treiber auf die devices im system zugreifen. |
| hash | damit kann bei einigen shells der hashbuffer manipuliert werden. |
| kill | damit können über signale prozesse beeinflusst werden. unter anderem können damit auch prozesse aus dem system entfernt werden. |
| write, wall | scheibt eine meldung an einen anderen benutzer. wall schreibt die meldung allen eingeloggten benutzern |
| login | autorisiert die benutzer. normalerweise wird login von getty aufgerufen. man kann das programm aber auch direkt von der shell verwenden. |
| talk | damit können 2 benutzer miteinander kommunizieren. wird vorallem gebraucht, wenn das modem die telefonleitung besetzt. beide benutzer können asynchron schreiben und lesen. |
| su | superuser: das programm erlaubt das wechseln der identität. nur root muss die passworte nicht eingeben. alle andern müssen das entsprechende systempasswort wissen. |
| at, crontab | at führt einen befehl zu einem vorgegebenen zeitpunkt aus. zum
beispiel geburtstags erinnerungen der personalabteilung senden.
crontab ist ein scheduler. es führt funktionen regelmässig aus. |
| newgrp | damit kann ich die benutzergruppe wechseln. möglicherweise gibt es auch ein gruppenpasswort. |
| script | protokolliert die sitzung in einer datei |
| mail / mailx | einfaches mail frontend zum sendmail. mailx ist die neue version von mail. mail ist ein ascii frontend und damint nicht mime-fähig. |
| man, catman, whatis, apropos, mandb.. | umfangreiches hilfesystem |
| bc, dc | desctop calculators, alte programme als taschenrechner für ascii terminals |
| basename, dirname | die programme schneiden den entsprechenden teil aus einem dateinamen heraus. |
| expr | wertet expressions aus. dies können auch rechnungen sein, womit sich zähler nachführen lassen. dies ist aber eine umständliche lösung. |
| eval | auswerten von variablen in kommandoaufrufen und übergabe an die shell. |
| getopt | analysiert die parameter vom aufruf und gibt die parameter mit den zusätzen zurück. nicht erlaubte parameter werden als fehlerhaft erkannt. |
| nohup | hängt den prozess am scheduler direkt an, womit der prozess nicht mehr von der login shell abhängt. es kann problemlos ausgeloggt werden. |
| read | einlesen von daten vom stdin |
| sleep | der prozess wartet für x sekunden |
| tee | die stdout wird zusätzlich auf einen anderen stream ausgegeben. |
| test | testfunktion |
| time, timex | die funktionen nehmen die ausführungszeiten für ein programm und geben die werte anschliessend auf stdout aus. |
| wait | wir warten auf die beendigung eines prozesses |
| diff | vergleicht zwei dateien und gibt die unterschiede aus. |
| crypt | verschlüeelungsfunktion |
| join | dateien werden zeilenweise zusammengehängt |
| sort | sortiert die dateien nach bestimmten kriterien. die definition der sortierelemente ist anspruchsvoll. |
| cut | schneidet felder oder zeichenstücke zeilenweise aus einem stream aus und gibt sie auf stdout aus. |
| unique | entdeckt doppelte einträge in einem zeichenstrom und gibt sie einfach aus. |
| tr | translate: entdeck zeichenkettten und ersetzt sie durch andere werte. |
| od | octal dump: gibt datendateien in hexadezimaler, charakter oder binärer form aus. |
| welchen runlevel haben wir?
seit wann läuft das system? wie hoch ist die systemauslastung? wozu wird das system verwendet? wer bin ich? was mache ich? wer arbeitet am system? was wissen wir vom benutzer x? was läuft am netz? |
| läuft der prozess mit dem backup noch? |
| haben wir noch diskplatz?
wo wurde der diskplatz verbraucht? welches sind dateien grösser als 1mb? welches sind dateien älter als 90 tage? von welchem typ ist die datei x? |
| programme werden oft in den zusammenhang mit "binaries" gebracht. ein programm ist im grunde nichts anderes, als ein abfolge von instruktionen an den prozessor - in maschinensprache. da der mensch nicht so ideale voraussetzungen für das binäre mitbringt, werden immer übersetzer zwischen mensch und prozessor geschaltet. diese übersetzer werden meist als kompiler oder interpreter gebaut. die shell ist ein interpreter: sie interpretiert shell-code und übersetzt die bedeutung in maschinensprache. anschliessend übergibt sie das zeugs dem prozessor. die übersetzung findet laufend und wiederholend statt, was natürlich ineffizient ist. deshalb gibt es andere übersetzer welche die übersetzung einmal vornehmen und das binäre ergebnis in eine datei abspeichern - und das wird dann als "binary" bezeichnet. diese übersetzter sind landläufig als compiler bekannt. |
| auf unix systemen wird mit einem "magic string" am anfang der datei festgestellt, um welchen inhalt es sich handelt. die kennzeichnung ist aber nur für binaries obligatorisch. name oder endung der datei sind unwichtig. im weiteren muss die datei als ausführbar markiert sein, falls das system das programm vom system direkt ausgeführt werden soll. das system muss die datei auch finden. dazu wird die datei absolut aufgerufen, oder das system (shell) findet sie über den PATH. |
| bitte besonderes augenmerk auf das WAS richten. |
| das WIE wird anschliessend wichtig. definiere ablauf und wiederholende aufgaben. |
| wähle das richtige werkzeug |
| ein programm macht wenig, aber gut. |
| KISS "keep it simple und stupid", es wird dann schon schwierig genug. |
| programmiere lesbar und übersichtlich - kommentiere |
| programmiere defensiv - frage fehler ab, mache meldung, und verhalte dich richtig |
| verwende stdin, stdout, stderr |
| if
then else fi |
test verzweigung |
| case
in esac |
fall unterscheidung, verzweigung wenn bestimmte variablen entsprechende werte aufweisen |
| while
do done |
eine schlaufe, welche durchlaufen wird bis ein test positiv ausfällt |
| for
do done |
eine schlaufe, mit initialiserten zählern |