Aggiungere un timestamp
Fa parte della sezione Fondamenti del percorso Terminal di Coddy. Lezione 78 di 82.
Sfida
FacileRendiamo univoco il nome della cartella di backup aggiungendo un timestamp. In questo modo, ogni backup crea una nuova cartella invece di sovrascrivere quella precedente.
Modifica backup.sh per:
- Mantenere tutto il codice esistente della lezione precedente
- Sostituire
backup_dir="backup"con un nome dinamico che includa un timestamp - Usare la sostituzione di comando con il comando
dateper generare un timestamp nel formatoYYYYMMDD_HHMMSS - La cartella di backup deve chiamarsi:
backup_[timestamp]
Il comando date con gli specificatori di formato crea i timestamp:
date +%Y%m%d_%H%M%SUsa la sostituzione di comando $(command) per acquisire questo output in una variabile:
timestamp=$(date +%Y%m%d_%H%M%S)
backup_dir="backup_$timestamp"Scrivere uno script su più righe con un
echoper riga funziona, ma c'è un modo più breve: un here document invia direttamente al file tutto il contenuto fino alla parola di chiusura.cat > script.sh << 'EOF' #!/bin/bash echo "hello" EOFLe virgolette attorno a
'EOF'impediscono l'espansione di$variablesmentre il file viene scritto: è ciò che serve quando lo script stesso li usa.
Esegui lo script usando documents come input (echo "documents" | bash backup.sh). L'output dovrebbe essere simile a:
Backing up: documents
Created backup folder: backup_20240115_143052
Files copied successfullyIl timestamp nell'output sarà diverso a seconda della data e dell'ora correnti.
Suggerimento: Aggiungi
timestamp=$(date +%Y%m%d_%H%M%S)prima di definirebackup_dir, poi usabackup_dir="backup_$timestamp"per creare il nome dinamico della cartella.
Provalo tu
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 backupTutte le lezioni di Fondamenti
4Cartelle
Creare una cartellaCopiare una cartellaSpostare e rinominare una cartellaEliminare una cartellaRiepilogo - Operazioni sulle cartelle7Contenuto dei file
Head e TailConteggio delle paroleComando SortComando UniqueNozioni di base su GrepGrep con opzioniRiepilogo - Detective del testo10Progetto di analisi dei log
Panoramica del progettoVisualizzare il file di log2Navigazione
Stampare la directory di lavoroElencare i fileCambiare directoryPercorsi assoluti e relativiDirectory home e radiceRiepilogo - Trova la tua strada5Progetto di organizzazione delle foto
Panoramica del progettoCreazione della struttura8Reindirizzamento
Uscita standardSovrascrivere un fileAccodare a un fileIngresso standardErrore standardRiepilogo - Creare un log11Permessi
Comprendere i permessiLeggere i permessiChmod con i numeriChmod con i simboliProprietà dei fileRiepilogo - Metti tutto al sicuro14Progetto di script di backup
Panoramica del progettoOttenere il percorso sorgente3File
Creare un fileLeggere un fileCopiare un fileSpostare e rinominare un fileEliminare un fileRipasso: operazioni sui file6Caratteri jolly e pattern
Il carattere jolly asteriscoIl carattere jolly punto interrogativoCaratteri jolly tra parentesi quadreCombinare i caratteri jollyRiepilogo - Operazioni selettive9Pipe
Che cos'è una pipeConcatenare due comandiConcatenare più comandiPipe con grepRiepilogo - pipeline dei datiEsercitati da solo: Playground Terminal