Τρόποι εγκατάστασης προγράμματος στο Ubuntu / Mint 1. Με το Ubuntu Software Center (ή το αντίστοιχο εργαλείο του Mint) 2. Με το synaptic 1
3. Εγκατάσταση μπορεί να γίνει και με χρήση της μεθόδου AptURL. Π.χ. στη γραμμή διευθύνσεων του προγράμματος πλοήγησης εισάγουμε apt:geany Με τον τρόπο αυτό θα γίνει εγκατάσταση του προγράμματος geany. Πιθανόν ο δημιουργός μίας ιστοσελίδας να έχει δημιουργήσει το κατάλληλο link: <a href="apt:geany">click here</a> και ο χρήστης να μπορεί να κάνει εγκατάσταση του πακέτου με ένα κλικ. Μπορεί να γίνει και η εγκατάσταση πολλών προγραμμάτων ταυτόχρονα, π.χ.: <a href="apt:package1,package2,package3">click here</a> και ο χρήστης να μπορεί να κάνει εγκατάσταση του πακέτου με ένα κλικ. Για να μπορεί να γίνει χρήση του AptURL θα πρέπει το πρόγραμμα πλοήγησης να υποστηρίζει το πρωτόκολλο APT. Εάν π.χ. ο firefox έχει εγκατασταθεί στο σύστημά μας από τα αποθετήρια, τότε εξ ορισμού το υποστηρίζει. Αλλιώς θα πρέπει να γίνει ενεργοποίηση της δυνατότητας αυτής (https://help.ubuntu.com/community/apturl). 4. Αν δεν υπάρχει ένα πρόγραμμα στα αποθετήρια (repositories) και δεν μπορεί να εγκατασταθεί με τους προηγούμενους τρόπους, τότε αν υπάρχει διαθέσιμο για download το deb αρχείο (για την έκδοση του Ubuntu/Mint που έχουμε), τότε μπορούμε να το ανοίξουμε (π.χ. με διπλό κλικ) και να το κάνουμε εγκατάσταση με τον Package Installer με γραφικό τρόπο (εργαλείο GDebi): 2
Εναλλακτικά μπορούμε να το κάνουμε εγκατάσταση από την γραμμή εντολών με την εντολή apt-get: sudo apt-get install <όνομα πακέτου> Αν το πακέτο δεν εξαρτάται από επιπλέον αρχεία και βιβλιοθήκες, μπορεί απευθείας να εγκατασταθεί με sudo dpkg -i <όνομα πακέτου> Δηλαδή το dpkg δεν μπορεί να επιλύσει και να εγκαταστήσει αυτόματα αλληλοεξαρτήσεις των πακέτων που εγκαθιστούμε. Στην ουσία το apt-get κάνει χρήση του dpkg για την εγκατάσταση των πακέτων, αφού πρώτα ελέγξει για τυχόν αλληλοεξαρτήσεις. 5. Ίσως το πακέτο να υπάρχει διαθέσιμο σε μορφή rpm. Η μορφή rpm είναι κατάλληλη για διανομές όπως το Fedora, το RedHat και το Mandriva. Υπάρχει εφαρμογή με το όνομα alien που ίσως μπορεί να μετατρέψει το rpm πακέτο μας σε μορφή deb (https://help.ubuntu.com/community/rpm/alienhowto). 6. Αν δεν υπάρχει ένα πρόγραμμα σε μορφή πακέτου που είναι έτοιμο για εγκατάσταση, θα πρέπει να βρούμε τον κώδικά του (source). Συνήθως ο κώδικας είναι σε μορφή πακέτου tar και συμπιεσμένο είτε σε μορφή gz είτε σε μορφή bz2. Θα πρέπει αφού κατεβάσουμε το αρχείο σε έναν φάκελο να το κάνουμε αποσυμπίεση. Η αποσυμπίεση γίνεται με > tar -xzvf tarballname.tar.gz για αρχεία gz ή > tar -xjvf tarballname.tar.bz2 για αρχεία bzip2. Εναλλακτικά, μπορούμε να αποσυμπιέσουμε το αρχείο με > gunzip tarballname.tar.gz ή > bunzip2 tarballname.tar.bz2 και μετά δίνουμε > tar -xvf tarballname.tar Στη συνέχεια θα πρέπει να διαβάσουμε προσεκτικά τις οδηγίες εγκατάστασης (συνήθως αρχείο INSTALL ή README.TXT). Συχνά για την εγκατάσταση δίνουμε τις εντολές >./configure > make > make install 3
αλλά πάντοτε εξαρτάται από το συγκεκριμένο πρόγραμμα και καλά είναι να ακολουθήσουμε τις οδηγίες χρήσης. Η αποσυμπίεση (ή και συμπίεση) αρχείων μπορεί αντί να γίνει με την εντολή tar, να γίνει με γραφικό τρόπο με χρήση π.χ. του προγράμματος Archive Manager (στο μενού Accesories): Με > zcat -f /var/log/dpkg.log* fgrep " install " sort μπορούμε να πάρουμε ταξινομημένα (σε αύξουσα σειρά ως προς την ημερομηνία) τα προγράμματα τα οποία έχουν γίνει εγκατάσταση. Αυτό γίνεται ελέγχοντας το αρχείο καταγραφής (log) για το dpkg. Η εντολή zcat χρησιμοποιείται αντί για την cat γιατί τα αρχεία είναι συμπιεσμένα. Αν θέλουμε τα πιο πρόσφατα 10 προγράμματα που έγιναν εγκατάσταση, μπορούμε να δώσουμε: > zcat -f /var/log/dpkg.log* fgrep " install " sort tail -10 4
Προγραμματισμός με Geany 5
6
7
Μεταγλώττιση C/C++ Έστω ότι έχουμε ένα αρχείο με το όνομα test1.c το οποίο περιέχει πρόγραμμα C. Τότε δίνοντας > gcc test1.c μεταγλωττίζει το πρόγραμμα και αν δεν υπάρχουν λάθη τότε δημιουργεί ένα αρχείο με το όνομα a.out το οποίο περιέχει το εκτελέσιμο πρόγραμμα. Δίνοντας >./a.out μπορούμε να εκτελέσουμε το πρόγραμμα. Μπορούμε να ορίσουμε το όνομα που θα έχει το εκτελέσιμο πρόγραμμα δίνοντας > gcc test1.c -ο program1 ώστε το εκτελέσιμο αρχείο να λέγεται program1 αντί για a.out. Εάν έχουμε ένα πρόγραμμα το οποίο αποτελείται από πολλά.c αρχεία, τότε αρκεί απλά να γράψουμε τα ονοματά τους το ένα δίπλα στο άλλο έτσι ώστε να τα κάνει όλα μεταγλώττιση και να παράγει το εκτελέσιμο αρχείο. Για αρχείο που περιέχει κώδικα C++ έχουμε συνήθως επέκταση.cpp και δίνουμε > g++ test2.cpp -o program2 8
CodeBlocks (http://www.codeblocks.org/) 9
Eclipse 10
NetBeans 11
Shell (Κέλυφος) Για να δούμε τα shells που έχουμε εγκατεστημένα > cat /etc/shells Για την έκδοση του Bash > bash version Για να δούμε το default shell ls -l /bin/sh echo echo hello ή echo 'hello' εμφανίζει ένα μήνυμα στην οθόνη. echo -e Hello\nWorld Κάνει αλλαγή γραμμής (\n). Μεταβλητές X=10 Θέτει Χ=10 echo $X Εμφανίζει την τιμή του Χ let X=$X+1 Αλλαγή της τιμής του Χ. Το κάνει 11 X=$X+1 Κάνει το Χ ίσο με 11+1 (όχι ίσο με 12!) echo X Εμφανίζει Χ echo '$X' Εμφανίζει $Χ echo $X Εμφανίζει την τιμή του Χ 12
export X Κάνουμε export έτσι ώστε η τιμή της μεταβλητής να είναι ορατή και στα υποκελύφη ή γενικά τα υποπρογράμματα που έχουμε echo $RANDOM Εμφανίζει έναν τυχαίο αριθμό let Y=$RANDOM%10 Δίνει στο Υ μία τυχαία τιμή ανάμεσα στο 0 και το 9 (ο τελεστής % υπολογίζει το υπόλοιπο της διάιρεσης) echo $PATH Εμφανίζει την τιμή της μεταβλητής συστήματος PATH echo $HOME Εμφανίζει την τιμή της μεταβλητής συστήματος HOME echo $SHELL Εμφανίζει το shell που χρησιμοποιούμε. echo $HOSTNAME Εμφανίζει το όνομα του host. Υπάρχει αποθηκευμένο στο /etc/hostname και άρα μπορούμε να το δούμε και με cat /etc/hostname echo $PS1 Εμφανίζει τα σύμβολα του prompt. PS1= > Αλλάζει τα σύμβολα του prompt. env Βλέπουμε όλες τις μεταβλητές του συστήματος Τα τελευταία χρόνια χρησιμοποιείται αρκετά το DASH ως προεπιλεγμένο για να εκτελεί τα scripts γιατί είναι πιο μικρό και γρήγορο. Αντίθετα στο τερματικό συνήθως χρησιμοποιείται το BASH. Αυτό μπορούμε να το διαπιστώσουμε ελέγχοντας τις εντολές: > echo $SHELL > ls -l /bin/sh Το προεπιλεγμένο shell καθορίζεται με την παράμετρο -s της εντολής useradd και μπορεί να τροποποιηθεί επίσης με την παράμετρο -s της εντολής usermod. Σειρά εκτέλεσης των αρχείων που περιέχουν εντολές για το κέλυφος: 13
Αρχείο script1 #!/bin/sh date gedit gimp Τρόποι εκτέλεσης: Δίνουμε../script1 ή source./script1 Το κάνουμε εκτελέσιμο με chmod a+x script1 και μετά το εκτελούμε με./script1 14
Το αρχείο script1 εκτελεί την εντολή date εκτελεί την εντολή gedit όταν κλείσουμε την εντολή gedit τότε εκτελεί το gimp όταν κλείσουμε και το gimp τότε μπορούμε να δώσουμε άλλη εντολή στο shell Αρχείο script2 #!/bin/sh date gedit & gimp Το αρχείο script2 εκτελεί την εντολή date εκτελεί την εντολή gedit εκτελεί ταυτόχρονα το gimp όταν κλείσουμε και το gimp τότε μπορούμε να δώσουμε άλλη εντολή στο shell Αρχείο script3 #!/bin/sh date gedit & gimp & Το αρχείο script3 εκτελεί την εντολή date εκτελεί την εντολή gedit εκτελεί ταυτόχρονα το gimp μπορούμε να δώσουμε άλλη εντολή στο shell χωρίς να έχουμε κλείσει τα προηγούμενα προγράμματα 15
Κανονικές Εκφράσεις Ας υποθέσουμε ότι θέλουμε να εξάγουμε από κάποια συλλογή κειμένων τις γραμμές που περιέχουν την λέξη «Περικλής» γράφοντας μία κανονική έκφραση. Καταρχήν, η ακολουθία χαρακτήρων που αναζητούμε θα περιέχεται μέσα σε «/», όπου και θα περικλείουμε για το υπόλοιπο της ενότητας αυτής τις ΚΕ. Έτσι η κανονική έκφραση που θα γράφαμε για την εξαγωγή γραμμών που περιέχουν τη λέξη «Περικλής» θα ήταν: /Περικλής/ Γίνεται αναζήτηση σε κάθε γραμμή της συλλογής κειμένων για ένα «Π» το οποίο να ακολουθείται από «ε», από «ρ», από «ι», «κ», «λ», «ή», «ς». Πρέπει να είναι σαφές ότι τα μικρά γράμματα είναι διαφορετικά από τα κεφαλαία (case sensitive), και έτσι αν θέλουμε «Περικλής», με το πρώτο γράμμα δηλαδή κεφαλαίο, δεν θα πρέπει να γράψουμε «περικλής». Έτσι η ΚΕ: /π/ είναι διαφορετική από την ΚΕ: /Π/. Η πρώτη στήλη της λίστας που ακολουθεί δίνει την ΚΕ όπως πρέπει να δοθεί, η δεύτερη το τι αναζητείται, και η τρίτη ένα παράδειγμα γραμμής που θα μπορούσε να εξαχθεί από μία συλλογή κειμένων με υπογραμμισμένη την ακολουθία χαρακτήρων που ταίριαξε με την ΚΕ που δόθηκε: /Περικλής/ Περικλής Τότε που ο Περικλής ήταν.. Παρακάτω θα περιγράψουμε με λίγα λόγια τα ειδικά σύμβολα που χρησιμοποιούνται στις ΚΕ και θα δώσουμε λίγα παραδείγματα για την χρήση τους. Έτσι στις ΚΕ μπορούμε να ορίσουμε το «ή» μεταξύ χαρακτήρων κλείνοντας τους μεταξύ των «[«και «]». Αν θέλουμε να πούμε «δ» ή «Δ», δίνουμε την ΚΕ: /[δδ]/ : /[δδ]/ δ ή Δ Χρησιμοποιούσαν δόρυ. /[δδ]όρυ/ δόρυ ή Δόρυ Χρησιμοποιούσαν δόρυ. /[ηιυ]/ η, ι, ή υ Χρησιμοποιούσαν δόρυ. /[1234567890]/ όποιο ψηφίο Πριν 3.000 χρόνια. 16
Μέσα στα «[» και «]» μπορεί να χρησιμοποιηθεί και το «εύρος». Δηλαδή, αν θέλουμε να πούμε «οποιοδήποτε ψηφίο του δεκαδικού συστήματος» αντί να γράψουμε /[0123456789]/ μπορούμε να πούμε /[0-9]/. Το ίδιο και για τα γράμματα της αλφαβήτου. Θα πρέπει να επισημάνουμε ότι τα φωνήεντα με τόνο ή διαλυτικά θα πρέπει να ορίζονται ξεχωριστά αφού για τον υπολογιστή αντιστοιχούν σε διαφορετικούς χαρακτήρες: /[Α-Ω]/ όποιο κεφαλαίο (άτονο) Το γλυπτό βρέθηκε. /[α-ω]/ όποιο μικρό (άτονο) Η μάχη χάθηκε. /[0-9]/ όποιο ψηφίο Τον 5 ο αιώνα. Το σύμβολο «^» (carret), όταν χρησιμοποιείται σαν πρώτος χαρακτήρας μέσα στις «[» και «]» σημαίνει «όχι». Σε οποιαδήποτε άλλη θέση μέσα στα «[«και «]» σημαίνει τον εαυτό του και μπορεί να χρησιμοποιηθεί ώστε να ταιριάξουμε κάτι στην αρχή μίας γραμμής: /[^α]/ όχι «α» Το μικρότερο άγαλμα. /[^Α-Ω]/ όχι κεφαλαίο Το μικρότερο άγαλμα. /[^οο]/ όχι «ο» ή «Ο» Το μικρότερο άγαλμα. /[η^ι]/ «η» ή «^» ή «ι» γράφοντας «^». Όταν ο χαρακτήρας «?» έπεται κάποιου άλλου χαρακτήρα, σημαίνει ότι ο χαρακτήρας που προηγείται μπορεί να υπάρχει αλλά μπορεί και όχι, ή αλλιώς μηδέν ή μία εμφάνιση του χαρακτήρα που προηγείται: /σπίτια?/ «σπίτι» ή «σπίτια» Το μεγαλύτερο σπίτι. /Αθήνας?/ «Αθήνα» ή «Αθήνας» Στην περιοχή της σημερινής Αθήνας. 17
Το αστέρι του Kleene «*» (Kleene, 1956) χρησιμοποιείται για να δηλώσει μηδέν ή παραπάνω εμφανίσεις του χαρακτήρα που προηγείται: /ε*/ 0 ή παραπάνω «ε» Εεεε! /[αε]*/ 0 ή παραπάνω «α» ή «ε» Αααεε! / [0-9]*/ 0 ή παραπάνω ψηφία Το 330π.χ. Το «+» του Kleene χρησιμοποιείται για να δηλώσει μία ή παραπάνω εμφανίσεις του χαρακτήρα που προηγείται: /[0-9]+/ ένα ή παραπάνω ψηφία Γύρω στο 450. /Αμε+!/ «Αμε!» ή «Αμεε!» ή «Αμεεε!» Αμεεεε! Η τελεία «.» χρησιμοποιείται για να δηλώσει οποιοδήποτε χαρακτήρα (wildcard) εκτός του carriage return: /μικρ.ς/ «μικρής» ή «μικρός» ή..υπήρξε από τις πιο μικρές.. /ξανά.*ξανά/ το «ξανά» δύο φορές στην γραμμή Έγινε ξανά και ξανά. Το «^» δηλώνει αρχή γραμμής, ενώ το «$» τέλος γραμμής: /^Μετά/ γραμμές που αρχίζουν με «Μετά» Μετά την μάχη.. /αιώνα$/ γραμμές που τελειώνουν με «αιώνα»..περασμένου αιώνα /^Επίλογος$/ γραμμές που περιέχουν μόνο «Επίλογος» Επίλογος Το «\b» δηλώνει όριο λέξης, ενώ το «\Β» μη όριο λέξης: 18
/\bανά\b/ «ανά» αλλά όχι «ανάμεσα»..ανά τον κόσμο... /\bυπό\b/ «υπό» σαν πρώτο συνθετικό Η πρώτη υπόσχεση δόθηκε.. Το διαζευκτικό (disjunction) χρησιμοποιείται για να δηλώσει το «ή» μεταξύ ακολουθιών χαρακτήρων: /μάχη πόλεμο/ «μάχη» ή «πόλεμος» Στη δεύτερη μάχη.. /χρυσ(ών ούς)/ χρυσών ή χρυσούς..χρυσών κοσμημάτων.. Η σειρά που ακολουθεί δίνει τις προτεραιότητες μεταξύ των τελεστών: Παρένθεση () Μετρητές (counters) * +? [] Ακολουθίες και τα «^» και «$» (anchors) τέλος ^εγώ εσείς$ To διαζευκτικό Πρέπει να σημειώσουμε ότι οι ΚΕ «απλώνονται» όσο μπορούν κατά το ταίριασμα (patterns are greedy). Έτσι η ΚΕ: /[α-ω]*/ εφαρμοσμένη στην γραμμή «μετά το τέλος» ταιριάζει στο «μετά» και όχι στο «μ» το «με» ή το «μετ». Κάποιοι επιπλέον τελεστές που θα έπρεπε να αναφερθούν είναι οι παρακάτω: \n νέα γραμμή (newline) \t tab {n} n εμφανίσεις του χαρακτήρα ή ακολουθίας χαρακτήρων που προηγείται {n,m} από n έως m εμφανίσεις του χαρακτήρα ή ακολουθίας χαρακτήρων που προηγείται {n,} τουλάχιστον n εμφανίσεις του χαρακτήρα ή ακολουθίας χαρακτήρων που προηγείται 19
/Α{3}/ 3 Α ΑΑΑ! /!{1,4}/ 1 μέχρι 4! Ααα!!! /[0-9]{2,} πάνω από 2 ψηφία Πριν το 600 π.χ.. Επίσης, να σημειώσουμε ότι τo «\» άρει την ειδική ερμηνεία των συμβόλων. \* * Τ*Ε*Λ*Ο*Σ \.. Το 340 π.χ. \?? Any comments? \n newline \t tab 20