Shell in Schnell - Teil 1

Presenter Notes

Diese Folien: http://uves.spline.de/shell.html

Erstellt von Lusy, Yves, Philipp und Alex

Presenter Notes

Warum?

Beispiel: Gib alle Wörter einer Datei und ihre Häufigkeiten aus

$ curl http://discoproject.org/media/text/chekhov.txt 2> /dev/null
    | tr -sc "A-Za-z" "\n" | sort | uniq -ic | sort -n -r

Presenter Notes

Wie starte ich die Shell?

Mehre Alternativen:

  • Terminalemulator starten (gnome-terminal,xfce-terminal oder konsole)
  • [Strg]-[Alt]-[t] ( startet auch Terminalemulator)
  • [Strg]-[Alt]-[F1-6] ( wechselt auf Terminal, zurück mit [F7])
  • [Alt]-[F2] -- öffnet Fenster, wo man den Namen des gewünschten Programms eintippen kann

Presenter Notes

Wie beende ich die Shell?

Mehere Alternativen:

  • Fenster (Terminalemulator) schließen
  • [Strg]-[d] beendet Shell
  • Eingabe von exit
  • Eingabe von logout

Presenter Notes

Das erste Command

$ echo "Hallo Welt"

Presenter Notes

Was kann ich damit alles machen?

  • Im Dateisystem navigieren
  • Dateien/Verzeichnisse erstellen/löschen/kopieren
  • Programme starten
  • Einfache (oder auch kompliziertere^^) Operationen auf Texten ausführen
  • und vieles mehr

Presenter Notes

Befehle mit Parameter

Parameter beschreiben in der Regel Objekte, die bearbeitet werden. Zum Beispiel welche Datei verwendet werden soll oder auf welcher Zeichkentte gearbeitet werden soll.

$ cowsay "lala"

Presenter Notes

Befehle mit Optionen

Optionen verändern die Arbeitsweise von Programmen. Zum Beispiel wie oder wieviel Informationen sie ausgeben.

$ cowsay -d "Eine nicht so lebendige Kuh"
$ cowsay -y "Ich bin jung"

Die Optionen fangen mit einem - an und bestehen aus einem Buchstaben oder fangen mit -- und bestehen aus mehreren Buchstaben

$ ls --all

Kurze Optionen können kombiniert werden.

$ cowsay -ys "LOVE PEACE AND GNU/LINUX"

Presenter Notes

Optionen mit Parametern

Einige Optionen nehmen auch Parameter.

$ cowsay -f elephant "lala"

Beispiele

$ ls --color=auto folder
$ echo -n "Blablabla"

Presenter Notes

Tabcompletion

Schreib die Hälfte eines Befehls und drück [TAB] aka Tabulatortaste.

http://www.fene-blog.de/wp-content/uploads/2010/01/Tabtaste.jpg

Presenter Notes

Navigation im Dateisystem

Augen auf:

$ ls
$ ls -hl
$ ls -R
$ ls -al

Presenter Notes

Verzeichnisse wechseln

$ cd /tmp
$ cd ~      # ins home directory wechseln
$ cd        # geht in der Regel auch
$ cd ..     # in das darüberliegende Verzechnis wechseln
$ pwd       # zeigt wo wird sind
/home/.../shellinschnell

Den Weg zu einem Ordner oder Datei bezeichnen wir als Pfad. Ordner können mit relativen Pfaden oder absoluten Pfade angesteuert werden.

Im Beispiel werden die selber Ordner angesprochen, vorrausgesetzt wir sind vorher im Ordner tmp.

$ cd /tmp/gna # absoluter Pfad
$ cd gna # relativer Pfad

Presenter Notes

Linux-Verzeichnisstruktur

/    # Wurzel, alle anderen Verzeichnisse hängen dadrunter
    /bin    # grundlegende Programme
    /lib    # grundlegende Bibliotheken
    /usr    # statische Resourcen
        /usr/bin    # alle anderen Programme
        /usr/lib    # alle anderen Bibliotheken
    /boot    # alles, was zum Starten des Kernels benötigt wird
    /var     # alle veränderlichen Daten
        /var/lib    # Daten von Programmen, die zur Laufzeit gebraucht werden
        /var/log    # Log-Dateien
    /media    # Alle eingebundenen Datenträger
    /tmp      # Temporäre Dateien
    /run      # Dateien für die Kommunikation zwischen Programmen
    /home     # Userdateien
    /proc     # Pseudo-Dateisystem zum Auslesen von Systemdaten
    /sys      # Pseudo-Dateisystem zur Kommunikation mit dem Kernel
    /dev      # Dateirepräsentation aller Geräte
    /root     # Home-Verzeichnis vom root-Benutzer
    /etc      # benutzerübergreifende Konfigurationsdateien

Presenter Notes

Hilfe zur Selbsthilfe:

Beschreibt die Auswirkung von Befehlen, die möglichen Optionen und Parameter, die diese nehmen, und gibt Hinweise zu verwandten Befehle

$ man <Befehlname>

Meistens geht auch:

$ <befehl> --help
$ <befehl> -h

Presenter Notes

Operationen auf Dateien

$ touch thisisafile.txt
$ cp thisisafile.txt imgettingcrazy.html
$ mv imgettingcrazy.hml dontpanic
$ rm thisisafile.txt dontpanic

Presenter Notes

Operationen auf Ordner

Geht auch fast alles auf Ordner

$ mkdir aFolder
$ cp -a aFolder bFolder
$ mv aFolder cFolder
$ rmdir bFolder
$ rm -r cFolder

Presenter Notes

Eingabehilfen (Wildcards)

Wir können die Eingabe verkürzen:

  • * ersetzt beliebig viele Zeichen
  • ? ersetzt genau ein Zeichen
$ touch aBBB aCCC CCbC CCaC CCaaC ganzAnders
$ rm a*
$ rm CC?C
$ rm *

Presenter Notes

Eingabehilfen (History)

Die Shell speichert eure Eingaben. Mit "Pfeil nach oben" könnt ihr zuvor eingegebens wieder editieren und abschicken.

Mit [Strg]-[r] könnt ihr in der History suchen.

Presenter Notes

Programme starten

Aus der Shell kann man Programme, die in der Shell laufen, starten:

$ python

(man kann die Pythonshell durch drücken von [Strg]-[d] wieder beenden)

Oder auch Programme, die eine graphische Oberfläche haben:

$ gedit

Wenn man ein Programm in seinem Terminal am Laufen hat, kann man in diesem Terminal erstmal nichts weiteres machen. Er ist wieder frei, erst nachdem das Programm beendet wird.

Die Eingabe:

$ gedit &

startet auch gedit, die Shell steht dann aber bereit, um andere Programme auszuführen.

Presenter Notes

Programme starten II

Wenn man

$ gedit

schon eingetippt hat, kann man mit [Strg]-[z] die Ausführung des Programms erstmal stoppen und dann mit

$ bg

das Programm in den Hintergrund schieben. Dann hat man wieder den Shellprompt und kann weitere Befehle in der Shell ausführen.

Presenter Notes

Werkzeuge für Umgang mit Texten

Inhalt von Datei bullshit.txt zeigen (falls bullshit.txt existiert)

$ cat bullshit.txt

Anfang von Datei zeigen:

$ head bullshit.txt

Ende von Datei zeigen:

$ tail bullshit.txt

Presenter Notes

Word count

Anzahl von Bytes, Characters, Wörtern, Zeilen einer Datei zeigen:

$ wc -c bullshit.txt # bytes count
$ wc -m bullshit.txt # characters count
$ wc -w bullshit.txt # words count
$ wc -l bullshit.txt # lines count

Presenter Notes

Datei Durchsuchen

$ grep "lala" bullshit.txt
$ grep -A 1 -B 1 "lala" bullshit.txt

Grep ist viel mächtiger, man kann auch die sogenannten regulären Ausdrücke damit verwenden. Mehr zu regulären Ausdrücke gibt es z.b. hier:

Presenter Notes

Pipes

Statt Dateien oder Zeichenketten als Argumente anzugeben, können wir auch die Ausgabe eines anderen Befehls als Ausgabe verwenden. Dazu brauchen wir die Pipe |.

$ ls /usr/bin | grep haskell
$ cat testdatei | sort | grep "^a"

Presenter Notes

Umleitungen

Ähnlich wie Pipes funktionieren, die Umleitungen <, > und >>. Nur das sie nicht zwischen Befehlen sondern zwischen Befehlen und Datei umleiten.

$ echo -e "Schreibe diesen\nText in eine Datei" > datei.txt
$ cowsay < datei.txt
$ echo -e "Überschreibe den alten Inhalt" > datei.txt
$ echo -e "Hänge was an die Datei an" >> datei.txt
$ cat datei.txt

Presenter Notes

Auf anderen Rechnern arbeiten

Shell auf einem entfernten Rechner öffnen:

$ ssh <username>@peking.imp.fu-berlin.de

Datei auf und von einen anderen Rechner kopieren:

$ touch payload
$ scp payload <username>@peking.imp.fu-berlin.de:/tmp
$ scp <username>@peking.imp.fu-berlin.de:/tmp/payload payload2

Befehl auf einem anderen Rechner ausführen, z.B. rm:

$ ssh peking rm /tmp/payload

ssh fungiert auch als pipe, zwischen den Rechnern

cat file.pdf | ssh <username>@andorra.imp.fu-berlin.de lp -

Presenter Notes

Diese Präsentation wurde erstellt mir landslide

curl "http://pad.spline.de/ep/pad/export/shellslides/latest?format=txt" > bla.rst
    && landslide bla.rst -i
    && scp presentation.html fob:public_html/webroot/shell.html

Diese Präsentations steht unter cc-by-sa Lizenz.

Presenter Notes