====== Grundlegende Dateiverwaltung: cd, pwd, cp, mv, rm ======
Diese fünf Kommandos gehören zu den wichtigsten und meistgenutzten Befehlen in Linux. Sie ermöglichen Navigation im Dateisystem sowie das Kopieren, Verschieben und Löschen von Dateien und Verzeichnissen.
===== Voraussetzungen =====
* Zugriff auf die Linux-Kommandozeile
* Grundkenntnisse in [[sammlung:bash_kommandos|Bash-Kommandos]]
* Verständnis der [[sammlung:filesystem|Verzeichnisstruktur]]
===== Übersicht =====
^ Kommando ^ Bedeutung ^ Funktion ^
| **cd** | Change Directory | Verzeichnis wechseln |
| **pwd** | Print Working Directory | Aktuellen Pfad anzeigen |
| **cp** | Copy | Dateien/Verzeichnisse kopieren |
| **mv** | Move | Dateien/Verzeichnisse verschieben oder umbenennen |
| **rm** | Remove | Dateien/Verzeichnisse löschen |
===== cd - Change Directory =====
cd wechselt das aktuelle Arbeitsverzeichnis.
==== Grundlegende Syntax ====
cd [VERZEICHNIS]
==== Häufige Anwendungen ====
# Ins Home-Verzeichnis wechseln
cd
cd ~
cd $HOME
# In ein bestimmtes Verzeichnis
cd /var/log
cd Documents
cd /home/user/projects
# Ein Verzeichnis nach oben
cd ..
# Zwei Verzeichnisse nach oben
cd ../..
# Zum vorherigen Verzeichnis zurück
cd -
# In Unterverzeichnis
cd ./unterordner
==== Relative und absolute Pfade ====
# Absoluter Pfad (beginnt mit /)
cd /usr/local/bin
# Relativer Pfad (von aktuellem Verzeichnis)
cd documents/projekt1
# Mit Tilde (~) für Home
cd ~/Downloads
cd ~user/public
# Aktuelles Verzeichnis (.)
cd .
cd ./scripts
==== Spezielle Verzeichnisse ====
# Root-Verzeichnis
cd /
# Home-Verzeichnis
cd ~
# Vorheriges Verzeichnis
cd -
# Beispiel: Hin und Her wechseln
cd /var/log
cd /etc
cd - # Zurück zu /var/log
cd - # Zurück zu /etc
==== Praktische Beispiele ====
# Schnell zwischen Verzeichnissen wechseln
cd ~/projects/website
cd - # Zurück zum vorherigen Ort
cd - # Wieder zum Website-Projekt
# Mehrere Ebenen navigieren
cd ../../bin
# Mit Leerzeichen im Pfad (Maskieren)
cd "Meine Dokumente"
cd Meine\ Dokumente
# Wenn Verzeichnis nicht existiert
cd /nicht/vorhanden
# bash: cd: /nicht/vorhanden: Datei oder Verzeichnis nicht gefunden
==== Tipps ====
# Auto-Completion nutzen (Tab-Taste)
cd /var/lo[TAB] # Vervollständigt zu /var/log
# CDPATH für häufig genutzte Verzeichnisse
export CDPATH=.:~:~/projects
cd website # Sucht in ~/projects/website
===== pwd - Print Working Directory =====
pwd zeigt den vollständigen Pfad des aktuellen Verzeichnisses an.
==== Grundlegende Syntax ====
pwd [OPTIONEN]
==== Häufige Anwendungen ====
# Aktuelles Verzeichnis anzeigen
pwd
# Ausgabe: /home/user/documents
# Physischen Pfad anzeigen (symlinks auflösen)
pwd -P
# Logischen Pfad anzeigen (mit symlinks)
pwd -L
==== Praktische Beispiele ====
# Orientierung beim Navigieren
cd /var/log
pwd
# /var/log
cd ..
pwd
# /var
# In Skripten verwenden
CURRENT_DIR=$(pwd)
echo "Arbeite in: $CURRENT_DIR"
# Prompt mit Pfad
PS1='\u@\h:$(pwd)\$ '
# Kombination mit anderen Befehlen
echo "Ich bin hier: $(pwd)"
ls $(pwd) # Expliziter Pfad
==== Unterschied -P und -L ====
# Beispiel mit Symlink
ln -s /var/log /home/user/logs
cd /home/user/logs
pwd -L
# /home/user/logs (logischer Pfad)
pwd -P
# /var/log (physischer Pfad)
===== cp - Copy =====
cp kopiert Dateien und Verzeichnisse.
==== Grundlegende Syntax ====
cp [OPTIONEN] QUELLE ZIEL
cp [OPTIONEN] QUELLE... VERZEICHNIS
==== Häufige Anwendungen ====
# Datei kopieren
cp datei.txt kopie.txt
# In anderes Verzeichnis kopieren
cp datei.txt /tmp/
# Mehrere Dateien kopieren
cp datei1.txt datei2.txt datei3.txt /backup/
# Mit neuem Namen kopieren
cp alt.txt /tmp/neu.txt
# Verzeichnis rekursiv kopieren
cp -r verzeichnis/ kopie_verzeichnis/
# Mit Wildcards
cp *.txt /backup/
cp dokument?.pdf archiv/
==== Wichtige Optionen ====
# Rekursiv (für Verzeichnisse)
cp -r ordner/ backup_ordner/
# Interaktiv (vor Überschreiben fragen)
cp -i datei.txt ziel.txt
# Verbose (zeigt was kopiert wird)
cp -v datei.txt backup/
# Attribute beibehalten
cp -p datei.txt backup/ # Zeitstempel, Rechte, etc.
# Nur wenn Quelle neuer ist
cp -u datei.txt backup/
# Verzeichnis komplett kopieren
cp -a ordner/ backup/ # Entspricht -dpr --preserve=all
==== Praktische Beispiele ====
# Backup erstellen
cp wichtig.txt wichtig.txt.backup
cp config.ini config.ini.$(date +%Y%m%d)
# Komplettes Verzeichnis sichern
cp -a /home/user/documents /backup/
# Nur PDF-Dateien kopieren
cp *.pdf /archiv/
# Mit Bestätigung
cp -i *.conf /etc/
# Struktur erhalten
cp --parents /var/log/app/error.log /backup/
# Erstellt /backup/var/log/app/error.log
# Symlinks kopieren (nicht auflösen)
cp -d symlink ziel/
# Sparse Files korrekt kopieren
cp --sparse=always große-datei.img backup/
==== Fehlerbehandlung ====
# Fehler ignorieren und fortfahren
cp -r ordner/ backup/ 2>/dev/null
# Mit Fortschrittsanzeige (für große Dateien)
rsync -ah --progress datei.img backup/
# Nur neue/geänderte Dateien
rsync -av --update quelle/ ziel/
===== mv - Move =====
mv verschiebt Dateien/Verzeichnisse oder benennt sie um.
==== Grundlegende Syntax ====
mv [OPTIONEN] QUELLE ZIEL
mv [OPTIONEN] QUELLE... VERZEICHNIS
==== Häufige Anwendungen ====
# Datei umbenennen
mv alt.txt neu.txt
# Datei verschieben
mv datei.txt /tmp/
# Verzeichnis umbenennen
mv alter_name neuer_name
# Verzeichnis verschieben
mv ordner/ /opt/
# Mehrere Dateien verschieben
mv datei1.txt datei2.txt datei3.txt /ziel/
# Mit Wildcards
mv *.log /var/log/archiv/
==== Wichtige Optionen ====
# Interaktiv (vor Überschreiben fragen)
mv -i datei.txt ziel.txt
# Verbose (zeigt was verschoben wird)
mv -v *.txt dokumente/
# Kein Überschreiben
mv -n datei.txt ziel.txt
# Backup bei Überschreiben
mv -b datei.txt ziel.txt # Erstellt ziel.txt~
# Nur wenn Quelle neuer
mv -u datei.txt backup/
==== Praktische Beispiele ====
# Datei umbenennen
mv report.txt report_final.txt
mv 'datei mit leerzeichen.txt' datei-ohne-leerzeichen.txt
# Ordner umbenennen
mv projekt_alt projekt_neu
# In anderes Verzeichnis verschieben
mv *.mp3 ~/Musik/
mv dokument.pdf ~/Dokumente/2024/
# Dateien sortieren
mv *.jpg bilder/
mv *.mp4 videos/
mv *.pdf dokumente/
# Batch-Umbenennung mit Schleife
for file in *.JPG; do
mv "$file" "${file%.JPG}.jpg"
done
# Groß-/Kleinschreibung ändern
mv DATEI.TXT temp_file
mv temp_file datei.txt
# Mit Zeitstempel
mv log.txt log.txt.$(date +%Y%m%d_%H%M%S)
==== Wichtige Hinweise ====
# ACHTUNG: mv überschreibt ohne Warnung!
mv wichtig.txt dokumente/wichtig.txt # Überschreibt ohne Nachfrage
# Besser: Mit -i
mv -i wichtig.txt dokumente/wichtig.txt
# mv über Dateisystem-Grenzen = kopieren + löschen
mv /home/user/datei.txt /mnt/usb/ # Kann länger dauern
===== rm - Remove =====
rm löscht Dateien und Verzeichnisse **unwiederbringlich**.
==== Grundlegende Syntax ====
rm [OPTIONEN] DATEI...
**WARNUNG:** rm löscht Dateien permanent! Es gibt keinen Papierkorb in der Kommandozeile. Gelöschte Dateien sind meist unwiederbringlich verloren.
==== Häufige Anwendungen ====
# Datei löschen
rm datei.txt
# Mehrere Dateien löschen
rm datei1.txt datei2.txt datei3.txt
# Mit Wildcards
rm *.tmp
rm backup_*
# Leeres Verzeichnis löschen
rmdir leerer_ordner/
# Verzeichnis mit Inhalt löschen
rm -r ordner/
# Interaktiv (nachfragen)
rm -i datei.txt
==== Wichtige Optionen ====
# Rekursiv (Verzeichnisse)
rm -r verzeichnis/
# Force (keine Rückfragen)
rm -f datei.txt
# Interaktiv (vor jedem Löschen fragen)
rm -i *.txt
# Verbose (zeigt was gelöscht wird)
rm -v datei.txt
# Kombination: rekursiv + force
rm -rf ordner/ # VORSICHT!
# Verzeichnis nur wenn leer
rmdir ordner/
==== Praktische Beispiele ====
# Temporäre Dateien löschen
rm *.tmp
rm *~
rm *.bak
# Alte Log-Dateien
rm /var/log/app.log.*
# Cache leeren
rm -rf ~/.cache/*
# Build-Artefakte
rm -rf build/ dist/ *.o
# Mit Bestätigung bei wichtigen Dateien
rm -i wichtig.txt
# Nur Dateien, keine Verzeichnisse
find . -type f -name "*.log" -delete
# Dateien älter als 7 Tage
find /tmp -type f -mtime +7 -delete
==== Sicherheits-Tipps ====
# NIEMALS als root ausführen:
# rm -rf / # Löscht ALLES!
# rm -rf /* # Löscht ALLES!
# Alias für Sicherheit (in ~/.bashrc)
alias rm='rm -i'
alias rm-force='/bin/rm' # Für echtes rm ohne -i
# Vor dem Löschen prüfen
ls *.tmp # Was würde gelöscht?
rm *.tmp # Dann löschen
# Papierkorb-Funktion simulieren
trash() {
mkdir -p ~/.trash
mv "$@" ~/.trash/
}
# Alternativen zu rm
trash-put datei.txt # Nutzt trash-cli Paket
gio trash datei.txt # GNOME trash
# Wichtige Verzeichnisse schützen
chmod -w wichtiger_ordner/
==== Typische Fehler vermeiden ====
# FALSCH: Leerzeichen vergessen
rm -rf /wichtiges verzeichnis
# Löscht: /wichtiges und ./verzeichnis
# RICHTIG: Anführungszeichen
rm -rf "/wichtiges verzeichnis"
# FALSCH: Glob expandiert zu früh
rm *.txt > /dev/null
# Kann Probleme verursachen
# RICHTIG:
rm *.txt 2>/dev/null
# Vor dem Löschen testen
echo rm -rf ordner/ # Zeigt nur an
# rm -rf ordner/ # Erst danach ausführen
===== Kombination der Befehle =====
==== Typische Workflows ====
# Navigieren, prüfen, kopieren
cd ~/documents
pwd
ls -la
cp wichtig.txt backup/
# Dateien organisieren
cd ~/Downloads
ls *.pdf
mkdir pdfs
mv *.pdf pdfs/
cd pdfs
pwd
# Backup-Workflow
cd /var/www
cp -a html/ html.backup.$(date +%Y%m%d)
ls -la
# Aufräumen
cd /tmp
ls -la
rm -rf temp_*
ls -la
# Projekt-Setup
mkdir -p ~/projects/neues-projekt
cd ~/projects/neues-projekt
pwd
cp ~/templates/template.html .
ls -la
==== Skript-Beispiele ====
#!/bin/bash
# Dateien organisieren
# Aktuelles Verzeichnis merken
ORIG_DIR=$(pwd)
# Zu Zielordner wechseln
cd ~/Downloads || exit
# Dateien sortieren
mkdir -p Bilder Videos Dokumente
mv *.jpg *.png Bilder/ 2>/dev/null
mv *.mp4 *.avi Videos/ 2>/dev/null
mv *.pdf *.doc Dokumente/ 2>/dev/null
# Temporäre Dateien löschen
rm -f *.tmp *~
# Zurück zum Original-Verzeichnis
cd "$ORIG_DIR" || exit
echo "Dateien wurden organisiert!"
===== Siehe auch =====
* [[sammlung:ls|ls - Verzeichnisse auflisten]]
* [[sammlung:find|find - Dateien suchen]]
* [[sammlung:filesystem|Linux Dateisystem]]
* [[sammlung:bash_kommandos|Bash Kommandos]]
* [[sammlung:dateirechte_uebersicht|Dateiberechtigungen]]
{{tag>linux kommandozeile dateien verzeichnisse navigation verwaltung}}