Zeitstempel Hinzufügen
Teil des Abschnitts Grundlagen der Terminal-Journey von Coddy. Lektion 78 von 82.
Aufgabe
EinfachErstellen wir einen eindeutigen Namen für den Sicherungsordner, indem wir einen Zeitstempel hinzufügen. Auf diese Weise erstellt jede Sicherung einen neuen Ordner, anstatt den vorherigen zu überschreiben.
Ändere backup.sh wie folgt:
- Behalte den gesamten vorhandenen Code aus der vorherigen Lektion bei
- Ersetze das statische
backup_dir="backup"durch einen dynamischen Namen, der einen Zeitstempel enthält - Verwende Befehlsersetzung mit dem Befehl
date, um einen Zeitstempel im FormatYYYYMMDD_HHMMSSzu erzeugen - Der Sicherungsordner sollte wie folgt benannt werden:
backup_[timestamp]
Der Befehl date erstellt mit Formatspezifizierern Zeitstempel:
date +%Y%m%d_%H%M%SVerwende die Befehlsersetzung $(command), um diese Ausgabe in einer Variable zu speichern:
timestamp=$(date +%Y%m%d_%H%M%S)
backup_dir="backup_$timestamp"Ein mehrzeiliges Skript mit einem
echo-Befehl pro Zeile funktioniert, aber es gibt eine kürzere Möglichkeit: Ein Here-Dokument leitet alles bis zum abschließenden Wort direkt in die Datei.cat > script.sh << 'EOF' #!/bin/bash echo "hello" EOFDie Anführungszeichen um
'EOF'verhindern, dass$variablesbeim Schreiben der Datei ersetzt werden. Das ist genau das, was du möchtest, wenn das Skript selbst diese Variablen verwendet.
Führe das Skript mit documents als Eingabe aus (echo "documents" | bash backup.sh). Deine Ausgabe sollte wie folgt aussehen:
Backing up: documents
Created backup folder: backup_20240115_143052
Files copied successfullyDer Zeitstempel in deiner Ausgabe wird abhängig vom aktuellen Datum und der aktuellen Uhrzeit anders sein.
Hinweis: Füge
timestamp=$(date +%Y%m%d_%H%M%S)vor der Definition vonbackup_direin und verwende anschließendbackup_dir="backup_$timestamp", um den dynamischen Ordnernamen zu erstellen.
Probier es selbst
cat > backup.sh << 'EOF'
#!/bin/bash
read -p "Enter source directory: " source_dir
echo "Backing up: $source_dir"
backup_dir="backup"
mkdir -p "$backup_dir"
echo "Created backup folder: $backup_dir"
cp "$source_dir"/* "$backup_dir"
echo "Files copied successfully"
EOF
echo "documents" | bash backup.sh
ls backupAlle Lektionen in Grundlagen
4Verzeichnisse
Ein Verzeichnis erstellenEin Verzeichnis kopierenEin Verzeichnis verschieben und umbenennenEin Verzeichnis löschenZusammenfassung - Verzeichnisoperationen7Dateiinhalt
Head und TailWortanzahlSort-BefehlUniq-BefehlGrep GrundlagenGrep mit FlagsZusammenfassung - Textdetektiv10Log-Analyzer-Projekt
ProjektübersichtAnzeigen der Logdatei2Navigation
Arbeitsverzeichnis anzeigenDateien auflistenVerzeichnis wechselnAbsolute vs. relative PfadeHome- und Root-VerzeichnisZusammenfassung - Den Weg finden8Umleitung
StandardausgabeIn eine Datei überschreibenAn eine Datei anhängenStandardeingabeStandardfehlerausgabeZusammenfassung – Log-Builder11Berechtigungen
Berechtigungen verstehenBerechtigungen lesenChmod mit ZahlenChmod mit SymbolenDateibesitzZusammenfassung - Absichern14Backup-Skript-Projekt
ProjektübersichtQuellpfad Ermitteln3Dateien
Eine Datei erstellenEine Datei lesenEine Datei kopierenEine Datei verschieben und umbenennenEine Datei löschenZusammenfassung - Dateioperationen6Wildcards und Muster
Die Sternchen-WildcardDie Fragezeichen-WildcardKlammer-WildcardsWildcards kombinierenZusammenfassung - Selektive Operationen9Pipes
Was ist eine PipeVerkettung zweier BefehleVerkettung mehrerer BefehlePipe mit GrepZusammenfassung - Daten-PipelineÜbe selbstständig: Terminal-Playground