Bioinformatik für Biochemiker Oliver Kohlbacher WS 2009/2010 Abt. Simulation biologischer Systeme WSI/ZBIT, Eberhard Karls Universität Tübingen Übersicht Unix Grundkonzepte: Betriebssystem, Shell, GUI Allgemeines Unix-Kommandos Hilfe? Verzeichnisse Dateien Anzeigen, Löschen, Verschieben & Co Editieren von Dateien Archive 2 Betriebssystem, Shell und GUI Jedes Programm (Applikation, Befehl ) braucht eine Schnittstelle zum Rechner Unterste Schnittstelle: Betriebssystem Betriebssystem stellt Applikationen (Programmen, Befehlen ) Grundfunktionalität zur Verfügung Verwaltung von Dateien Zugriff auf Benutzerdaten Programm Betriebssystem Rechner (Hardware) 1
Shell Die Shell ist eine Applikation, die interaktives Ausführen von anderen Applikation ermöglicht Ist Vorgänger der GUI Verbreitete Varianten: TCSH, BASH Dient nicht nur zum Ausführen von Programmen Bietet eigene Funktionalität (sog. Builtins) Programm (z. B. Shell) Betriebssystem Rechner (Hardware) Graphische Benutzeroberfläche (GUI) GUI (Graphical User Interface) ist Oberbegriff für alle graphischen Benutzeroberflächen In diesem Zusammenhang: GUI als graphische Shell GUI ist ebenfalls ein Programm, das oberhalb der Betriebssystem- Ebene arbeitet Verbreitet: Windows, Aqua, KDE, Gnome Programm (z. B. GUI) Betriebssystem Rechner (Hardware) Von Hackern und Mausschubsern Mausschubser mouse pusher A person that prefers a mouse over a keyboard; originally used for Macintosh fans. The derogatory implication is that the person has nothing but the most superficial knowledge of the software he/she is employing, and is incapable of using or appreciating the full glory of the command line. http://users.ipfw.edu/bingi/height%20of%20revenge.gif http://www.retrologic.com/jargon/m/mouse-pusher.html http://www.holz-toys.co.uk/asps/uploads/big/51-1.jpg 2
Von Hackern und Mausschubsern Richtige Programmierer http://www.quantrimang.com/images/hacker.gif http://www.joe-ks.com/archives_jan2005/compuguy.jpg Unix-Kommandos Kommandos werden in einer Shell ausgeführt (in der Eingabeaufforderung) Kommando ist ein Programm! Programme brauchen manchmal zusätzliche Informationen, um zu wissen, was sie machen sollen Diese Informationen werden dem Kommando als Parameter mitgegeben (Optionen) Optionen werden an der Kommandozeile durch Leerzeichen getrennt Beispiel: Zum Kopieren von Dateien muss das Programm cp wissen, welche Datei kopiert werden soll und wohin cp seq.fasta seq2.fasta legt eine Kopie von seq.fasta unter dem Namen seq2.fasta an Kommandos und Optionen Welche Parameter ein Programm beim Aufruf akzeptiert oder benötigt, hängt ganz vom Programm ab Der Programmierer legt diese Parameter selbst fest, sie sind in der Regel in der Dokumentation des Programms beschrieben Auch für die Standard-Unix-Kommandos gibt es diese Dokumentation, die in Form der Manpages am Rechner jederzeit abrufbar ist (mehr dazu später) Das Kommando cp z.b. benötigt mindestens zwei Parameter: die Dateinamen für Quelle und Ziel des Kopierens 3
Typographie Der Übersichtlichkeit halber ist alles, was Sie in den Rechner eintippen können, insbesondere Namen von Programmen und Parameter in Courier gesetzt Beachten Sie, dass jedes Betriebssystem außer Windows Groß- und Kleinschreibung unterscheidet! Beachten Sie auch die Leerzeichen! Parameter für Unix-Kommandos die vom Benutzer festzulegen sind, werden dabei in spitzen Klammern gesetzt: cp <Quelldatei> <Zieldatei> Wenn Sie dieses Kommando einsetzen wollen, müssen Sie für Quelldatei und Zieldatei natürlich sinnvolle Werte angeben (ohne spitze Klammern!) cp seq.fasta seq2.fasta Prompt/Eingabeaufforderung Der Prompt (Eingabeaufforderung) ist die Ausgabe, mit der die Shell dem Benutzer ihre Bereitschaft signalisiert Diese Ausgabe ist frei konfigurierbar Oft wir der Rechnername, der Benutzername und das aktuelle Verzeichnis ausgegeben Am blinkenden Cursor hinter dem Prompt können nun beliebige Kommandos eingegeben werden Während ein Befehl ausgeführt wird, akzeptiert die Shell keine weiteren Befehle Eine Shell auf cbioinf20 Cursor Prompt: [Benutzername@Rechnername Arbeitsverzeichnis]$ 4
Unix-Kommandos: ls Wichtigster Befehl überhaupt: ls (LiSt) ls zeigt den Inhalt des aktuellen Verzeichnisses an ls akzeptiert eine Reihe von Kommandozeilenparametern (Optionen), die die Ausgabe bestimmen ls l zeigt Details der Dateien (z.b. Größe in Byte) an ls zeigt aber nicht alles: Dateien können versteckt werden, indem ihr Name mit. beginnt. Diese Dateien werden nicht angezeigt. Anzeigen von allen (also auch versteckten Dateien) geht durch Angabe der Option -a für ls ls a zeigt Ihnen den gesamten Inhalt des aktuellen Verzeichnisses an ls akzeptiert auch einen oder mehrere Datei- oder Verzeichnisnamen und zeigt dann nur deren Namen/Details an Eine Shell auf cbioinf20 Cursor Kommando Prompt Eine Shell auf cbioinf20 Kommando (ls) Kommandozeilenparameter (-l) Prompt Cursor 5
Unix-Kommandos: cat Jede Datei auf einem Unix-System kann man sich von der Shell aus ausgeben lassen Dazu dient das Kommando cat cat <Dateiname1> [<Dateiname2> ] Das Kommando cat erfordert mindestens einen Parameter (einen Dateinamen), man kann aber auch mehrere Dateinamen angeben (beliebig viele), die dann nacheinander ausgegeben werden Der erste Dateiname ist ein notwendiger Parameter, die weiteren Dateinamen sind optional und werden in der Dokumentation üblicherweise in eckigen Klammern angegeben Beim Aufruf sind diese eckigen Klammern natürlich nicht mit einzugeben Beispiele: cat seq.fasta cat seq.fasta seq2.fasta Unix-Kommandos: cat Ausgabe der Datei ist das natürlich nur für Dateien, die lesbaren Text enthalten sinnvoll Ausgabe einer Bilddatei, einer Musikdatei oder des Maschinencodes eines Programms ist nicht sinnvoll und führt in der Regel nur zu wirrem Zeichensalat Unix-Kommandos: mv Umbenennen und Verschieben von Dateien ist mit dem Kommando mv (MoVe) möglich Verwendung ist analog zur Verwendung von cp: mv <Quelle> [<Quelle2> [ ]] <Ziel> wobei Quelle der alte Dateiname/-ort und Ziel der neue Dateiname/-ort ist Ist Ziel ein (existierendes) Verzeichnis, so wird die Datei unter Beibehaltung des Namens in dieses Verzeichnis verschoben Mit mv kann man auch mehrere Dateien gleichzeitig in ein Verzeichnis verschieben. Eine Umbenennung ist natürlich nur für eine Datei gleichzeitig möglich. Beispiel: mv seq.fasta hev.fasta benennt die Datei seq.fasta nach hev.fasta um mv hev.fasta seq2.fasta Sequenzen verschiebt hev.fasta und seq2.fasta aus dem aktuellen Verzeichnis in das Unterverzeichnis Sequenzen 6
Umleitung Die Ausgabe eines Kommandos kann mit Hilfe von > in eine Datei umgeleitet werden, z.b. um sie später genauer betrachten zu können Das Kommando ls l > ls.txt lenkt so die Ausgabe in die Datei ls.txt um Existiert ls.txt, so wird der Inhalt überschrieben Existiert die Datei nicht, wird sie neu angelegt Die Ausgabe erscheint nicht auf dem Bildschirm Das Umleitungszeichen >> funktioniert analog zu >, nur dass die Ausgabe an die Datei angehängt wird, statt sie zu überschreiben Mit Hilfe der Umlenkung kann man auch die Inhalte mehrerer Dateien aneinander hängen: cat a.txt b.txt > c.txt fügt die Inhalte von a.txt und b.txt zu c.txt zusammen Umleitung Wildcards Oft möchte man eine Aktion auf viele unterschiedliche Dateien ausdehnen, ohne sie explizit angeben zu müssen Die Shell bietet dazu so genannte Wildcards an Wildcards sind Muster, die die Shell durch alle zum Muster passenden Dateinamen ersetzt * steht dafür für einen beliebigen Substring? steht für ein beliebiges Zeichen Beispiel: cat *.fasta gibt alle Dateien im aktuellen Verzeichnis aus, die auf.fasta enden cat seq?.fasta gibt alle Dateien im aktuellen Verzeichnis aus, deren Namen an Stelle des Fragezeichens ein beliebiges Zeichen enthält, also etwa seq1.fasta, seqa.fasta, seq9.fasta nicht jedoch seq.fasta oder seq11.fasta 7
RTFM: Read The F***ing Manual! Hilfe-Funktion der verschiedenen Unix-Derivate heißt man man ist die Abkürzung für Manual Für die meisten gängigen Unix-Befehle befindet sich eine Anleitung in diesem elektronischen Manual Leider nicht für alle anderen Applikationen der Fall (Faulheit der Programmierer, Installationsprobleme, ) Man-Page wird in sogenanntem Pager angezeigt Blättern mit der Leertaste, verlassen mit q ( quit ) Aufrufen einer Man-Page Aufrufen einer Man-Page 8
Aufrufen einer Man-Page Aufrufen einer Man-Page Dateisysteme unter Unix Benutzer haben ein Zuhause, das so genannte Home-Verzeichnis oder kurz Home Entspricht dem Verzeichnis Eigene Dateien der neueren Windows-Versionen Nach dem Öffnen einer Shell befinden Sie sich in Ihrem Home Dort legen Sie Ihre Dateien und Unterverzeichnisse an 9
Hierarchisches Dateisystem Gängige Betriebssysteme verwenden hierarchische Dateisysteme zur Speicherung ihrer Daten Ablage der Dateien erfolgt in ein hierarchisch ineinander geschachtelten Ordnern (Verzeichnissen) Bekannt vom Windows-Explorer Einrückung entspricht tieferer Hierarchiestufe Hierarchisch höher stehende Verzeichnisse enthalten die jeweils eine Stufe tiefer liegenden Verzeichnisse und Dateien Wechseln zwischen Verzeichnissen Was ist denn eigentlich das aktuelle Verzeichnis? Im Explorer: Das grau hinterlegte In der Shell: das, das mit pwd angezeigt wird Wie kommt man dahin? Explorer: Doppelklick Shell: cd Relative Pfade Dateien oder Verzeichnisse, die nicht im aktuellen Verzeichnis liegen, kann man über Pfade bezeichnen Befinden wir uns im Verzeichnis bioinfo, so kann man auf die Datei seq.fasta, die sich in Uebung02 befindet, über Uebung02/ seq.fasta zugreifen Uebung02/ ist dabei der Pfad zur Datei, also die Abfolge der Ordner die durchlaufen werden müssen, um zur Datei zu gelangen Diese können beliebig verschachtelt sein, z.b.: bioinfo/uebung4 Pfade die nicht mit / (slash) beginnen, sind so genannte relative Pfade: sie sind relativ zum aktuellen Verzeichnis 10
Unix-Kommands: cd und pwd Das Kommando pwd (print working directory) gibt das aktuelle Verzeichnis aus und erlaubt Ihnen eine Standortbestimmung, falls Sie sich in den Untiefen des Dateisystems verlaufen pwd Das Kommando cd ist das Gegenstück und erlaubt es Ihnen, das aktuelle Verzeichnis zu wechseln cd <Pfad> Das Verzeichnis zu dem Sie wechseln muss natürlich existieren In das übergeordnete Verzeichnis ( eins hoch ) wechseln Sie mit cd.. Wechseln zwischen Verzeichnissen / bibc bin lib src data common Uebung02 Baum /bibc/data/uebung02/baum/wurzel 11
Spezielle Pfade Unix kennt spezielle Verzeichnisnamen:. ist das aktuelle Verzeichnis.. ist das Verzeichnis eine Ebene höher ~ ist Ihr Home / ist das Urverzeichnis (auch Wurzel, root), unter dem alle anderen Verzeichnisse liegen (siehe letzte Folie) Ein Verzeichnisname (Pfad) oder Dateiname, der mit / (slash) anfängt ist ein sogenannter absoluter Pfad, da er einen exakt definierten, einzigartigen Ort angibt Pfade oder Dateinamen, die nicht mit / anfangen sind relativ, nämlich relativ zum aktuellen Verzeichnis! Spezielle Pfade Verwenden von Verzeichnissen Verzeichnisse ( Ordner ) sind praktisch, um Ordnung in seinem Heimatverzeichnis zu halten Man kann beispielsweise Verzeichnisse anlegen für die Ergebnisse einer Übung Wichtige Befehle für den Umgang mit Verzeichnissen: cd <Pfad> wechselt in ein Verzeichnis mkdir <Pfad> legt ein Verzeichnis an rmdir <Pfad> löscht ein (leeres!) Verzeichnis 12
Verwenden von Verzeichnissen Umgang mit Dateien Dateien sind die Behälter für Daten Kennen Sie alle aus der Windows-Welt Befehle für den Umgang mit Dateien im Dateisystem: touch <Name> [<Name2> [..]] legt leere Dateien an rm <Name1> [<Name2> [ ]] (ReMove) löscht Dateien cp <Quelle> [<Quelle2> [ ]] <Ziel> (CoPy) Kopiert Dateien mv <Quelle> [Quelle2> [ ]] <Ziel> (MoVe) Verschiebt Dateien/Benennt Dateien um Achtung: Löschen kann NICHT rückgängig gemacht werden! Wahlspruch: Think before you type! Umgang mit Dateien cat zeigt die Inhalte von Dateien zwar an, wartet aber bei der Anzeige nicht auf den Benutzer, so dass längere Dateien einfach an Ihnen vorbeirauschen Sie können sich den Inhalt von Dateien in der Shell auch interaktiv anzeigen lassen Dazu verwenden Sie den Pager, den Sie auch schon von der Man-Page kennen more <Datei1> [<Datei2> [ ]] zeigt Inhalte in der Shell an less <Datei1> [<Datei2> [ ]] ist die neuere (und etwas mächtigere) Variante von more: Kann auch rückwärts scrollen 13
Editieren von Dateien Es gibt eine ganze Reihe von Editoren: gedit, nedit, emacs, vi, joe,... Manche Editoren haben ein graphisches Interface, andere sind reine Shell-Editoren und komplett durch die Tastatur zu bedienen Zwischen den verschiedenen Konzepten herrschen regelrechte Glaubenskriege (GUI/ TUI, vi/emacs,...) Wir beschränken uns hier auf gedit Editoren: gedit Editoren: gedit 14
Editoren: gedit Editoren: gedit Editoren: gedit 15
Archive (ZIP und TAR) ZIP-Dateien sind sog. Archive (=Dateien, in die andere Dateien gepackt worden sind) Weitverbreitetes Format, praktisch um ein Bündel von Dateien zu schnüren Platz sparend durch Komprimierung TAR ist ebenfalls ein Archiv-Format Weit verbreit in der Unix-Welt Verwendung von Archiven Das Kommando tar dient zum Erzeugen und Auspacken von Archiven tar akzeptiert sehr, sehr viele Optionen, die Sie der Manpage entnehmen können Für den Hausgebrauch reichen meist die folgenden Kommandos: tar zxf <Archiname> packt ein komprimiertes Archiv (meist erkennbar an der Endung.tar.gz oder.tgz) im aktuellen Verzeichnis aus tar zcf <Archnivname> <Datei1> [<Datei2> [ ]] erzeugt ein komprimiertes Archiv mit dem Namen Archivname und fügt dort die Dateien Datei1, 2, ein. Anstelle von Dateinamen können auch ganze Verzeichnisse angegeben werden, die dann inklusive der Unterverzeichnisse eingepackt werden. tar ztf <Archivname> zeigt die Inhalte des Archivs an ohne es auszupacken. Literatur + Links RTFM, RTFM, RTFM! Üben, üben, üben Gibas, Jambeck: Einführung in die praktische Bioinformatik, O Reilly, 2002 16