changed 7 years ago
Linked with GitHub

Shell Code

Lektion 1: Chat

  • Install an IRC client
  • Connect to the 'Freenode' server
  • Join the secret channel

Lektion 2: What the shell

zB Bash, Fish, Dash

Vorteil: Man kann mehrere Befehle verbinden -> ist sehr mächtig

Kommandos nehmen Argumente, Argumente sind durch Leerzeichen getrennt.

Lektion 3: Running programs

Deklarative Programmierung: Beschreiben, was man will, und der Computer macht das dann für einen

Basisprogramme

Parameter:
sind einem Command zugeordnet, beginnen häufig mit "" oder "-" und sind erkennbare Befehle (gegenüber Parametern, bei denen ein einziger Buchstabe einen gesamten Befehl abbildet)
Reihenfolge der Parameter hängt vom Command ab
also z. B. sort -r (Command: sortiere, mit dem Parameter reverse, also: umgekehrt sortieren)

man Befehl -> ruft die Beschreibung auf

  • Direcories (Ordner)
  • Files (Dateien)

Pfade: Der Ort, an dem sich die Datei befindet.
z.B. Dokumente/ProjektFordPrefect/hello_world.txt
Absolute Pfade: / am Anfang (absolut = Pfad vom root-Verzeichnis aus)
relative Pfade: kein / am Anfang (relativ = Pfad vom aktuellen Verzeichnis aus; man könnte auch schreiben ./ und dann den relativen Pfad)

(we don't talk about Windows)
UNIX setzt die Normen

Orte:
Aktuelles Directory, home Directory, root Directory (wo alles beginnt, äußerst mögliches Directory, angezeigt durch /)

Files:
. - aktuelles Directory
.. - übergeordnete Verzeichnis

Befehle

($ definiert: hier beginnt ein Shell-Befehl)
$ pwd (print working directory) – Zeigt aktuelle s directory an (Default: persönlicher Home-Space)
$ cd – Change Directory -> ohne Parameter geht es ins home directory
$ cd Dokumente/MyProject
$ cd /media/MyUsbStick
$ cd .. - geht ein Verzeichnis "höher"

Commands

$ ls – List files and directories
$ ls -al – list ALL files
$ man ls - Manual des Parameters ls (Bedienungsanleitung) (ruft ein eigenes Programm auf)
auch $ h oder help

Nebenbei: Das
Command $ find ist dafür berüchtigt, immer was anderes zu machen als es soll

Hausaufgabe: Recherchiert mit man und Internet folgende Commands
ls, cp, mv, rm, vi, vim, dmesg, ping, wget, curl, apt-get, brew, pacman, find, cat, grep, mplayer, gpg, ssh, scp, tar, gzip, youtube-dl, mount, umount, awk, sed, htop, kill, ps, lsof, fuser, sudo, su, du, df, shutdown, halt, reboot, sl, lsblk, lsusb, lshw, emacs, sed, pv, ssh, rsync, sort, traceroute, du, xargs, tail, head, man, tac

Lektion 4: Shell Programmierung

Stärke von Shell ist die Verbindung von Kommandos zu einem Programm
(Bash hat keine gute Reputation weil undurchsichtig, ist aber auch sehr mächtig)

3 Standard-Streams:
Standart in
Standard out
Standard error

ls ist zum Beispiel eine Datenabfrage, die dann auf dem Standard out Stream ausgelesen wird

Stream-Processing-Bezeichnungen:
source: z.B. ls,
filter: z.B. grep
sync: z. B. rm oder mv

Der Trick besteht darin, die Kombination von Befehlen zu finden, die du brauchst.

Pipe:
source | filter | sink -> leitet output vom ersten Befehl in den zweiten Befehl
z.B. ls | sort | head -n 5 -> listet die obersten 5 aus

http://overthewire.org/wargames/bandit/

Stream Redirection

Standard Output wird in neues File geschrieben: >
z. B. ls > listoffiles.txt, Bedeutet: schreibe den Output dieses Commands in folgendes File

Standard Input wird gelesen: <
z. B. "<meinfile.txt grep FindeDiesenString", Bedeutet: lies aus diesem File aus und führe das folgende Command "grep" mit dem parameter "FindeDiesenString"

xargs liest zeilen/wortweise aus meinem Input ein und übergibt jedes Wort in das Command ein als argument.

Gegenteil: Konvertiere Argumente in Output echo -e "arg1\narg2\narg3\n"

Select a repo