Bachelor-Tutorial 2012 Arbeiten mit der Shell in Linux Markus Merschmeyer merschm@lxportal1:~ >
Motivation Warum mit der Maus klicken......wenn man auch tippen kann! 13.04.2012 M. Merschmeyer 2
Erste Schritte Terminalfenster öffnen (ca. zwei Mausclicks) Dateien bearbeiten, Verzeichnisse anlegen, etc. Terminalfenster schliessen 'exit' wie finde ich heraus, was ein Shell-Befehl tut? Linux Manual Pages (Beenden mit 'q'): man [Befehl] (manchmal) Option für Hilfe: [Befehl] -h bzw. [Befehl] --help etwas Vorsicht ist angebracht, ein sorgloser Umgang z.b. mit rm -rf * kennt (fast) kein Zurück ( EDV-Support Backup) 13.04.2012 M. Merschmeyer 3
Verzeichnise I Verzeichnisebenen werden durch '/' angezeigt nach dem Öffnen eines Terminals befindet ihr euch in eurem Home-Verzeichnis, in meinem Fall z.b. /home/home1/institut_3a/merschm unterhalb dieser Ebene liegen dann eure Dateien und Verzeichnisse Pfadnamen absolute Pfade beginnen mit '/' starten also immer ganz oben in der Verzeichnishierarchie, z.b. /verz1/verz2/verz3(/dateiname) relative Pfade beginnen nicht mit '/' und beziehen sich immer auf die aktuelle Position in der Verzeichnishierarchie, z.b. verz4/verz5(/dateiname) oder../verz6(/dateiname) 13.04.2012 M. Merschmeyer 4
Verzeichnise II das Verzeichnis wechseln cd cd /v1/v2 cd../v1/v2 cd.. cd - ins home-verzeichnis zurückspringen zum absoluten Pfad /v1/v2 springen zum relativen Pfad../v1/v2 springen eine Verzeichnisebene zurückspringen ins vorherige Verzeichnis zurückspringen das aktuelle Verzeichnis anzeigen pwd ein Verzeichnis anlegen mkdir [Pfad]/[Verzeichnisname] mkdir -p [Pfad]/v1/v2/v3 ggf. alles bis v3 anlegen ein leeres (!) Verzeichnis löschen (ansonsten siehe rm) rmdir [Pfad]/[Verzeichnisname] 13.04.2012 M. Merschmeyer 5
Verzeichnisse III Verzeichnis- und Dateibaum anzeigen tree Verzeichnisinhalt anzeigen ls [Pfad] ls -l [Pfad] ls -a [Pfad] ls -R [Pfad] Inhalt der Ebene [Pfad] anzeigen detaillierte Anzeige auch versteckte Dateien anzeigen rekursives Anzeigen (inkl. aller Unterverz.) Optionen ohne Parameter können zusammengefasst werden ls -lar [Pfad] Größe des Verzeichnisinhalts (Speicherplatzbedarfs) du [Pfad] du -sh [Pfad] detaillierte Ausgabe Summe in 'human readable' Darstellung 13.04.2012 M. Merschmeyer 6
Dateien I kopieren cp [Pfad1]/[Name1] [Pfad2]/[[Name2]] bewegen / umbenennen mv [Pfad1]/[Name1] [Pfad2]/[Name2] mv [Name1] [Name2] löschen rm [Pfad]/[Name] rm -rf * Wildcards ab hier alles entfernen (kann böse enden!) * Platzhalter für beliebige Zeichenkette? Platzhalter für genau ein Zeichen z.b. cp *.root /user/scratch oder ls -l datei?.txt 13.04.2012 M. Merschmeyer 7
13.04.2012 M. Merschmeyer 8
Dateien II Art einer Datei ausgeben file [Pfad]/[Name] Datei (Verzeichnis) suchen find [Pfad] -name [Name] find [Pfad] -type f -name [Name] find [Pfad] -type d -name [Name] Dat./Verz. suchen Datei suchen Verz. suchen leere Datei anlegen / Zeit & Datum aktualisieren touch [Pfad]/[Name] falls Datei [Pfad]/[Name] nicht existiert wird leer angelegt, andernfalls Zeit und Datum werden aktualisiert sicheres Löschen einer Datei (mit Überschreiben) shred -u [Pfad]/[Name] 13.04.2012 M. Merschmeyer 9
Zugriffsrechte I Zugriffsrechte (von Dateien und Verzeichnissen) Ansehen mit ls -l -rw-r----- 1 merschm inst3a 9822 Apr 18 14:42 datei2.txt drwx------ 5 merschm inst3a 42 Apr 18 14:40 verz1 \_/\_/\_/ + Rest der Welt + Arbeitsgruppe (z.b. IIIA) + Benutzer + Hinweis aus Verzeichnis, Link, etc. 13.04.2012 M. Merschmeyer 10
Zugriffsrechte II Ändern der Zugriffsrechte - chmod Syntax chmod [u,g,o] [+,-] [r,w,x] [Pfad]/[Name] Beispiele chmod go+r [Name] Leserechte f. Gruppe / Rest chmod o-rwx [Name] Wegnahme aller Rechte f. Rest sinnvolle Freigaben eigene Dateien -rw------- eigene Verzeichnisse drwx------ eigenes home-verzeichnis drwx--x--x 72 merschm inst3a 8192 merschm 'public'-verzeichnis im Home Verzeichnis drwxr-xr-x 6 merschm inst3a 4096 public 13.04.2012 M. Merschmeyer 11
Archive tar und gzip/bzip2 komprimierte Dateien - *.gz oder *.bz2 gzip [-1.. -9] [Pfad]/[Name] gzip -d [Pfad]/[Name] bzip2 analog komprimieren entpacken viele Dateien in einem Archiv zusammenfassen - tar (Dateiendung:.tar,.tgz,.tar.gz,.tar.bz2) Archiv entpacken (-x : extract, -v : verbose, -f : filename) tar -xv(z/j)f [Pfad]/[Archivname] (-z gzip bzw. -j bzip2) Archiv erzeugen tar -cv(z/j)f [Pfad]/[Archivname] [Dateien/Pfad] Archiv ansehen tar -t(z/j)vf [Pfad]/[Archivname] 13.04.2012 M. Merschmeyer 12
Rund um Textdateien Textdateien auf dem Terminalfenster ausgeben more [Datei]: seitenw. Ausgabe, Blättern: [space], Ende: 'q' less [Datei]: ähnlich 'more' + Vor- und Rückwärtsscrollen Unterschiede zwischen zwei (Text-)Dateien diff [Pfad1]/[Name1] [Pfad2]/[Name2] N erste / letzte Zeilen einer Textdatei ausgeben head -[# Zeilen] [Dateiname] oder tail... Zeilen in einer Textdatei zählen wc -l [Dateiname] DOS/MAC und Unix/Linux verwenden verschiedene Zeichen für das Zeilenende (CR+LF LF) Konvertierung dos2unix [Dateiname] oder unix2dos... 13.04.2012 M. Merschmeyer 13
Spiel & Spaß schaut nach ob ein Verzeichnis 'public' in eurem home- Verzeichnis existiert. Falls nicht, legt es an. hat es die richtigen Berechtigungen? hat euer home-verzeichnis die richtigen Berechtigungen? Kopiert die Datei 'archiv.tgz' aus meinem (merschm) 'public'- Verzeichnis in euer 'public'-verzeichnis was ist in dem Archiv? entpackt das Archiv sucht die Datei 'datei5.txt' schaut euch den Inhalt der Dateien an benennt eine Datei um, löscht eine Datei löscht ein Verzeichnis probiert all die schönen anderen Kommandos aus... 13.04.2012 M. Merschmeyer 14
Mit Text hantieren 13.04.2012 M. Merschmeyer 15
Ein- und Ausgaben, Pipes Ausgabe von Text und/oder Variablen echo text1 $var text2 Ausgabe in Textdateien touch [Dateiname] ls -l./ > [Dateiname] echo text1 > [Dateiname] Datei erzeugen + füllen echo \n text2 >> [Dateiname] an Datei anhängen Augaben eines Befehls durch weitere Befehle verarbeiten echo Ein Text sed -e 's/text/neuer Text/' ls -lr grep -i datei 13.04.2012 M. Merschmeyer 16
Verschlüsseltes: ssh / scp ssh - Secure Shell verschlüsselte Netzwerkverbindung (z.b. zum CERN) ssh [-X] [host] z.b. ssh -X merschm@lxplus.cern.ch scp - Secure Copy verschlüsseltes Kopieren von Dateien scp [Pfad1]/[Name1] [user]@[host]:[pfad2]/[name2] scp [user]@[host]:[pfad1]/[name1] [Pfad2]/[Name2] z.b. scp merschm@lxplus.cern.ch:data.root./ 13.04.2012 M. Merschmeyer 17
Drucker und Drucken Drucken von Dateien lpr -P [Druckername] [Dateiname] nur PostScript- oder Text-Dateien (PDF-Support???) besser: Text-Dateien vorher mit 'a2ps' inpostscript umwandeln Status der Drucker-Queue abfragen lpq -P [Druckername] z.b. lpq -Php4100 hp4100 is ready no entries eigenen Druckjob aus der Druckerqueue entfernen lpq -P [Druckername] [Job-ID] z.b. mit der Job-ID aus der vorherigen Anwendung von 'lpq' 13.04.2012 M. Merschmeyer 18
Tastenkombinationen CTRL+P : vorheriges Shell-Kommando CTRL+A/E: springe zum Anfang/Ende der Kommandozeile CTRL+S/Q: Stop/Start der Terminalausgabe CTRL+D : beendet die laufende Terminal-Sitzung CTRL+C : Abbruch des gerade laufenden Programms CTRL+Z : hält das gerade laufende Programm an Wiederaufnahme in den Hintergrund verschieben mit 'bg' exklusive Wiederaufnahme im Vordergrund mit 'fg' CTRL+R : Durchsuchen der Bash-Kommando-Historie Suchbegriff eingeben Auswahl des gesuchten Kommandos mit CTRL+R 13.04.2012 M. Merschmeyer 19
Dies und Das Dateien direkt aus dem WWW laden mit 'wget' wget http://tldp.org/ldp/abs/abs-guide.pdf Datum und Uhrzeit abfragen mit 'date' date Fri Apr 13 00:07:15 CEST 2012 date +%H:%M:%S 00:07:55 date +%d.%m.%y 13.04.2012 tab completion : Bash kann Teile von Namen und Pfaden vervollständigen wenn man 'tab' drückt 'ac' eingeben 'tab' einmal drücken nichts passiert (Shell piept) 'tab' nochmals drücken Shell macht Vorschläge ac aclocal-1.4 aclocal-1.6 aclocal-1.9 acpi_listen activation-client aclocal aclocal-1.5 aclocal-1.7 aconnect acroread acyclic 13.04.2012 M. Merschmeyer 20
Prozesse (laufende Programme) 13.04.2012 M. Merschmeyer 21
Noch mehr Spiel & Spaß legt eine leere Datei an und füllt sie zeilenweise mit dem 'echo'-befehl schaut euch mit 'who' an, wer gerade auf eurer Maschine arbeitet was macht der Drucker 'hp4100' gerade? startet 'top' und schaut euch eure Prozesse an startet 'xemacs' aus der shell, drückt dann CTRL-Z, schiebt es in den Hintergrund und holt es wieder nach vorne, brecht es mit CTRL-C ab startet 'xemacs' mit einem '&' dahinter was ist anders?... 13.04.2012 M. Merschmeyer 22