Dev
-
Finalmente l'ho ordinato, mi sono deciso. Ancora non c'è stato nessun addebito sulla carta di credito... Cliccare sull'immagine per ingrandirla e unirsi pienamente alla sofferenza del mio portafogli.
-
JAWS 0.8.1 (il CMS sul quale si basa questo sito) è già disponibile da qualche giorno, ed è liberamente scaricabile dal sito ufficiale. Dato che sono tornato solo adesso dalle vacanze e prima delle vacanze ero preso da università, lavoro ed una irrefrenabile voglia di fare niente, la traduzione in Italiano non è inclusa in questa release. Chiunque fosse interessato può scaricare i file tradotti direttamente da qui. E' tutto comodamente impacchettato secondo le gerarchie delle directory, quindi basta decomprimere il file nella cartella giusta e tutto sarà magicamente sostituito. Anche se penso che sia praticamente impossibile fare danno con questa patch, io declino ogni responsabilità dalla sua applicazione.
Chi aggiornerà dalla versione 0.7.x a questa nuova 0.8.1 noterà che, a causa della rinnovata gestione dei temi, i vecchi layout sono leggermente imbruttiti. In particolar modo il mio adorato tema Bamboo si presenta così
Quindi ho pensato di applicare qualche modifica veloce ai CSS per renderlo molto simile a come era nella versione 0.7.x
Il risultato è sotto i vostri occhi, almeno fino a quando non cambierò tema... Se anche voi non vi ritenete soddisfatti del nuovo tema Bamboo, eccovi qua i CSS da sostituire in data/themes/bamboo. Come al solito declino ogni responsabilità per l'uso della modifica. I CSS hanno bisogno di una bella pulitina, quando avrò tempo ci penserò, anche se a dire il vero dipende da cosa hanno intenzione di fare gli sviluppatori. Non ho molta voglia di perderci tempo :P
-
Nel mio CdL in Scienza e Teoria dell'Informatica a Siena, il corso Laboratorio di Sistemi Operativi è diviso in due moduli, uno di questi funge da introduzione al magico mondo di Linux. Come prova finale dobbiamo sostenere un orale e realizzare uno script in bash. Anche se, ovviamente secondo me, un esame di questo tipo è di dubbia utilità (poco "hardcore" e troppo "man"), devo ammettere che ho passato i miei brutti quarti d'ora. In molti casi la bash non ti viene incontro, anzi se sei alle prime armi ti vuole proprio male.
Pubblico lo script, magari servirà a qualche anima in pena. Potete anche scaricarlo direttamente, dato che nel post il codice non sarà perfettamente leggibile
Ah, il tutto è stato fatto in poco tempo e ripeto di non essere un patito di scripting bash, quindi commentate pure per migliorie, bombe a mano, etc...etc...
#!/bin/bash
function usage {
echo
echo "Uso:"
echo "./newtrash file1 [file2...fileN] [-d num] [-s num,}num,{num] [-l] [-i] [-int]"
echo
echo "Opzioni:"
echo "-d num sposta nella directory trash tutti i file la cui"
echo " data di ultimo accesso sia antecedente a num giorni"
echo "-s num,}num2,{num3 sposta nella directory trash tutti i file la cui"
echo " dimensione sia num e/o >num e/o <num rispettivamente"
echo " Ogni numero esprime n blocchi da 512 byte"
echo "-l sposta nella directory trash tutti i link"
echo "-i sposta nella directory trash i files indicati senza"
echo " distinguere tra maiuscole e minuscole"
echo "-int sposta nella directory trash i files chiedendo"
echo " per ciuscuno conferma"
}
paramnumber=$(($#)) #Numero di parametri passati allo script da riga di comando
paramarray=($*) #Array contente i parametri passati allo script da riga di comando
counter=0
noexec=0 #flag per sapere quando devo stampare il messaggio per la conferma dell'eliminazione
filecounter=0
fori=0 #fori = flag per l'opzione -i. Mi serve per sapere quando stampare il messaggio
#per la conferma dell'eliminazione. Vedere la voce -int nel case
if [ ! -d "$HOME/trash" ] #Controlla se esiste la directory trash nella home
then #se non esiste viene creata
mkdir "$HOME/trash"
fi
while [ ! "`expr match "${paramarray[$(($filecounter))]}" '\(-\)'`" = "-" ] && [ $filecounter -lt $# ]
do #Conta quanti file sono stati passati
filecounter=$(( $filecounter + 1 )) #da riga di comando
done
if [ $filecounter -eq 0 ]
then
echo "E' necessario specificare almeno un file"
usage
exit
fi
counter=$filecounter
while [ $counter -ne $paramnumber ]
do
case "${paramarray[$counter]}" in
-d)
nextvalidparam=`expr match "${paramarray[$(($counter + 1))]}" '\([0-9]*[0-9]\)'`
if [ ! -z $nextvalidparam ] #E' necessario eseguire IF annidati in quanto
then #se una stringa è NULL la bash se ne ha a male
if [ $nextvalidparam = ${paramarray[$(($counter + 1))]} ] #e non esegue tutti i confronti
then
commandstring=" -atime +${paramarray[$(($counter + 1))]} "$commandstring
else
echo "Il parametro per l'opzione -d non è valido"
usage
exit
fi
else
echo "Il parametro per l'opzione -d non è valido"
usage
exit
fi
;;
-s)
sizevalidparam=${paramarray[$(($counter + 1))]} #Primo controllo sul parametro dell'opzione
sizevalidparam=${sizevalidparam/",}"/""} #Guardo se ci sono
sizevalidparam=${sizevalidparam/",{"/""} #caratteri strani oltre a quelli
sizevalidparam=${sizevalidparam/"}"/""} #che mi interessano
sizevalidparam=${sizevalidparam/"{"/""}
sizevalidparam=${sizevalidparam/","/""}
sizeparam=`expr match $sizevalidparam '\([0-9]*[0-9]\)'`
if [ ! -z $sizeparam ]
then
if [ "$sizevalidparam" = "$sizeparam" ]
then
sizevalidparam=${paramarray[$(($counter + 1))]} #Metto il parametro dell'opzione
sizevalidparam=${sizevalidparam/",}"/" "} #dentro un array per poter contare
sizevalidparam=${sizevalidparam/",{"/" "} #se ci sono al massimo tre opzioni
sizevalidparam=${sizevalidparam/"}"/" "}
sizevalidparam=${sizevalidparam/"{"/" "}
sizevalidparam=${sizevalidparam/","/" "}
array=( $sizevalidparam ) #Conversione in array per gestire meglio la stringa
if [ ${#array[@]} -le 3 ] # ${#array[@]} <- lunghezza dell'array
then #si possono accettare al massimo 3 argomenti per -s
sizeparam=${paramarray[$(($counter + 1))]}
if [ `expr match "$sizeparam" '\([0-9]\)'` ]
then
sizeparam=" -size "$sizeparam
fi
sizeparam=${sizeparam/",}"/" -size +"} #Formatto la stringa per renderla
sizeparam=${sizeparam/",{"/" -size -"} #adatta al comando "find"
sizeparam=${sizeparam/"}"/" -size +"}
sizeparam=${sizeparam/"{"/" -size -"}
sizeparam=${sizeparam/","/" -size "}
commandstring=$sizeparam" "$commandstring
else
echo "Parametri non validi per l'opzione -s"
exit
usage
exit
fi
else
echo "Parametri non validi per l'opzione -s"
usage
exit
fi
else
echo "Parametri non validi per l'opzione -s"
usage
exit
fi
;;
-l)
commandstring=" -type l "$commandstring #Per i links
;;
-int)
commandstring=$commandstring" -ok mv {} $HOME/trash ;" #Per chiedere conferma
noexec=1
fori=1 #nello spostamento
;;
*)
if [ "`expr match "${paramarray[$(($counter))]}" '\(-\)'`" = "-" ] && [ ${paramarray[$(($counter))]} != "-i" ]
then
echo "Il predicato "${paramarray[$(($counter))]}" non è valido"
usage
exit
fi
;;
esac
counter=$(( $counter + 1 ))
done
if [ $noexec -ne 1 ] #Se non è presente l'opzione -int viene aggiunta in fondo alla stringa
then #l'opzione -exec mv etc...etc.. per spostare i file senza conferma
commandstring=$commandstring" -exec mv {} $HOME/trash ;"
fi
counter=0
while [ $counter -ne $paramnumber ]
do
case "${paramarray[$counter]}" in
-i) #Trattato a parte perchè -iname richiede
noexec=2 #un parametro alla volta
for (( i=0;i<$filecounter;i++ )); do
commandstringtmp=""
commandstringtmp="find -iname "${paramarray[$((i))]}$commandstring
if [ $fori -eq 1 ]
then
echo "Sei sicuro di voler spostare il file "${paramarray[$((i))]}"? Premere 'S' o 's' per confermare"
fi
#echo $commandstringtmp
$commandstringtmp
done
;;
esac
counter=$(( $counter + 1 ))
done
if [ $noexec -ne 2 ]
then
for (( i=0;i<$filecounter;i++ )); do #Metto in testa alla stringa del comando i nomi dei file
commandstring=${paramarray[$((i))]}" "$commandstring #e successivamente il comando "find"
done
commandstring="find "$commandstring
if [ $noexec -eq 1 ] #Controllo per chiedere conferma nel
then # caso si sia usata l'opzione -int
echo "Sei sicuro di voler spostare i file specificati? Premere 'S' o 's' per confermare"
fi
#echo $commandstring
$commandstring
fi
|
Moblog
-
La mia prima foto!Lunedì 15 Settembre 2008 8:10pm
|