Tre utili automazioni salva spazio sul tuo Mac

Parole
Marco Bellomo
Immagini
Elisa Del Maestro
Tempo di lettura
5

Alcuni esempi su come automatizzare la pulizia del proprio Mac.

S

Automazione, dolce compagna 

Chi tra ha visto Her, film del 2013 diretto da Spike Jonze, ricorderà quando Samantha, sistema operativo con IA integrato, riordina le lettere dello scrittore. Samantha mostra comprensione del testo, spirito creativo e capacità di capire l’umorismo umano, seleziona le sue lettere migliori per farne un libro coerente; contestualmente cancella le cose non utili, chiedendo prima conferma a Theodore, il protagonista "umano".

Oggi possiamo sognare le integrazioni con le IA dei nostri strumenti di tutti i giorni, integrazioni che speriamo ovviamente non ci porteranno a sostituire i nostri rapporti umani più veri, ma che semplicemente ci assisteranno nella vita quotidiana.

In attesa però di questi interessanti sviluppi, possiamo già fare un po’ di automazione vecchia maniera, non troppo intelligente ma sicuramente appagante. 

Personalmente, nella mia routine, ho individuato alcune brutte abitudini risolte mettendo su dei banalissimi script bash, gestiti da un cron.

Cos'è uno script bash?

Uno script bash è un insieme di comandi scritti in un file di testo con estensione ".sh" che può essere eseguito in un terminale o shell Unix-like, come la bash (Bourne Again SHell). La bash è un interprete di comandi che permette di automatizzare una serie di operazioni o processi sul sistema operativo Unix o Linux.

Gli script bash sono spesso utilizzati per automatizzare compiti ripetitivi, eseguire sequenze di comandi complessi o semplificare operazioni di amministrazione di sistema. Possono essere creati da utenti o sviluppatori per personalizzare il proprio ambiente di lavoro, o per eseguire specifiche azioni in modo efficiente.

Cos’è un cron?

Cron è un servizio di pianificazione dei processi, disponibile in sistemi operativi Unix-like, come Unix e Linux. Consente di eseguire automaticamente script, comandi o programmi a intervalli di tempo specifici, in modo da automatizzare le attività senza doverle eseguire manualmente.

Il cron si basa su file di configurazione chiamati "cron tab" (cron table) che contengono le istruzioni per specificare quando e quale comando eseguire. Ogni utente sul sistema può avere il proprio cron tab, che può essere modificato per includere i processi pianificati.

La sintassi del cron tab può essere un po' complessa, ma in generale è suddivisa in cinque campi che specificano rispettivamente: il minuto, l'ora, il giorno del mese, il mese e il giorno della settimana in cui il comando deve essere eseguito. Ogni campo può contenere valori specifici, elenchi separati da virgole o intervalli di valori.

Cosa succede quando si uniscono questi due?

Quando si scrive un piccolo script bash, che magari cancella gli screenshot più vecchi di un giorno dal proprio pc, può essere molto noioso dover lanciare lo script ogni volta che si pensa possa essercene bisogno. Questa attività risulterebbe macchinosa perché noi esseri umani, se ho capito davvero bene quello che ci diceva Piero Angela in molte puntate del programma Superquark, siamo biologicamente progettati per essere pigri e risparmiare le forze. Se ci affidiamo quindi al nostro voler lanciare un’automazione periodicamente, è certo che prima o poi ce lo scorderemo, o perderemo interesse nel farlo. E il risultato finale sarà uno script ben scritto, ma inutile. 

Tornando a Superquark: in qualche puntata ricordo di aver visto due cose che mi hanno incuriosito: la prima l’ho accennata prima, ovvero che gli esseri umani siano pigri per natura e che la vita sessuale delle talpe è incredibilmente affascinante. Non mi sento certo di sapere tutto sulla biologia della talpe, non essendo una talpa o uno studioso di talpe o, ancora, una talpa senziente laureata in usi costumi e biologia delle talpe, ma potrei comunque asserire di essere abbastanza preparato. Se avete strabuzzato gli occhi sappiate che questo breve esercizio stilistico è la prova che questo paragrafo è scritto da un essere umano vecchio stampo; attualmente ChatGPT e compagni non sembrano ancora così bravi a deviare il discorso mantenendo però un debole contesto. In sostanza, quello che la nostra maestra delle elementari ci segnava in rosso ( o in blu ) lamentandosi del fatto che fossimo andati “fuori tema”, potrebbe un giorno essere l’unica prova del fatto che un essere umano abbia scritto almeno parte di un articolo. 

Cancellazione degli screenshot

Produciamo screenshot tutti i giorni per mostrare velocemente cose agli altri, o per tenere traccia di piccole cose veloci, che non vogliamo dover appuntare su un file. 

Una prima operazione molto utile è quella di spostare gli screenshot dal desktop ad una cartella dedicata. Questo già alleggerisce molto la gestione della cosa, ma noi andremo un po’ avanti.

Di seguito le tre operazioni che faremo:

  • creeremo una cartella sul desktop, denominata screenshot;
  • scriveremo un piccolo programmino bash per cancellare i file più vecchi di 4 ore;
  • metteremo il nostro script nel cron del mac.

Da MacOS Mojave (uscito nel 2018) basta premere Shift-Command-5: quindi cliccate su Opzioni e dopo su Altre posizioni. A questo punto ci ritroveremo a poter scegliere la cartella su cui vogliamo d’ora in poi salvare i nostri screenshot.

Fatto questo, arriva il momento di scrivere il nostro script: 

#!/bin/bash
find /Users/NOMEUTENTE/Desktop/screenshot -type f -mmin +240 -exec rm -f {} +

Metteremo quello molto semplice che ho scritto io in un file denominato deletescreenshot.sh.

Poi ho creato una cartella scripts dentro /Users/NOMEUTENTE

quindi dentro /Users/NOMEUTENTE/scripts noi creiamo il nostro deletescreenshot.sh.

Con (find) troviamo dentro la cartella /Users/NOMEUTENTE/Desktop/screenshot tutti i file (-type f) più vecchi di 4 ore (-mmin +240) e quindi facciamo un remove (-exec rm -f {} +).

Se diamo i permessi di esecuzione a deletescreenshot.sh, ecco che potremo eseguire il nostro file. Basterà scrivere sul terminale un chmod u+x al nostro file, quindi:

chmod u+x deletescreenshot.sh

A questo punto, se noi eseguiamo lo script

./deletescreenshot.sh

vedremo tutti gli screenshot più vecchi di 4 ore sparire.

Come già ci siamo detti, gli esseri umani sono pigri, quindi se vogliamo che questo script sia davvero utile dobbiamo farlo eseguire periodicamente, tramite un Cron, dal nostro pc. 

Niente di più semplice. Dal nostro terminale, digitiamo: 

crontab -e .

Si aprirà un editor di testo, probabilmente vim, e potremo mettere il nostro cron. 

*/30 * * * *  /Users/NOMEUTENTE/Scripts/deletescreenshoot.sh > /Users/NOMEUTENTE/Scripts/log.txt

Io l’ho impostato ogni 30 minuti, ma impostatelo in base alle vostre necessità.

Questo sito può aiutarci nel definire come fare il nostro cron https://crontab-generator.org/.

NB: ho creato anche un log, in cui possiamo vedere l’esito dello script. 

Per salvare il Cron appena inserito basterà digitare :q! e quindi dare invio.

Per controllare se abbiamo correttamente inserito tutto potremo digitare da terminale crontab -l e vedremo il nostro Cron.

Pulizia automatica della cartella "Download" 

Naturalmente la procedura per inserire il nostro script di download è quasi identica.

Possiamo decidere di essere molto rigorosi e cancellare senza se e senza ma, e quindi semplicemente faremo: 

#!/bin/bash
find /Users/NOMEUTENTE/Downloads -type f -mmin +240 -exec rm -f {} +

oppure potremmo decidere di creare una cartella “old” e spostarci i file più vecchi di 4 ore.

#!/bin/bash
source_folder="/Users/UTENTE/Downloads"
destination_folder="/Users/UTENTE/Downloads/old"
threshold_hours=4
find "$source_folder" -type f -mmin +$((threshold_hours*60)) -exec sh -c 'mv "$1" "$0"' "$destination_folder" {} \;

Spostiamo solo i file, anche perchè se c’è una cartella è piuttosto ovvio che abbiamo fatto qualche operazione in più, e che non sia così automatico che sia un file singolo di una installazione da eliminare. Chiamiamo questo script movedownload.sh, e mettiamolo a sua volta nel cron:

*/30 * * * *  /Users/NOMEUTENTE/Scripts/movedownload.sh > /Users/NOMEUTENTE/Scripts/movedownload-log.txt

Monitoraggio dello spazio su disco

Sapere quanto spazio libero si ha ancora sul proprio pc può essere un dettaglio fondamentale, poiché liberare spazio quando si è raggiunto un certo livello, può essere un’operazione fastidiosa.

Dato che potremmo avere parecchie partizioni sul nostro pc, meglio partire controllando con

df -h

su quale partizione “principale” lavoriamo. Nel mio caso: /dev/disk3s1s1.

Ecco qui uno script per monitorare lo spazio: 

#!/bin/bash

partition_path="LA VOSTRA PARTIZIONE "

threshold_percentage=72

# Ottieni l'utilizzo dello spazio su disco

disk_usage=$(diskutil info "$partition_path" | awk '/Used Space/ { print substr($4, 2) }')

# Rimuovi eventuali caratteri non numerici dall'utilizzo

disk_usage=$(echo "$disk_usage" | tr -cd '[:digit:]')

# Rimuovi eventuali spazi bianchi dall'utilizzo

disk_usage=$(echo "$disk_usage" | tr -d '[:space:]')

# Estrai il numero dall'utilizzo

disk_usage=$(echo "$disk_usage" | grep -oE '[0-9.]+')

disk_usage=$((disk_usage))

total=100

free=$((total - disk_usage))

# Controlla se l'utilizzo dello spazio su disco è inferiore al limite

if [ -n "$disk_usage" ] && (( $(echo "$free < $threshold_percentage" | bc -l) )); then
   # Invia una notifica utilizzando AppleScript
   osascript -e 'display notification "Avviso: Lo spazio libero su disco è inferiore a quanto desiderato !" with title "Avviso di spazio su disco"'
fi

Notata la chicca dell’osascript? Uno strumento su Mac molto potente da utilizzare con la bash, che in questo esempio è stato utilizzato “banalmente” per lanciare un messaggio di sistema direttamente visibile su desktop. 

In threshold_percentage va messa la percentuale che vortreste avere libera. Io ho messo un valore molto ampio per testare lo script, ma mettere 20 / 30 percento può essere più sensato. 

Anche in questo caso si potrà poi automatizzare questo script inserendolo nel cron del mac.

Cosa dire di più? Una volta mostrati gli ingredienti e avuto modo di provare tre ricette già pronte, il limite è la fantasia ( e un po’ di buon senso). ChatGPT ( giusto per fare un nome che non avrete mai letto ultimamente) potrà sicuramente aiutarvi anche a definire nuove automazioni utili, e addirittura aiutarvi nel creare gli script bash per fare le vostre automazioni.

Analizza la tua presenza online.

Scrivici per una consulenza gratuita



Richiedi consulenza

Marco Bellomo

Chairman

A diciott'anni pensavo che sarei diventato uno scrittore di fama mondiale e che avrei dominato le classifiche con il mio oscuro ciclo fantasy. A ventiquattr'anni pensavo che il PHP fosse immortale. Oggi mi piace non dare nulla per scontato, forse perché ...