Tutorial UNIX Commandline Basics

ASE WS 2022/23

Grundkonzept: Dateisystem

Das Dateisystem ist die zentrale Datenstruktur in UNIX-Systemen. Alle Einstellungen und Daten finden sich dort.

Wichtige Verzeichnisse (Linux):

Wichtig: Dateien und Verzeichnisse mit einem Punkt am Anfang ('dotfiles') werden normalerweise nicht angezeigt oder bei Wildcard-Selektionen ausgewählt. ls -a zeigt auch solche unsichtbaren Dateien an.

Hilfreiche Tools I

Finde heraus, was folgende Befehle machen:

Aufgaben:

Grundkonzept: Pipes & Filters

Pipes (dargestellt durch das '|'-Zeichen) erlauben es, die Ausgabe eines Programms als Eingabe für ein anderes Programm zu verwenden. Filter sind Programme, die Daten von ihrer Standardeingabe lesen und modifiziert auf der Standardausgabe ausgeben. Damit lassen sich mächtige Verarbeitungspipelines bauen.

Spezielle "Dateien": *stdin, stdout, stderr*

stdin ist die Standardeingabe, von der ein Programm liest. Daten werden normalerweise auf stdout ausgegeben. In einer interaktiven Shell gehen Benutzereingaben an stdin; stdout wird auf der Konsole ausgegeben. Wenn man Fehlermeldungen oder Statusinformationen ausgeben will, ohne die reguläre Ausgabe zu unterbrechen, kann man stderr verwenden. Standardmäßig wird stderr auch auf der Konsole ausgegeben.

*>, >>, 2>* - Ausgabe in eine Datei schreiben

Beispiel:

*<* - Daten aus einer Datei lesen

Beispiel:

| - Daten an ein anderes Programm übergeben

Beispiel:

Hilfreiche Tools II

Finde heraus, was folgende Befehle machen:

Write the following Bash script:

count.sh which does the following:

% Tutorial UNIX Command Line - Advanced % ASE WS 2022/23

UNIX / Command-Line Basics (Teil 2)

(Siehe vorheriges Tutorial)

Startup

Wir arbeiten jetzt als Nutzer root auf einem 'disposable root server' via segfault.net.

ssh root@segfault.net # Password is 'segfault'

Achtung: Der Server ist nicht sicher - keine vertraulichen Infos/Passwörter dort eintippen

Erster Schritt auf dem Server: Informationen zu Netzwerk-Schnittstellen prophylaktisch in einen Text-Editor kopieren

Zweiter Schritt: tmate installieren und ausführen.

apt install tmate
tmate

tmate startet eine tmux-Session und gibt Pfade/Befehle aus, mit denen man der Session remote beitreten kann. Diese Infos am Besten auch in einem Texteditor speichern und 'q' drücken.

tmux

tmux ist eine Art Window Manager für die Kommandozeile:

tmux-Cheatsheet

MacOS

MacOS kennt keine Ctrl-Taste und tmux akzeptiert die Command-Taste nicht. Der einfachste Workaround ist, in der Datei ~/.tmux.conf den Shortcut auf “Alt-b” (entspricht Meta-b / M-b) zu ändern:

cat > ~/.tmux.conf <<__EOF__
unbind C-b
set -g prefix M-b
bind M-b send-prefix
__EOF__

Hilfreiche Tools II

Finde heraus, was folgende Befehle machen (Raphael stellt sie kurz vor):

Test-Dateien z.B.: https://github.com/veltman/clmystery/archive/refs/heads/master.zip (mit wget/curl herunterladen)

Paketmanagement unter Debian/Ubuntu

Weiterführende Methoden:

Finde heraus, was folgende Bash-Befehle/-Strukturen machen:

Siehe auch:

Write the following Bash script:

say_count.sh which does the following:

Minimal example:

#!/bin/bash

if [[ ! -e /usr/games/cowsay ]]
then
  echo "Installing cowsay"
  apt install -y -q cowsay
fi

wget https://github.com/veltman/clmystery/archive/refs/heads/master.zip
unzip master.zip
for f in $(grep -r --files-with-matches "Duchess" clmystery-master/*)
do
  NUM=$(grep -o "Duchess" $f | wc -l)
  echo -e "Found $NUM lines in\n$(basename $f)" | /usr/games/cowsay
done

# cleanup
apt remove -y -q cowsay
rm -r clmystery-master
rm master.zip

System-Werkzeuge

Netzwerk-Tools