check it out!!!
Απο δω ξεκιναει καθε script, καλωντας το προγραμμα που θα το εκτελεσει. Οταν τρεχεις το προγραμμα αυτο τρεχει σε ενα καινουργιο bash.
#!/bin/bash
Με το συμβολο # δημιουργουμε σχολια.
#clean system and grub from old kernels that have been installed.
#the current script remove every kernel in your system and update the menu.lst
#
Η echo εμφανιζει το string στην κονσολα
echo "#############################"
echo " cleanKernels.sh "
echo "_-_-_-_-_-_-_-_-_-_-_-_-_-_-_"
Η εντολη ελεγχου if ελεγχει μια συνθηκη. Αυτη συντασετε :
if [ condition]; then
commands
fi
Η επιλογη -d ελεγχει αν το string ειναι directory και αν υπαρχει. Αν η συνθηκη ειναι αληθης θα δημιουργησει ενα φακελο log.
if [ ! -d "/home/j0ni/Documents/Scripts/Admin/logs" ] ;then
mkdir ~/Documents/Scripts/Admin/logs
fi
Αυτο που θελουμε ειναι να βρουμε ποιοι πυρηνες ειναι εγκατεστημενοι, να τους αποθηκευσουμε σε ενα αρχειο μεσα στο log directory, περνωντας ομως μονο τη στηλη που εμφανιζει την εκδοση. Καταρχην η dpkg-query -l θα δωσει μια λιστα με οτι βρει στη database της. Με διασωληνωση θα εξαιρεσουμε την τρεχουσα εκδοση, την οποια τρεχουμε. Η grep με την επιλογη -v κανει ακριβως αυτο. Η dpkg-query επιστρεφει μια λιστα πληροφοριων σε 3 στηλες (name,version,description). Για να απομονωσουμε μονο τη στηλη version oλα τα αποτελεσματα θα τα περασουμε απο το awk το οποιο θα μας επιστρεψει μονο τη δευτερη στηλη. Τελος τα αποτελεσματα θα αποθηκευτουν στο αρχειο με το ονομα που εχουμε ορισει με τη χρηση του '>' . Αυτο καθε φορα θα μας δειχνει τα αποτελεσματα της τελευταιας εκτελεσης( θα διαγραφει τα προηγουμενα). Αυτο γινεται γιατι μεσω του αρχειου θα σβησουμε τους πυρηνες και δεν θα μας χρειαζεται περαιτερο.
sudo dpkg-query -l 'linux-image-?.?.*'|grep -v `uname -r`|awk '{print $2}'>/home/j0ni/Documents/Scripts/Admin/logs/kernel-logs.txt
Η εντολη read διαβαζει απο την κονσολα οτι εισαγετε.
echo -e "do you want to erase these kernels?(yes or no)"
read yesorno
η for ειναι ελεγχος επαναληψης. Για να δειτε τη συνταξη και παραδειγματα δειτε εδω. Η for για μια σειρα μεταβλητων που οριζονται μετα το in παιρνει την περναει στην i. Ενα συντομο παραδειγμα ειναι :
$ for i in 1,2,3,4,5; do echo $i; done
1,2,3,4,5 #auto einai to output
Οπως βλεπετε και απο τον κωδικα στη λιστα μπορει να δωθει ενα αρχειο. Εδω συγκεκριμενα δινουμε την εξοδο της cat. Με αυτο τον τροπο στο i περναει καθε γραμμη του αρχειου και επειτα εκτελειται η εντολη διαγραφης.
for a in `cat /home/j0ni/Documents/Scripts/Admin/logs/kernel-logs.txt`; do
sudo apt-get -y remove $a
done
Επιτυχης εξοδος
exit 0
Οπως φαινεται η διαδικασια και οι εντολες ειναι απλες για κατι αρκετα χρησιμο. Εντωμεταξυ συμπεριελαβα σε ενα τοσο μικρο κομματι κωδικα χρησιμες εντολες, αλληλεπιδραση, απλη και γρηγορη λειτουργικοτητα. Αυτη ειναι η δυναμη των script. Αντιθετα θα επρεπε να παω στο synaptic και να διαλεξω τα πακετακια αυτα. Ευκολο και αυτο. Σε γραμμη εντολων θα ηθελα λιγο χρονο περισσοτερο. Τωρα με μια εντολη ολα στο μπαμ.
Οσοι θελουν μπορουν να το επεξεργαστουν και να μου στειλουν τη δικια τους εκδοση με τις δικιες τους δυνατοτητες.
No comments:
Post a Comment