====== 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}}