Menu
Coddy logo textTech

Zeitstempel Hinzufügen

Teil des Abschnitts Grundlagen der Terminal-Journey von Coddy. Lektion 78 von 82.

challenge icon

Aufgabe

Einfach

Erstellen 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:

  1. Behalte den gesamten vorhandenen Code aus der vorherigen Lektion bei
  2. Ersetze das statische backup_dir="backup" durch einen dynamischen Namen, der einen Zeitstempel enthält
  3. Verwende Befehlsersetzung mit dem Befehl date, um einen Zeitstempel im Format YYYYMMDD_HHMMSS zu erzeugen
  4. Der Sicherungsordner sollte wie folgt benannt werden: backup_[timestamp]

Der Befehl date erstellt mit Formatspezifizierern Zeitstempel:

date +%Y%m%d_%H%M%S

Verwende 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"
EOF

Die Anführungszeichen um 'EOF' verhindern, dass $variables beim 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 successfully

Der 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 von backup_dir ein und verwende anschließend backup_dir="backup_$timestamp", um den dynamischen Ordnernamen zu erstellen.

Probier es selbst

Terminal
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 backup

Alle Lektionen in Grundlagen

Übe selbstständig: Terminal-Playground