aufgaben:tag1_kommandozeile
Inhaltsverzeichnis
Übungen Tag 1: Kommandozeile und Textverarbeitung
Diese Übungen vertiefen die Themen von Tag 1 des Linux Expert Workshops.
Übung 1.1: Navigation und Dateiverwaltung
Ziel: Sicherer Umgang mit cd, pwd, ls, cp, mv, rm
Aufgaben:
- Erstellen Sie folgende Verzeichnisstruktur in Ihrem Home-Verzeichnis:
- projekt/src/main
- projekt/src/test
- projekt/docs
- projekt/backup
- Navigieren Sie mit relativen Pfaden von main zu test
- Erstellen Sie 5 Test-Dateien in src/main (file1.txt bis file5.txt)
- Kopieren Sie alle .txt-Dateien nach backup/
- Verschieben Sie file1.txt und file2.txt nach test/
- Löschen Sie file3.txt aus main/
- Listen Sie alle Dateien mit Details auf (Größe, Datum, Rechte)
Übung 1.2: Vim-Training
Ziel: Vim-Grundlagen beherrschen
Aufgaben:
- Öffnen Sie eine Datei namens server.conf mit vim
- Wechseln Sie in den Insert-Modus und schreiben Sie:
ServerName web01 Port 8080 MaxConnections 100
- Speichern und beenden Sie (:wq)
- Öffnen Sie die Datei erneut
- Ändern Sie Port auf 8443
- Fügen Sie eine neue Zeile hinzu: SSL on
- Löschen Sie die Zeile MaxConnections
- Kopieren Sie die ServerName-Zeile und fügen Sie sie am Ende ein
- Suchen Sie nach „Port“ (/Port)
Erweitert:
- Nutzen Sie dd, yy, p
- Nutzen Sie :%s/old/new/g für Suchen & Ersetzen
Übung 1.3: Pipes und Umleitungen
Ziel: Effektive Nutzung von Pipes und Umleitungen
Aufgaben:
- Erstellen Sie eine Datei users.txt mit 20 Benutzernamen (Zeile 1-20)
- Erstellen Sie eine Datei errors.log mit verschiedenen Log-Einträgen (ERROR, WARNING, INFO)
- 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
Übung 1.4: grep und find kombiniert
Ziel: Dateien suchen und Inhalte filtern
Aufgaben:
- Erstellen Sie 10 .txt-Dateien mit verschiedenen Inhalten
- Finden Sie alle .txt-Dateien in Ihrem Home-Verzeichnis
- Finden Sie alle Dateien, die größer als 1KB sind
- Suchen Sie in allen .txt-Dateien nach dem Wort „ERROR“
- Finden Sie alle Dateien, die in den letzten 24 Stunden geändert wurden
- 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:
- Erstellen Sie eine Datei config.txt:
server_name=localhost port=8080 database=test_db user=admin
- Ersetzen Sie „localhost“ durch „production.example.com“
- Ändern Sie alle Ports von 8080 auf 8443
- Fügen Sie vor jeder Zeile ein „#“ ein (auskommentieren)
- Löschen Sie alle Zeilen, die „user“ enthalten
- 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:
- Alle .log-Dateien im aktuellen Verzeichnis findet
- ERROR-Einträge extrahiert
- Diese nach Datum sortiert in error_summary.txt speichert
- 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
