Tutti gli articoli di Marco

Scorciatoie da tastiera in Spotlight

Gli utenti esperti sanno che più si tengono le mani sulla tastiera, più velocemente si lavora sul Mac. Per questa ragione esistono le scorciatoie da tastiera, come Comando-C per copiare il testo, o Maiusc-Comando-3 per prendere uno screenshot. Ovviamente è possibile spostare il mouse per selezionare il comando da un menu, ma le scorciatoie da tastiera sono più comode e veloci.

Spotlight, come la maggior parte altre applicazioni OS X, ha diverse scorciatoie da tastiera che ci possono aiutare.

Prima di tutto, premi Comando-Spazio per aprire Spotlight. Digita un termine di ricerca, quindi utilizza i tasti freccia per navigare su e giù nella lista dei risultati. Per visualizzare il termine nel Dizionario, premi Comando-D. Per visualizzare la stessa cosa ma in una finestra di anteprima premi Comando-L, e per fare una ricerca sul web per il termine selezionato, premi Comando-B.

Per scoprire dove si trova l’elemento evidenziato premi Comando-R o Comando-Invio. Per aprirlo con l’applicazione predefinita premi Comando-T. Per visualizzare una finestra di info del Finder premi Comando-I.

Estrarre gli indirizzi e-mail da un file di testo

Per estrarre tutti gli indirizzi email contenuti in un file di testo (ad esempio un messaggio email con tutte le intestazioni) è sufficiente l’utilizzo di grep e di altri tool da shell:

$ grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*' EMAIL_SAMPLES.TXT | sort | uniq -i

Vediamo in dettaglio come funziona questa pipe:

  • grep -o scansiona il file di testo indicato e stampa tutte le stringhe che corrispondo ai criteri specificati dall’espressione regolare;
  • '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*' è un’espressione regolare che identifica un indirizzo email;
  • sort ordina i risultati ottenuti da grep;
  • uniq -i filtra i risultati in modo che ciascun indirizzo appaia una sola volta.

E’ anche possibile inglobare questo comando in uno shell script:

#!/usr/bin/env bash
if [ -f "$1" ]; then
    grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*' "$1" | sort | uniq -i
else
    echo "Expected a file at $1, but it doesn't   exist." >&2
    exit 1
fi

e richiamarlo dal prompt passandogli come parametro il nostro file da analizzare:

$ script.sh EMAIL_SAMPLES.TXT

 

Correggere l’orologio di Windows in dual-boot con OS X o Linux

Nei sistemi in cui Windows convive con OS X o Linux (in dual-boot o tramite Boot Camp) può capitare che l’orologio segnali l’ora sbagliata ogni volta che si riavvia il sistema in Windows.

Questo avviene perché OS X e Linux usano il GMT per l’orologio di sistema, mentre Windows cerca sempre di risincronizzarlo in base al fuso orario corrente.

I driver più recenti di Boot Camp o del sistema di virtualizzazione dovrebbero già ovviare a questo inconveniente, ma se ci imbattiamo in questo inconveniente, possiamo provare a forzare Windows in modo che anche lui consideri l’ora riportata dall’orologio come GMT.

Per farlo occorre avviare il programma regedit.exe, quindi aprire la seguente chiave di registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation. Cliccare con il tasto destro su un qualunque punto del pannello destro e dal menù contestuale selezionare Nuovo > DWORD (32-bit) Value. Rinominarle la chiave appena creata in RealTimeIsUniversal, quindi doppio-click su di essa e impostare il valore 1.

Adesso riavviare il sistema in OS X (per correggere l’ora di sistema), poi di nuovo in Windows. Adesso l’orologio dovrebbe mostrare l’ora corretta.

Trovare tutti i file che contengono una stringa di testo

Da shell eseguire il comando:

$ grep -rnw 'directory' -e "pattern"

-r o -R esegue una ricerca in tutte le sottocartelle (ricerca recursive), -n mostra il numero di linea and -w ricerca la parola intera. Se si aggiunge -l (lettera L) verrà mostrato solo il nome del file.

Oltre a questi è possibile utilizzare i parametri --exclude--include per effettuare una ricerca più mirata:

$ grep --include=\*.{c,h} -rnw 'directory' -e "pattern"

Il comando ricerca la stringa pattern solo nei file che hanno estensione .c o .h. Allo stesso modo il parametro --exclude:

$ grep --exclude=*.o -rnw 'directory' -e "pattern"

esclude dalla ricerca i file che terminano con l’estensione .o.

Anziché file è possibile include o escludere intere directory attraverso i parametri --exclude-dir--include-dir, come nell’esempio:

$ grep --exclude-dir={dir1,dir2,*.dst} -rnw 'directory' -e "pattern"

Per ulteriori opzioni è possibile consultare il manuale di grep:

$ man grep