[[Library Workflows|↩ Library Workflows]] ===== Umgang mit dem Terminal-Programm ===== === Terminal-Programm starten === * Terminal gehört unter OSX zu den Dienstprogrammen im Programme-Ordner (Applications) {{terminal.jpg?500}} * liegt aber auf den meisten Rechnern schon im Dock === Orientieren und Bewegen in den Verzeichnissen === * Um sich in den Verzeichnissen zu bewegen wird der Befehl ''cd [Leertaste] Zielverzeichnis'' (change directory) verwendet. Für das Zielverzeichnis gibt es zwei Möglichkeiten: * Absolute Pfadangabe: Der gesamte Pfad wird mit einem / begonnen. Um an den Ordner 'Sonderauftraege' auf digigroup zu gelangen, geben wir in das Terminal ''cd /Volumes/digigroup/Sonderauftraege'' ein und bestätigen mit Enter. * Relative Pfadangabe: Wird der einleitende Schrägstrich bei der Pfadangabe weggelassen, fügt das Terminal automatisch das aktuell geöffnete Verzeichnis ein. Wenn wir uns im Ordner 'Sonderauftraege' befinden und in den Ordner Sonderauftraege/STRESA wechseln möchte, geben wir einfach ''cd STRESA'' ein. * Tipps: * Mit ''cd ..'' gelangen wir eine Ebene höher * Beim Start des Terminals befinden wir uns in unserem User-Ordner. Dieser wird mit ''~'' dargestellt * Laufwerke sind mit ihrer Bezeichnung im Ordner 'Volumes' in die Verzeichnisstruktur eingegliedert * Verzeichnisnamen können via Drag&Drop aus dem Finder in das Terminal kopiert werden * Sobald ein Verzeichnis- oder Dateiname eindeutig ist, kann er mit der Tabulatortaste automatisch vervollständigt werden. * Um uns in Verzeichnisstrukturen zurecht zu finden, benötigen wir jedoch zunächst Informationen, über den Inhalt der einzelnen Ordner. Hier hilft uns der Befehl ''ls'' (list), der um folgende Optionen ergänzt werden kann: * ''-a'' zeigt auch versteckte Dateien und Ordner an * ''-l'' zeigt die Zugriffsrechte, den Besitzer, dessen Benutzergruppe, Dateigröße in Bytes, sowie das jüngste Änderungsdatum. * Es gibt noch eine große Anzahl weiterer Option, die jedoch keine große Bedeutung für uns haben. Eine vollständige Liste finden wir in der [[https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/ls.1.html|Mac Developer Library]] oder durch Eingabe von ''man ls'' im Terminal * Optionen können auch kombiniert werden, also zB ''ls -la'' === Bewegen und Verändern der Verzeichnisse === * Die folgenden Befehle folgen allgemein der Struktur ''Befehl[Leertaste]-Option[Leertaste]Ziel'' * Die wichtigsten Befehle: * ''mkdir'' (make (a) directory) erstellt ein Verzeichnis * ''mv'' (move) bewegt ein Verzeichnis oder eine Datei und dient auch dem Umbenennen * ''cp'' (copy) kopiert ein Verzeichnis oder eine Datei * ''rm'' (remove) löscht ein Verzeichnis oder eine Datei * Die wichtigsten Optionen * ''-R'' (rekursiv) ermöglicht das Erfassen von Ordnern * ''-v'' (verbose) gibt bei Gesamtvorgängen auch die Einzelvorgänge aus * Beispiele: * ''mkdir /Volumes/digigroup/foo'' erstellt auf digigroup einen Ordner mit dem Namen 'foo' * ''mv /Volumes/digigroup/foo/foo.bar /Volumes/USB-Stick/'' verschiebt die Datei foo.bar vom Ordner 'foo' auf einen USB-Stick (dessen Name natürlich eingefügt werden muss) * ''mv /Volumes/digigroup/foo/foo.bar /Volumes/digigroup/foo/oof.bar'' benennt die Datei foo.bar in oof.bar um. * ''cp -rv /Volumes/digigroup/foo /Volumes/archive_data/library/inbox/'' kopiert den Ordner foo von digigroup in den inbox-Ordner. Ohne die Option ''-r'' gäbe Terminal die Fehlermeldung ''cp: /Volumes/digigroup/foo is a directory (not copied).'' aus. Ohne die Option ''-v'' gäbe das Terminal bei einem erfolgreichen Kopiervorgang keine Meldung aus. Durch ''-v'' wird jede einzelne erfolgreich kopierte Datei angezeigt * ''rm -r /Volumes/digigroup/foo'' löscht den Ordner 'foo' auf digigroup. Ohne die Option ''-r'' erschiene die Fehlermeldung ''rm: /Volumes/digigroup/foo: is a directory'' * Tipp: Mit ''*'' können auch im Terminal Zeichen ersetzt werden. ''cp /Volumes/digigroup/foo/*.jpg /Volumes/digigroup/bar/'' würde z.B. alle Dateien mit der Endung '.jpg' vom Ordner 'foo' in den Ordner 'bar' kopieren === Login === ** Mit dem Terminal können wir uns vom lokalen Rechner aus auf einen anderen Rechner am Netz einloggen.** * ''ssh -l username servername'' * anschließend folgt die Passwortabfrage * bei SSH-Servern ohne Passwort wird ein [[ssh_public_key|Identifizierungsschlüssel (public-key)]] benötigt * [[foxridge_login|Einloggen auf der Foxridge]] * **Achtung:** Auf dem Server liegt eine andere Verzeichnisstruktur vor. Zugriff auf 'archive_data' erfolgt über ''/mpiwg/archive/data/'', 'online_permanent' wird mittels ''/mpiwg/online/permanent/'' angewählt. digigroup und der eigene Rechner sind gar nicht erreichbar * Außerdem stehen uns einige Optionen, wie etwa ''-v'' nicht zur Verfügung * ''exit'' beendet die ssh-Verbindung === Weitere Befehle === * ''du -ks Verzeichnis/*|sort -n'': sortiert in einem Verzeichnis nach Größe * ''rsync -va [Quelle] [Ziel]'' synchronisiert zwei Ordner miteinander. Dabei werden die Dateien auch auf die Größe und das Änderungsdatum geprüft. Die Option ''--archive'' behält die Attribute der Dateien bei === Virtuelles Terminal === Wird das normale Terminalfenster geschlossen, wird ein laufender Vorgang (z.B. Kopieren) abgebrochen.\\ Vorgänge, die in einem virtuellen Terminal gestartet werden, laufen dagegen auch weiter, wenn der lokale Computer herruntergefahren und somit das Terminal-Programm beendet werden muss. **Achtung!** Ein einmal gegebener Befehl kann in einem virtuellen Terminal * ''screen bash'': öffnet ein virtuelles Terminal * ''CTRL A'' und anschließend ''CTRL D'' drücken: das virtuelle Terminal wird auf der lokalen Maschine abgemeldet - alle Vorgänge laufen aber weiter. Wiederanmeldung erfolgt mit ''CTRL R'' * ''screen -ls'': zeigt alle vorhandenen virtullen Terminals an * ''screen -r xxxxx'': ruft ein virtuelles Terminal mit der Nummer xxxxx auf * ''exit'': beendet ein aktives virtuelles Terminal