sabato 31 ottobre 2015

Eliminare i file di una directory contenenti una parola determinata.

Salve!

Supponiamo che in una directory, ad esempio in Documenti, abbia tantissimi file di testo e che voglia eliminare solo quelli che contengono, nel testo e non nel titolo, una determinata parola, come fare? Se si vuole evitare di cercare prima la parola in ciascuno di esso e poi eliminarli, si può usare uno script facile facile. ;)

#!/bin/bash

read -p "Quale parola vuoi cercare? " stringa
for file in $(grep -l $stringa *); do
    rm -i $file;
done
exit 0

Ovviamente lo script, prima di eliminare un qualsiasi file, chiede il consenso. Nel mio caso ho eliminato tutti i file nel cui testo compariva la parola Fedora. (non ho niente contro Fedora, eh, è solo un esempio) ;)


Alla prossima! 

giovedì 29 ottobre 2015

Creare una copia di backup di un file

 Salve!

Prima di modificare un qualsiasi file di configurazione dovrebbe essere necessario farne una copia di backup.

In questo post vi dirò un modo estremamente semplice, ma anche elegante, di creare una copia di backup di un file.

Poniamo il caso che il file da modificare si trovi nella directory Documenti

$ cd Documenti

e che si chiami file.conf

Uno dei modi per creare una copia di backup è il seguente

$ cp file.conf{,.bak}


La semplicità è sempre un dopo, mai un prima.

Alla prossima! 

mercoledì 28 ottobre 2015

Come tee nessuno!

Salve!

Oggi parliamo, ma solo per un esempio, del comando tee. Per approfondire vi invito ad andare sulla pagina di Wikipedia.

$ risultato=$(echo "Come tee nessuno"| tee  >(sed 's/ /_/g') >(sed  's/\(.*\)/\U\1/') >(rev))

$ echo "$risultato"

In questo caso l'output del comando "echo" viene passato contemporeaneamente, grazie a tee, a tre comandi diversi, che lo elaborano e ne restituiscono i rispettivi risultati:
1. Il primo sed aggiunge l'underscore.
2. Il secondo sed converte la frase da minuscolo in maiuscolo.
3. Il comando rev inverte i caratteri della frase.


Alla prossima.

Sequenza di numeri [bash]

Salve!

Espansione di parentesi graffe VS il comando Seq.

$ echo {1..5} | tr ' ' '\n'
$ seq 1 5

$ echo {1..5}
$ seq -s ' ' 1 5
dove -s sta per output separator.

$ echo {001..5}
$ seq -s " " 001 5

$ echo -e {0..5}"\xc2\xb0"
$ seq -w  0 5 | sed  's/$/\xc2\xb0/' | tr "\n" " "; echo
"\xc2\xb0" = simbolo del grado

Incremento positivo
$ echo {1..10..2}
$ seq -s " " 1 2 10

Incremento negativo
$ echo {10..1..2}
$ seq -s " " 10 -2 1


E poi...
$ echo {a..z}
$ echo {a..z..3}




E ancora
$ echo -e {Lubit,Linux}"\xc2\xae"
\xc2\xae = simbolo del marchio registrato.

Alla prossima!

venerdì 23 ottobre 2015

Lubit e internet per tutti!

Dopo un lungo periodo di "riposo" rieccomi qui con un breve, davvero breve, articolo che ritengo possa essere utile.

Probabilmente molti di voi avranno già sperimentato la soluzione che vado a mostrarvi, ma comunque, siccome è tornata utile a me in un periodo di difficoltà, preferisco scrivere due righe per condividerla.

Problema: 
mi trovo fuori casa , non ho collegamento internet wifi e dispongo solo di una chiavetta usb per collegare il pc.... ok e se volessi collegare anche il mio smartphone , tablet o un secondo pc utilizzando la stessa connessione??

Lubit ha già tutto quello che ci serve per risolvere il problema!

Parto dal presupposto che sia già stata configurata la connessione tramite chiavetta , fatto questo basterà creare una rete wifi in modo da far diventare il pc un access point.

In pratica si fa così, clicchiamo con tasto sinistro del mouse sul network manager ( l'iconcina in alto a destra che rappresenta il collegamento), selezioniamo "crea nuova rete Wi-Fi",  compiliamo il form col nome che vogliamo dare alla nuova rete, il protocollo di sicurezza e la chiave di protezione della rete (naturalmente possiamo anche scegliere nessuna sicurezza per avere una rete aperta) e confermiamo tutto.
A questo punto la rete è stata creata, in alto si nota l'attività di configurazione e avvio della rete, pochi secondi e abbiamo pronta la nuova rete wi-fi quindi possiamo selezionarla sui nostri dispositivi che cosi' avranno accesso alla rete, la stessa che usa il pc collegato direttamente con la chiavetta.

La rete non si avvia automaticamente quindi dopo aver avviato il pc dobbiamo selezionare la rete creata dalla lista delle reti disponibili.

L'ho detto, semplice ma utile! :)

A presto.
Saluti!

Ricerca case-insensitive e sostituzione con sed.

Salve!

Supponiamo di avere i seguenti dati contenuti nel file prova

luigi Marco luCa
Nino lucA MassImo
Vincenzo Andrea LuCA
Nino LUca Ivo Neo
Luigi LUCA Ivo Rob


Come potete notare il nome Luca è stato scritto in modo non corretto.

Il nostro intento è quello di fare una ricerca case-insensitive e correggere il nome in questione.

Perchè si possa avere la ricerca case-insensitive e la sostituzione in modo globale, si scrive così: 

$ sed 's/luca/Luca/Ig' prova

In altri termini, diciamo a sed di sostituire le stringhe luCA, LuCA, LUCa e LUCA con la stringa Luca.


Alla prossima!


mercoledì 21 ottobre 2015

Archivio compresso criptato [Brevi Esercizi]

Salve!

Oggi creamo un archivio compresso criptato. In passato abbiamo già parlato di archiviazione e compressione, perciò non mi dilungo sull'argomento.

Per fini pratici e a mo' di esempio, anzitutto mi creo la directory "prova"

$ mkdir prova

ora mi sposto al suo interno

$ cd prova

E all'interno di essa creo nove file.

$ touch file{01..09}.txt

$ ls

Ora creo l'archivio compresso criptato

tar czpf - file* | gpg --symmetric --cipher-algo aes256 -o archivio.tar.gz.gpg

Cancello i file.txt (operazione non necessaria e, talvolta, anche pericolosa)

$ rm file*

$ ls



Per decriptare e decomprimere l'archivio:

gpg -d archivio.tar.gz.gpg | tar xzf - 


Ovviamente per decriptare servirà la passphrase che abbiamo creato nella fase di criptazione.

Penso meritino un approfondimento sia la GPG che l'algoritmo AES.
Alla prossima. 

venerdì 16 ottobre 2015

Myman, il clone di Pac-Man, su Lubit

Myman è un videogioco in modalità testuale ispirato a Pac-Man, il famoso gioco arcade degli anni '80.

Per averlo su lubit:

$ sudo apt-get install build-essential

$ sudo apt-get install libncurses5-dev groff

$ wget http://downloads.sourceforge.net/project/myman/myman-cvs/myman-cvs-2009-10-30/myman-wip-2009-10-30.tar.gz

$ tar xvfvz myman-wip-2009-10-30.tar.gz

$ cd myman-wip-2009-10-30/

$ ./configure

$ make

$ sudo make install

Per giocare:

$ myman



Pagina del progetto: http://myman.sourceforge.net/

Etichetta 3D [Convert]

Salve!

Anzitutto scarichiamo il font Candice. Una breve digressione, si dice il font o la font? Ho trovato la soluzione definitiva, almeno spero, qui

Ovviamente possiamo usare i font già presenti su lubit. Per avere la lista completa,

$ convert -list font

Posto che abbiamo scaricato il font Candice nella cartella Scaricati,

$ cd Scaricati

Dopo aver scompattato l'archivio zip (tasto dx del mouse e estrai qui), spostiamo il file nella directory /usr/share/fonts/truetype/

$ sudo su

$ mv CANDY.TTF /usr/share/fonts/truetype/

$ exit

Ora bisogna aggiornare la cache dei font

$ fc-cache -f -v

Infine lo script, il cui nome è 3d.sh

#!/bin/bash

convert -size 480x80 xc:black -font Candice-Regular -pointsize 78 \
              -fill white   -annotate +25+65 'Lubit Linux' \
              -shade 140x45  lubit_linux.jpg

exit 0

Inutile dire che possiamo cambiare qualsiasi parametro come meglio ci aggrada e che tutto è estremamente intuitivo.


Risultato.



Alla prossima!

P.S.1: Chi volesse sbizzarrirsi con imagemagick, vada a questa pagina. Qui  
P.S.2: Avete installato Lubit 6?

domenica 4 ottobre 2015

Leggi fin dove ti dico io [sed, awk]

Immaginiamo di avere un testo e, individuata una parola, vogliamo che sed o awk legga (e ci restituisca in output) fino a quella parola, compresa o esclusa. O meglio, fino a quella riga in cui è compresa quella parola (sarebbe meglio dire stringa, eh).

Testo di esempio. [Poesia.txt]

La donzelletta vien dalla campagna,
In sul calar del sole,
Col suo fascio dell’erba; e reca in mano
Un mazzolin di rose e di viole,
Onde, siccome suole,
Ornare ella si appresta
Dimani, al dì di festa, il petto e il crine.
Siede con le vicine
Su la scala a filar la vecchierella
Incontro là dove si perde il giorno;
E novellando vien del suo buon tempo,
Quando ai dì della festa ella si ornava,
Ed ancor sana e snella
Solea danzar la sera intra di quei
Ch’ebbe compagni dell’età più bella.


Primo esempio.

Voglio che awk legga fino alla stringa "crine"

$ awk '{print} /crine/ {exit}' Poesia.txt


 Per ottenere lo stesso risultato con sed, avremmo dovuto scrivere:

$ sed '/crine/q' Poesia.txt


Secondo esempio.

Voglio che awk legga fino alla stringa "crine", escludendo, però, la riga che la contiene.

$ awk '/crine/ {exit} {print}' Poesia.txt


 Per ottenere lo stesso risultato con sed, avremmo dovuto scrivere:

 $ sed '/crine/Q' Poesia.txt

Alla prossima!