Come gestire le date in bash

Se dovete manipolare ore, giorni, mesi in bash ecco a voi una tabella semplice semplice per gestirli comodamente.

Lo script vi permette di visualizzare l’ora e minuti senza simboli in mezzo (scoprirete nei prossimi articoli l’utilità specifica).

#!/bin/bash

string=`date '+%H%M'`
echo string

Cambiate le lettere o aggiungetele in base alle vostre esigenze:

%a     locale's abbreviated weekday name (e.g., Sun)
%A     locale's full weekday name (e.g., Sunday)
%b     locale's abbreviated month name (e.g., Jan)
%B     locale's full month name (e.g., January)
%c     locale's date and time (e.g., Thu Mar  3 23:05:25 2005)
%C     century; like %Y, except omit last two digits (e.g., 20)
%d     day of month (e.g., 01)
%D     date; same as %m/%d/%y
%e     day of month, space padded; same as %_d
%F     full date; same as %Y-%m-%d
%g     last two digits of year of ISO week number (see %G)
%G     year of ISO week number (see %V); normally useful only with %V
%h     same as %b
%H     hour (00..23)
%I     hour (01..12)
%j     day of year (001..366)
%k     hour, space padded ( 0..23); same as %_H
%l     hour, space padded ( 1..12); same as %_I
%m     month (01..12)
%M     minute (00..59)
%n     a newline
%N     nanoseconds (000000000..999999999)
%p     locale's equivalent of either AM or PM; blank if not known
%P     like %p, but lower case
%r     locale's 12-hour clock time (e.g., 11:11:04 PM)
%R     24-hour hour and minute; same as %H:%M
%s     seconds since 1970-01-01 00:00:00 UTC
%S     second (00..60)
%t     a tab
%T     time; same as %H:%M:%S
%u     day of week (1..7); 1 is Monday
%U     week number of year, with Sunday as first day of week (00..53)
%V     ISO week number, with Monday as first day of week (01..53)
%w     day of week (0..6); 0 is Sunday
%W     week number of year, with Monday as first day of week (00..53)
%x     locale's date representation (e.g., 12/31/99)
%X     locale's time representation (e.g., 23:13:48)
%y     last two digits of year (00..99)
%Y     year
%z     +hhmm numeric time zone (e.g., -0400)
%:z    +hh:mm numeric time zone (e.g., -04:00)
%::z   +hh:mm:ss numeric time zone (e.g., -04:00:00)
%:::z  numeric time zone with : to necessary precision (e.g., -04, +05:30)
%Z     alphabetic time zone abbreviation (e.g., EDT)

Fonte, come sempre: https://stackoverflow.com/questions/20361982/get-current-time-in-hours-and-minutes

Come cancellare tutti i file con estensione con uno script Bash

Ad esempio se volete cancellare tutti i file con estensione .tar.gz vi basterà creare un file Bash facendo:

sudo nano script.sh

E incollate dentro:

#!/bin/bash

find /path/ -name '*.tar.gz' -delete

Poi dategli i permessi di esecuzione con sudo chmod 777 script.sh, eseguitelo con ./script.sh e il gioco è fatto!

Fate attenzione (ovviamente) perché vi cancellerà tutti i file con quell’estensione in pochi istanti.

Come fare il backup a un database MySQL con uno script Bash

Ok anche in questo caso, se volete fare il backup intero a un vostro database in MySQL, vi basterà usare questo semplice script (che in automatico vi zippa anche il file .sql creato):

sudo nano database.sh

Incollate dentro (cambiando ovviamente i vostri parametri):

#!/bin/bash

user="root"
password="pass123"
host="localhost"
db_name="mydb"
backup_path="/home"
date=`date '+%Y%m%d%H%M%S'`

mysqldump --user=$user --password=$password --host=$host $db_name > $backup_path/$db_name-$date.sql
tar -zcvf $db_name-$date.tar.gz $db_name-$date.sql

Dategli i permessi con:

sudo chmod 777 database.sh

E fatevi un bel cron job ogni mattina alle 8.00 con:

sudo crontab -e

Incollando dentro:

0 8 * * * /path/database.sh

Come zippare una cartella in automatico con uno script Bash

Se volete fare uno script che vi zippi un’intera cartella, magari per un backup continuativo e giornaliero, vi basterà creare uno script con:

sudo nano backup.sh

Incollarci dentro:

#!/bin/bash

date=`date '+%Y%m%d%H%M%S'`

tar -zcvf $date.tar.gz /pathToBackup/

Dargli i permessi di esecuzione con:

sudo chmod 777 backup.sh

E mettere un crontab:

sudo crontab -e

Incollate al fondo (modificando il percorso dello script e l’ora in questo caso):

0 1 * * * /path/backup.sh

Come gestire cartelle con apostrofi

Nel caso la vostra cartella abbia un apostrofo, il terminale bash (o quello che sia) potrebbe riscontrarvi qualche errore.

Mettete tutto tra parentesi, ad esempio: cd '/cartella(con)/anche/parentesi' per entrare dentro quella cartella.