Diese Folien: http://uves.spline.de/shell.html
Erstellt von Lusy, Yves, Philipp und Alex
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
Mehre Alternativen:
Mehere Alternativen:
$ echo "Hallo Welt"
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"
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"
Einige Optionen nehmen auch Parameter.
$ cowsay -f elephant "lala"
$ ls --color=auto folder $ echo -n "Blablabla"
Schreib die Hälfte eines Befehls und drück [TAB] aka Tabulatortaste.
Augen auf:
$ ls $ ls -hl $ ls -R $ ls -al
$ 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
/ # 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
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
$ touch thisisafile.txt $ cp thisisafile.txt imgettingcrazy.html $ mv imgettingcrazy.hml dontpanic $ rm thisisafile.txt dontpanic
Geht auch fast alles auf Ordner
$ mkdir aFolder $ cp -a aFolder bFolder $ mv aFolder cFolder $ rmdir bFolder $ rm -r cFolder
Wir können die Eingabe verkürzen:
$ touch aBBB aCCC CCbC CCaC CCaaC ganzAnders $ rm a* $ rm CC?C $ rm *
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.
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.
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.
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
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
$ 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:
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"
Ä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
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 -
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.
Table of Contents | t |
---|---|
Exposé | ESC |
Full screen slides | e |
Presenter View | p |
Source Files | s |
Slide Numbers | n |
Toggle screen blanking | b |
Show/hide slide context | c |
Notes | 2 |
Help | h |