Menu
Coddy logo textTech

Ajouter un Horodatage

Fait partie de la section Les fondamentaux du Journey Terminal de Coddy. Leçon 78 sur 82.

challenge icon

Défi

Facile

Créons un nom de dossier de sauvegarde unique en ajoutant un horodatage. Ainsi, chaque sauvegarde crée un nouveau dossier au lieu d’écraser le précédent.

Modifiez backup.sh pour :

  1. Conserver tout le code existant de la leçon précédente
  2. Remplacer backup_dir="backup" statique par un nom dynamique qui inclut un horodatage
  3. Utiliser la substitution de commande avec la commande date pour générer un horodatage au format YYYYMMDD_HHMMSS
  4. Le dossier de sauvegarde doit être nommé : backup_[timestamp]

La commande date avec des spécificateurs de format crée des horodatages :

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

Utilisez la substitution de commande $(command) pour capturer cette sortie dans une variable :

timestamp=$(date +%Y%m%d_%H%M%S)
backup_dir="backup_$timestamp"

Écrire un script multiligne avec un echo par ligne fonctionne, mais il existe une méthode plus courte : un document here envoie directement dans le fichier tout ce qui se trouve jusqu’au mot de fermeture.

cat > script.sh << 'EOF'
#!/bin/bash
echo "hello"
EOF

Les guillemets autour de 'EOF' empêchent l’expansion de $variables pendant l’écriture du fichier, ce qui est souhaitable lorsque le script les utilise lui-même.

Exécutez le script avec documents comme entrée (echo "documents" | bash backup.sh). Votre sortie devrait ressembler à ceci :

Backing up: documents
Created backup folder: backup_20240115_143052
Files copied successfully

L’horodatage dans votre sortie sera différent selon la date et l’heure actuelles.

Astuce : Ajoutez timestamp=$(date +%Y%m%d_%H%M%S) avant de définir backup_dir, puis utilisez backup_dir="backup_$timestamp" pour créer le nom de dossier dynamique.

Essayez vous-même

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

Toutes les leçons de Les fondamentaux

Entraînez-vous par vous-même : Playground Terminal