Salve!
Come si dice, l'appetito vien mangiando. Vabbè, una cosa alla volta. Stasera, mentre scrivevo il mio "scriptino" quotidiano in bash, mi sono ritrovato di fronte ad una problematica apparentemente semplice. O forse era veramente semplice, ma sapete, sto invecchiando...
Comunque, immaginate di avere una variabile il cui valore sia costituito da tante stringhe, proprio come vi mostro nell'esempio sotto.
programmi="libreoffice vlc remmina liferea"
Bene, il discorso è questo, sto estrapolando da uno script lunghissimo, cerco di essere il più chiaro possibile, però.
In pratica voglio che lo script, ad un certo punto, controlli se nella variabile, di cui sopra, ci sia la stringa "libreoffice" e, solo se c'è, installi alcuni componenti aggiuntivi.
La domanda è la seguente: Come dobbiamo impostare il codice? Provate a dare una risposta senza leggere oltre.
Io ho fatto così:
programmi="libreoffice vlc remmina liferea"
echo "$programmi" | grep "libreoffice"
if [ $? -eq 0 ]; then
apt-get install libreoffice-help-it libreoffice-l10n-it libreoffice-gtk -y
else
echo "Niente da fare"
fi
La soluzione, in realtà, è veramente semplice, basta ricordarsi dell'esistenza del parametro speciale $?.
Cosa fa il $?
Restituisce lo stato dell’ultimo comando eseguito in foreground (primo piano).
Il risultato di $? può essere 0 o 1.
Restituisce 0 se è andato tutto bene, in caso contrario, restituisce 1.
Facciamo un esempio.
programmi="vlc remmina liferea"
Come potete vedere, ho eliminato la stringa "libreoffice" dalla variabile programmi. Il comando grep ovviamente non la trova e $? restituisce 1.
Se invece grep la trova, il $? restituisce 0, e dato che l'if confronta $? con lo 0, eseguirà il comando sperato.
Alla prossima!
martedì 27 gennaio 2015
mercoledì 14 gennaio 2015
Il Codice di Cesare [Brevi Esercizi]
Salve!
Uno degli esempi più significativi di crittografia a chiave simmetrica dell'età classica fu senza dubbio il cifrario di Cesare.
Come funziona codesto codice?
Si tratta di un cifrario a sostituzione monoalfabetica: Ogni lettera di una parola viene sostituita con un'altra in base ad una chiave.
Si dice che Cesare usasse come chiave K=3
Esempio:
Parola in chiaro: Luca
Parola cifrata: OAFD
Stabilito che la chiave è 3, la lettera L va sostituita con la lettera O, la lettera U con la lettera A, la lettera C va sostituita con la G e la lettera A con la lettera D. Chiave 3 significa che bisogna contare tre posti in avanti nell'alfabeto (italiano, nell'esempio), a partire dalla lettera data, che va esclusa dal computo.
Ho creato uno script in bash, semplice semplice, che cifra e decifra in base al cifrario di Cesare.
Alla prossima!
Uno degli esempi più significativi di crittografia a chiave simmetrica dell'età classica fu senza dubbio il cifrario di Cesare.
Come funziona codesto codice?
Si tratta di un cifrario a sostituzione monoalfabetica: Ogni lettera di una parola viene sostituita con un'altra in base ad una chiave.
Si dice che Cesare usasse come chiave K=3
Esempio:
Parola in chiaro: Luca
Parola cifrata: OAFD
Stabilito che la chiave è 3, la lettera L va sostituita con la lettera O, la lettera U con la lettera A, la lettera C va sostituita con la G e la lettera A con la lettera D. Chiave 3 significa che bisogna contare tre posti in avanti nell'alfabeto (italiano, nell'esempio), a partire dalla lettera data, che va esclusa dal computo.
Ho creato uno script in bash, semplice semplice, che cifra e decifra in base al cifrario di Cesare.
#!/bin/bash
#Cifrario di Cesare
#bit3lux@gmail.com
cifrare() {
#chiave=3
#Alfabeto di 26 lettere, senza spazi.
clear
alfabeto=$(echo {a..z} | sed 's/ //g')
k3="DEFGHIJKLMNOPQRSTUVWXYZABC"
read -p "digita il testo da cifrare: " testo
echo $testo | tr "[:upper:]" "[:lower:]" | tr "$alfabeto" "$k3"
}
decifrare() {
clear
alfabeto=$(echo {a..z} | sed 's/ //g')
k3="DEFGHIJKLMNOPQRSTUVWXYZABC"
read -p "digita il testo da decifrare: " testo
echo $testo | tr "[:lower:]" "[:upper:]" | tr "$k3" "$alfabeto"
}
clear
echo "Per cifrare digita 0, per decifrare digita 1."
echo
read scelta
if [ $scelta == 0 ]
then
cifrare
echo
elif [ $scelta == 1 ]
then
decifrare
echo
else
clear && echo "Opzione non valida, per scegliere digita 0 o 1"
echo
fi
exit 0
Cifrare |
Decifrare |
martedì 6 gennaio 2015
Pillole di OpenSource #2
Salve!
- Anzitutto vi volevo segnalare un bellissimo post di Claudio Romeo, "Linus, la rivista compie cinquant'anni e inaugura l'edizione in PDF". Claudio, che è un tipo assai tosto, parla anche dei social DRM...vabbè, sottoscrivo tutto ciò che dice sui DRM. Grande Claudio!
- Lo sviluppo di Lubit 4 - 64 bit sta richiedendo più tempo di quello preventivato, ragion per cui il rilascio sarà posticipato almeno di due settimane. Inizialmente si pensava fosse pronta per il 9 gennaio, vabbè...
- Una interessantissima recensione di OpenSuse, nota distro GNU/Linux, la trovate sul blog di Marco Giannini. L'articolo è stato scritto da Enrico, e a me è piaciuto molto (il post, intendo). E che ben vengano le distro sponsorizzate da grosse aziende!!! Qui.
- Un indovinello, quanti utenti GNU/Linux servono per svitare una lampadina? La risposta la trovate nel post di Dario Cavedon, qui :)
- Ah, ecco, quando si dice una guida con gli attributi... OpenVPN con assegnazione IP statici
- I propositi del mio caro amico Juhan per il 2015. Qui. Solo che quando ha scritto il post non ha considerato che sarebbero potute arrivare mie proposte...prossimamente vi sveleremo ogni cosa :) Comunque, Juhan è un grande!!!
- Un corso con i baffi è quello che sta portando avanti Michele Adduci. Il corso di Modern C++, il cui indice lo trovate qui. Ma lo state seguendo, vero?? Dal numero delle visite, pare proprio di si. :)
- È stato tradotto in italiano il numero 82 della rivista Full Circle (notizia che avrei dovuto pubblicare un mese fa, ma me ne sono dimenticato). Qui.
Iscriviti a:
Post (Atom)