Benutzer-Werkzeuge

Webseiten-Werkzeuge


aufgaben:tag1_kommandozeile

Übungen Tag 1: Kommandozeile und Textverarbeitung

Diese Übungen vertiefen die Themen von Tag 1 des Linux Expert Workshops.

← Zurück zur Agenda

Übung 1.1: Navigation und Dateiverwaltung

Ziel: Sicherer Umgang mit cd, pwd, ls, cp, mv, rm

Aufgaben:

  1. Erstellen Sie folgende Verzeichnisstruktur in Ihrem Home-Verzeichnis:
    • projekt/src/main
    • projekt/src/test
    • projekt/docs
    • projekt/backup
  2. Navigieren Sie mit relativen Pfaden von main zu test
  3. Erstellen Sie 5 Test-Dateien in src/main (file1.txt bis file5.txt)
  4. Kopieren Sie alle .txt-Dateien nach backup/
  5. Verschieben Sie file1.txt und file2.txt nach test/
  6. Löschen Sie file3.txt aus main/
  7. Listen Sie alle Dateien mit Details auf (Größe, Datum, Rechte)

- Lösung

- Lösung

mkdir -p projekt/{src/{main,test},docs,backup}
cd projekt/src/main
pwd
touch file{1..5}.txt
cp *.txt ../../backup/
mv file1.txt file2.txt ../test/
rm file3.txt
ls -lah ~/projekt/backup/


Übung 1.2: Vim-Training

Ziel: Vim-Grundlagen beherrschen

Aufgaben:

  1. Öffnen Sie eine Datei namens server.conf mit vim
  2. Wechseln Sie in den Insert-Modus und schreiben Sie:
ServerName web01
Port 8080
MaxConnections 100
  1. Speichern und beenden Sie (:wq)
  2. Öffnen Sie die Datei erneut
  3. Ändern Sie Port auf 8443
  4. Fügen Sie eine neue Zeile hinzu: SSL on
  5. Löschen Sie die Zeile MaxConnections
  6. Kopieren Sie die ServerName-Zeile und fügen Sie sie am Ende ein
  7. Suchen Sie nach „Port“ (/Port)

Erweitert:

  1. Nutzen Sie dd, yy, p
  2. Nutzen Sie :%s/old/new/g für Suchen & Ersetzen

Lösung

Lösung

# Datei erstellen
vim server.conf
 
# Im vim:
# i - Insert-Modus
# Text eingeben
# ESC - zurück zu Normal-Modus
# :wq - speichern und beenden
 
# Datei erneut öffnen
vim server.conf
 
# Port ändern:
# /Port - suchen
# cw8443 - Change Word zu 8443
# ESC
 
# Neue Zeile:
# o - neue Zeile unten
# SSL on
# ESC
 
# Zeile löschen:
# /MaxConnections
# dd - Zeile löschen
 
# Zeile kopieren:
# gg - zum Anfang
# yy - Zeile kopieren (yank)
# G - zum Ende
# p - einfügen (paste)
 
# Suchen & Ersetzen:
# :%s/8080/8443/g


Übung 1.3: Pipes und Umleitungen

Ziel: Effektive Nutzung von Pipes und Umleitungen

Aufgaben:

  1. Erstellen Sie eine Datei users.txt mit 20 Benutzernamen (Zeile 1-20)
  2. Erstellen Sie eine Datei errors.log mit verschiedenen Log-Einträgen (ERROR, WARNING, INFO)
  3. Führen Sie folgende Aufgaben aus:
    • Zeigen Sie nur die ersten 10 Zeilen von users.txt
    • Zeigen Sie nur die letzten 5 Zeilen von users.txt
    • Filtern Sie nur ERROR-Einträge aus errors.log
    • Zählen Sie wie viele ERROR-Einträge es gibt
    • Sortieren Sie users.txt und entfernen Sie Duplikate
    • Leiten Sie alle ERROR-Einträge in eine neue Datei errors_only.log um

Lösung:

# Testdaten erstellen
for i in {1..20}; do echo "user$i"; done > users.txt
cat > errors.log << EOF
2024-01-15 ERROR Failed to connect
2024-01-15 INFO Server started
2024-01-15 WARNING Low memory
2024-01-15 ERROR Database timeout
2024-01-15 INFO Request processed
EOF
 
# Aufgaben
head -10 users.txt
tail -5 users.txt
grep "ERROR" errors.log
grep -c "ERROR" errors.log
sort users.txt | uniq
grep "ERROR" errors.log > errors_only.log

Lösung

Lösung

# Testdaten erstellen
for i in {1..20}; do echo "user$i"; done > users.txt
cat > errors.log << EOF
2024-01-15 ERROR Failed to connect
2024-01-15 INFO Server started
2024-01-15 WARNING Low memory
2024-01-15 ERROR Database timeout
2024-01-15 INFO Request processed
EOF
 
# Aufgaben
head -10 users.txt
tail -5 users.txt
grep "ERROR" errors.log
grep -c "ERROR" errors.log
sort users.txt | uniq
grep "ERROR" errors.log > errors_only.log


Übung 1.4: grep und find kombiniert

Ziel: Dateien suchen und Inhalte filtern

Aufgaben:

  1. Erstellen Sie 10 .txt-Dateien mit verschiedenen Inhalten
  2. Finden Sie alle .txt-Dateien in Ihrem Home-Verzeichnis
  3. Finden Sie alle Dateien, die größer als 1KB sind
  4. Suchen Sie in allen .txt-Dateien nach dem Wort „ERROR“
  5. Finden Sie alle Dateien, die in den letzten 24 Stunden geändert wurden
  6. Suchen Sie rekursiv nach allen Dateien, die „password“ enthalten

Lösung:

# Testdaten
for i in {1..10}; do echo "Test $i ERROR warning" > test$i.txt; done
 
# Aufgaben
find ~ -name "*.txt"
find ~ -type f -size +1k
grep -r "ERROR" *.txt
find ~ -type f -mtime -1
grep -r "password" /etc/ 2>/dev/null

</hidden>

Übung 1.5: Textmanipulation mit sed (Optional)

Ziel: Sed für Textbearbeitung nutzen

Aufgaben:

  1. Erstellen Sie eine Datei config.txt:
server_name=localhost
port=8080
database=test_db
user=admin
  1. Ersetzen Sie „localhost“ durch „production.example.com“
  2. Ändern Sie alle Ports von 8080 auf 8443
  3. Fügen Sie vor jeder Zeile ein „#“ ein (auskommentieren)
  4. Löschen Sie alle Zeilen, die „user“ enthalten
  5. Ersetzen Sie alle „=“ durch „: “

Lösung:

sed 's/localhost/production.example.com/' config.txt
sed 's/8080/8443/g' config.txt
sed 's/^/#/' config.txt
sed '/user/d' config.txt
sed 's/=/: /g' config.txt

</hidden>

Zusatz-Challenge

Erstellen Sie ein Bash-Skript, das:

  1. Alle .log-Dateien im aktuellen Verzeichnis findet
  2. ERROR-Einträge extrahiert
  3. Diese nach Datum sortiert in error_summary.txt speichert
  4. Die Anzahl der Fehler pro Log-Datei ausgibt
#!/bin/bash
echo "Error Summary" > error_summary.txt
echo "==============" >> error_summary.txt
for logfile in *.log; do
    echo "Processing $logfile..."
    error_count=$(grep -c "ERROR" "$logfile")
    echo "$logfile: $error_count errors" >> error_summary.txt
    grep "ERROR" "$logfile" >> error_summary.txt
done
sort error_summary.txt > error_summary_sorted.txt
cat error_summary_sorted.txt

</hidden>

Siehe auch

aufgaben/tag1_kommandozeile.txt · Zuletzt geändert: von 127.0.0.1