2016-10-24

Calcolare la somma delle dimensioni in byte dei file di una directory

Trattando l'output del comando ls -l con cut e sed si può ottenere la somma delle dimensioni con questo "semplice" comando:
echo $(($(ls -l | sed -e "s/ \+/ /g" | cut -d" " -f5 | paste -s -d+)))
Analizzando il comando si può notare:
  • ls -l per ottenere le informazioni dei file della directory corrente
  • sed per ridurre gli spazio in eccesso tra una colonna e la seguente
  • cut per ottenere solo la quinta colonna impostando lo spazio come separatore
  • paste per unire tutte le linee ottenute in un unica linea separando i valori con un segno +
  • $(.....) per utilizzare l'output dei comandi al suo interno come se fosse un comando
  • $((.....)) per valutare il contenuto come un'espressione aritmetica

Come al solito è uno dei modi per ottenere un risultato, quindi ce ne possono essere tanti altri anche migliori e più performanti.

sed - ridurre una serie di spazi ad uno solo

Quando il contenuto di un file o l'output di un comando ha il testo formattato con spazi in colonne potrebbero esserci un numero indefinito di spazi tra una colonna e la successiva. In questo caso una delle soluzioni per permettere al comando cut di "pescare" una determinata colonna può essere quella di ridurre una serie di spazi in uno solo e con l'opzione -d" " imporre a cut di riconoscere le colonne separate da un solo spazio; per fare ciò con sed si può usare questo comando:
sed -e "s/ \+/ /g"
ad esempio per ridurre gli spazio dell'output del comando ls -l:
ls -l | sed -e "s/ \+/ /g"

2015-07-16

Whatsapp sul PC

Finalmente posso digitare comodamente dalla tastiera del mio PC i messaggi su Whatsapp.
Ho la versione 2.12.176 di Whatsapp per Android ed ho una voce in più nel menu:
WhatsApp Web
Con questa voce di menu si può leggere un QR-Code che abilita l'accesso a WhatsApp dal PC.
Io ho provato con il mio fido Firefox (rigorosamente su Arch Linux) ad aprire l'indirizzo:
http://web.whatsapp.com/
ed ho ottenuto una pagina la cui componente fondamentale è il QR-Code da inquadrare con il telefono una volta selezionata la voce di menu WhatsApp Web dal menu di WhatsApp.
Una volta letto il QR-Code si sono aperte le mie chat più recenti ed ho avuto la possibilità di scrivere comodamente dal mio PC (devo ammettere che preferisco la tastiera al touch).
Il vincolo da rispettare è che il cellulare deve rimanere connesso ad Internet, altrimenti non sarà possibile utilizzare l'accesso da Web.

2015-01-09

App Android per le tabelline

Mi ricordo che quando ero bambino non mi è piaciuto per niente studiare le tabelline.
Adesso che ho un figlio alle prese con le stesse tabelline ho ritenuto necessario realizzare un app per Android da usare con un cellulare per esercitarsi con le prime semplici moltiplicazioni.

La prima pubblicazione l'ho effettuata a Maggio 2014 ma la prima versione utilizzabile ritengo che sia quella che ho pubblicato all'inizio del 2015.
Dal punto di vista grafico è un'applicazione scarna, come tutte le mie realizzazioni, ma almeno penso che sia comoda da usare e spero che anche per altri possa essere uno strumento comodo per studiare quasi giocando.

L'interfaccia si presenta con l'operazione da svolgere in basso a sinistra con il risultato che all'inizio sarà 0 (zero), le cifre presenti in due colonne permettono di impostare il risultato toccando la corretta cifra blu per indicare l'unità e l'eventuale cifra rossa per la decina, per confermare il risultato sarà sufficiente toccarlo. Sarà possibile correggere il risultato quante volte si vuole prima di toccarlo per la conferma.

Nella zona in alto a sinistra vengono visualizzate le operazioni con i risultati inseriti ed in caso di errore verrà visualizzata una coppia di punti esclamativi.
Poco sotto la lista verrà aggiornato il punteggio con il numero di risposte corrette sul totale delle operazioni effettuate.

L'ultima versione permette di selezionare in modo, forse poco intuitivo, quali tabelline studiare; il tasto Seleziona permette di disabilitare uno o più cifre nelle due colonne tenendo a mente che la colonna di sinistra, con le cifre rosse rappresenta il primo fattore della moltiplicazione e la colonna di sinistra, con le cifre blu rappresenta il secondo fattore. Al termine, il tasto che è diventato Conferma permetterà di riprendere l'esercizio solo con le tabelline selezionate.

Link nel Play Store

2014-10-22

Alt-Shift-Tab che non funziona su Openbox LXDE

Oggi finalmente sono riuscito a scoprire perché non mi funzionava più la combinazione per tornare indietro nello scorrimento delle finestre aperte.
Per scorrere le finestre aperte utilizzo spesso Alt-Tab per passare alla prossima della lista e Alt-Shift-Tab per tornare indietro.

Come ho già espresso in passato preferisco utilizzare la tastiera per impartire la maggior parte dei comandi al mio PC, per passare da un'applicazione ad un'altra uso difficilmente il mouse e spesso le combinazioni di tasti di cui sto scrivendo.
Giorni fa ha smesso di funzionare la combinazione Alt-Shift-Tab e quindi potevo solo andare avanti tra le finestre aperte e ad un certo momento ho deciso che era troppo scomodo, allora la ricerca mi ha riportato a rivedere l'ultima modifica che avevo effettuato alla configurazione di XORG per impostare il layout di tastiera. Aggiungendo il file
/etc/X11/xorg.d/10-keyboard.conf
avevo preso uno snippet trovato in rete e modificato secondo le mie necessità ma non avevo notato che c'era una direttiva di troppo dopo le modifiche:
Option "XkbOptions" "grp:alt_shift_toggle"
Nello snippet che avevo trovato era necessaria per permettere di passare da un layout ad uno alternativo semplicemente premendo la combinazione Alt-Shift essendo presenti due layout differenti.
Ho provveduto a commentare la direttiva incriminata e magicamente posso andare avanti e tornare indietro tra le finestre aperte.

2014-10-14

Il 16 Agosto 2014 ed il particolare orario in Unix / Linux

$ date --date='@1408160542'
Sat Aug 16 05:42:22 CEST 2014
$ date --date='@1408160542' +%y%m%d%H%M
1408160542


In questo orario che ho indicato ho trovato la particolare combinazione per cui il numero dei secondi passati dal 1 Gennaio 1970 ha lo stesso aspetto della data e ora riportati nel formato anno (di due cifre) mese giorno ore e minuti.
L'ho provato con la versione 8.23 del comando date (GNU coreutils), con versioni più recenti non è permesso fornire la data da visualizzare con il formato preceduto da @ ma si può eseguire il comando nel modo inverso:
$ date --date='Sat Aug 16 05:42:22 CEST 2014' +%s
1408160542

2014-09-30

Dizionario on-line da bash con curl

La RFC 2229 descrive il protocollo Internet DICT per permettere l'accesso a dizionari in rete.
Un modo molto semplice per accedere è l'utilizzo del comando curl che supporta tale protocollo.

Un esempio con la parola inglese door che viene tradotta in Italiano in porta o uscio:
curl "dict://dict.org/d:door:fd-eng-ita"
restituisce:
220 pan.alephnull.com dictd 1.12.1/rf on Linux 3.14-1-amd64 <auth.mime> <6051747.13047.1412087461@pan.alephnull.com>
250 ok
150 1 definitions retrieved
151 "door" fd-eng-ita "English-Italian FreeDict Dictionary ver. 0.1.1"
door
 porta; uscio
.
250 ok [d/m/c = 1/0/12; 0.000r 0.000u 0.000s]
221 bye [d/m/c = 0/0/0; 0.000r 0.000u 0.000s]

le righe che iniziano con un numero fanno parte del protocollo ed offrono un utilizzo agevolato per il trattamento automatico:
il 220 corrisponde al messaggio di benvenuto da parte del server che indica i suoi riferimenti e le sue caratteristiche.
il 250 seguito da ok rappresenta la presa in carico della richiesta.
il 150 riporta il numero delle definizioni trovate, se non ce ne fossero il codice sarebbe 552.
Per ogni definizione trovate avremo un 151 con l'indicazione della parola cercata, il codice e la descrizione del dizionario in cui è stata trovata
Di seguito alla riga con codice 151 viene riportato il contenuto della definizione che si conclude con una riga contenente solo un punto "."
Al termine delle definizioni trovate di nuovo un codice 250 con eventuali indicazioni dei tempi impiegati per reperire le informazioni.
Il codice 221 rappresenta i saluti da parte del server per la chiusura della connessione.

Altrettanto interessante può essere l'esecuzione di una richiesta senza specificare il dizionario da usare:
curl "dict://dict.org/d:door"
si ottiene il contenuto della definizione door per il Dizionario Inglese Collaborativo Internazionale che rappresenta il dizionario di default del server dict.org.

Per ottenere la lista dei dizionari disponibili in dict.org eseguire:
curl "dict://dict.org/show:db"
in risposta si ottiene un codice 110 con l'indicazione del numero di dizionari presenti e di seguito la lista indicante il codice e la descrizione di ognuno, termina con la solita riga con un solo punto, poi il 250 e il 221 di saluti.

Nella lista ottenuta vorrei che si notasse:
foldoc "The Free On-line Dictionary of Computing (20 July 2014)"
e trovo doveroso il comando:
curl "dict://dict.org/d:linux:foldoc"

Idea presa da http://www.thegeekstuff.com/2012/04/curl-examples/

2014-09-25

Aggiungere un disco fisico a VirtualBox

N.B. Le operazioni descritte possono essere pericolose, assicuratevi di capire cosa state facendo e non ritenetemi responsabile di eventuali danni ai vostri dati.

Utilizzo molte macchine virtuali e con queste molti dischi a loro volta virtuali che non sono altro che file presenti nel disco della macchina host.
A volte ho bisogno di utilizzare anche i dischi reali dalle macchine virtuali ed in questi casi ricorro al comando:
VBoxManage internalcommands createrawvmdk \
      -filename /percorso/file.vmdk \
      -rawdisk /dev/sdX
Questo comando aggiunge tra i dischi disponibili per le macchine virtuali un disco virtuale che offre l'accesso diretto al disco fisico.
Chiaramente la X che compare nell'ultimo parametro /dev/sdX va sostituita con la lettera del disco desiderato senza aggiungere il numero della partizione; in questo modo VirtualBox permetterà alla macchina virtuale di accedere al disco fisico e vedere tutte le partizioni in esso contenute.

Un uso frequente di questa funzionalità è quello di installazione da macchina virtuale su un disco fisico e solitamente lo effettuo tramite un adattatore USB.

Attenzione: l'utente che esegue il comando e quello che utilizzerà il disco dovrà avere i diritti necessari per poter accedere al disco fisico, quindi dovrà appartenere al corretto gruppo, di solito disk ma si può verificare con il comando:
ls -l /dev/sdX
ricordandosi di sostituire la lettera X con la lettera corrispondente, nell'output del comando il nome del gruppo si trova nel quarto campo, di seguito al nome del proprietario, di solito root e prima della coppia di numeri che rappresenta la periferica.
Per verificare se l'utente appartiene al gruppo richiesto si usa il comando:
id
che fornisce tutti gli identificativi dell'utente, il gruppo di default ed i gruppi di appartenenza. Nel caso in cui non sia presente il nome disk l'amministratore può aggiungerlo con il comando:
usermod -a -G disk <utente>
sostituendo <utente> con il nome dell'utente che vuole ottenere l'accesso.