ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΤΗΝ ΥΠΟΛΟΓΙΣΤΙΚΗ ΔΙΑΧΕΙΡΙΣΗ ΜΕΓΑΛΟΥ ΟΓΚΟΥ ΔΕΔΟΜΕΝΩΝ Γρηγόριος Αμούτζιας Πανεπιστήμιο Θεσσαλίας
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΤΗΝ ΥΠΟΛΟΓΙΣΤΙΚΗ ΔΙΑΧΕΙΡΙΣΗ ΜΕΓΑΛΟΥ ΟΓΚΟΥ ΔΕΔΟΜΕΝΩΝ Γρηγόριος Αμούτζιας Πανεπιστήμιο Θεσσαλίας
Γρηγόριος Αμούτζιας
Επικ. Καθηγητής Βιοπληροφορικής στη Γενωμική
Τμήμα Βιοχημείας & Βιοτεχνολογίας,
Πανεπιστήμιο Θεσσαλίας
Εισαγωγή στην
Πληροφορική και
εφαρμογές της στις
Βιοεπιστήμες
Προτεινόμενα συγγράμματα
Τι είναι Πληροφορική
• η επιστήμη, η οποία ασχολείται με τους Η/Υ και τις εφαρμογές τους.
• Κλάδοι:
– Επιστήμη των Υπολογιστών (Computer Science)
– Τεχνολογία Πληροφοριών (Information Technology)
– Πληροφοριακά Συστήματα (Information Systems)
ΔΕΔΟΜΕΝΑ ΠΛΗΡΟΦΟΡΙΑ ΓΝΩΣΗ
Τι είναι ο Υπολογιστής;
• Μια προγραμματιζόμενη, ηλεκτρονική, ψηφιακή μηχανή γενικού σκοπού με
μνήμη
• Γενικού σκοπού γιατί: η χρήση του ποικίλλει και ορίζεται από τα προγράμματά του,
τα οποία μπορούν να ανανεώνονται ή/και μεταβάλλονται.
Η οθόνη
• Υλικό (hardware)
ονομάζουμε τα μηχανικά
και απτά μέρη ενός Ο εκτυπωτής
υπολογιστή.
Το ποντίκι
Το πληκτρολόγιο
Και άλλα
Υπολογιστή;
Τα συστήματα διαχείρισης βάσεων
δεδομένων
Και άλλα
Τι είναι ένα Υπολογιστικό Σύστημα;
• Επεξεργασία (Processing)
– Εκτέλεση προγραμμάτων και εντολών
– Χωρίζεται σε Αριθμητική και Λογική Μονάδα (εκτέλεση πράξεων) και
Μονάδα Ελέγχου (συντονισμός λειτουργίας του υπολογιστή)
• Μνήμη (Memory)
– Καταχώρηση προγραμμάτων και δεδομένων
– Χωρίζεται σε κύρια και βοηθητική
Η Ιστορία Συνοπτικά
Διάρκεια Βασικά Επιτεύγματα
• Συνολικά πουλήθηκαν 46
κομμάτια
Μηχανές με Λυχνίες Κενού
(Βιοπληροφορική)
Εισαγωγή
Βιοπληροφορική: τι είναι
• Η ανάπτυξη και χρήση τεχνικών και εργαλείων
πληροφορικής/μαθηματικών/στατιστικής για την ανάλυση βιολογικών δεδομένων
(κυρίως μοριακής βιολογίας)
• Σήμερα γίνεται διάκριση μεταξύ της βιοπληροφορικής και της υπολογιστικής βιολογίας
– Βιοπληροφορική: Η ανάπτυξη μεθόδων και προγραμμάτων.
– Υπολογιστική Βιολογία: Η χρήση των παραπάνω μεθόδων και προγραμμάτων για την
ανάλυση βιολογικών δεδομένων.
• Συχνά συμβαίνουν και τα δύο ταυτόχρονα και τα σύνορα δεν είναι πάντα ευδιάκριτα
Εισαγωγή
• Οντολογίες (Ontologies)
Η χρήση ενός ελεγχόμενου λεξιλογίου (με ιεραρχική δόμηση), για την περιγραφή των ιδιοτήτων
και των λειτουργιών ομοειδών αντικειμένων (π.χ πρωτεϊνών).
Εισαγωγή
Παρόν/μέλλον
• Μέχρι το 2000, Βιοπληροφορική σήμαινε κυρίως ανάλυση ακολουθιών.
Εφαρμογές
Blastn / MegaBlast
Εφαρμογές
• Πολλαπλή στοίχιση.
MSA
Blast
Blastn
Παράδειγμα: Eντοπισμός SNPs σε ακολουθίες του ιού HIV-1 για
ανθεκτικότητα σε φάρμακα
Εφαρμογές
• Ομαδοποίηση δεδομένων.
Ομαδοποίηση
Εφαρμογές
Φυλογένεση
Φυλογένεση σπονδυλωτών
Εφαρμογές
Προέλευση -
Επιδημιολογία
Πρωτοεμφαν
Πρωτοεμφανίστηκε
ίστηκε
μυστηριωδώς στις αρχές της
δεκαετίας του 1980.
Ο τύπος HIV
HIV--1 εισήλθε στους
ανθρώπους, ίσως περισσότερες
από μια φορές, από τον
χιμπατζή.
Ο τύπος HIV
HIV--2 εισήλθε στους
ανθρώπους, από τους sooty
mangabees
Έλεγχος εξελικτικών υποθέσεων
Από που
που προήλθε
προήλθε ο ιός HIV
HIV--1 subtype M
M;; Προ
Προέλευση
έλευση στην Κεντρική Αφρική.
Όταν πρωτοεντοπίστηκε, αρκετοί ασθενείς στην Αμερική ήταν πρόσφατοι Αϊτινοί
μετανάστες.
Κάποιοι ισχυρίζονταν ότι πήγε από την Αμερική στην Αϊτή στα μέσα των 70s, λόγω
σεξοτουρισμού.
Απ
Απόό την Αϊτή στην Αμερική ή το αντίθετο;
Ο Worobey χρησιμοποίησε ακολουθίες HIV από συντηρημένα δείγματα Αϊτινών ασθενών
(1983)
Επιδημ
Επιδημία
ία χολέρας στην Αϊτή 2010
•Μετά τον σεισμό στην Αϊτή (Ιανουαριος 2010), ξέσπασε επιδημία χολέρας (Οκτώβριος
2010).
•Το βακτήριο Vibrio cholerae ελευθερώνει μια τοξίνη που προκαλεί έντονες διάρροιες
και αφυδάτωση, έως και θάνατο, εντός ολίγων ωρών, αν δεν αντιμετωπιστεί!
•Η μετάδοση γίνεται όταν τα κόπρανα ενός μολυσμένου ατόμου έρθουν σε επαφή με
πόσιμο νερό ή τροφή.
•Τα άτομα που δεν παράγουν αρκετό γαστρικό υγρό στο στομάχι τους, ή τα άτομα με
ομάδα αίματος Ο είναι πιο ευάλωτα.
•Το Vibrio cholerae υπάρχει σε υδάτινα περιβάλλοντα ανά την υφήλιο και εάν οι
συνθήκες είναι ευνοϊκές, μπορεί να ξεσπάσει επιδημία.
•Η χολέρα είναι διαδεδομένη στην Ασία.
•Τα πρώτα κρούσματα παρατηρήθηκαν σε κεντρικές περιοχές του νησιού, στην κοιλάδα
Artibonite, μια εβδομάδα μετά την έλευση Νεπαλέζων κυανόκρανων, κοντά στο
στρατόπεδό τους.
•Λύμματα από το στρατόπεδο κατέληγαν σε γειτονικό ποταμό.
•Οι κάτοικοι κατηγόρησαν τον ΟΗΕ ότι
•οι κυανόκρανοι που ήρθαν να βοηθήσουν ευθύνονται για το ξέσπασμα της
επιδημίας.
•ότι ο ΟΗΕ προσπάθησε να αποκρύψει το γεγονός και να μην αναλάβει τις ευθύνες
του
Ξέσπασαν ταραχές.
Επιδημ
Επιδημία
ία χολέρας στην Αϊτή 2010
Επιδημ
Επιδημία
ία χολέρας στην Αϊτή 2010
Εφαρμογές
Αλληλούχιση οργανισμών
-
Ανίχνευση οργανισμών
-
Μεταγενωμική
Genome assembly
Εφαρμογές στην τοξικολογία/
τοξικογενωμική
• Μέτρηση της γονιδιακής έκφρασης μετά από έκθεση σε τοξικό
παράγοντα μπορεί να δείξει τον μοριακό μηχανισμό δράσης του
παράγοντα.
Hierarchical cluster analysis showed a close association in gene expressional responses between aroclor 1254 and 3-
methylcholanthrene.
Εισαγωγή στην
Πληροφορική και στην
διαχείριση μεγάλου
όγκου δεδομένων
Τι είναι ο υπολογιστής
Τι είναι ο υπολογιστής;
• Η Βοηθητική Μνήμη
– Μαγνητικές και Οπτικές Μνήμες
– Σκληροί Δίσκοι
– Μαγνητικές Ταινίες
– CD, DVD, BluRay Disks
Εισαγωγή στη Μνήμη Υπολογιστή
• Μνήμη = τεχνολογίες που χρησιμεύουν στην αποθήκευση
δεδομένων και προγραμμάτων
Μονάδα Ελέγχου
Κεντρική Μνήμη
Βοηθητική Μνήμη
ΜΝΗΜΗ
• Βοηθητική μνήμη
– βρίσκεται εντός και εκτός του υπολογιστικού συστήματος
– “θυμάται” και αφού κλείσει ο υπολογιστής
– π.χ. σκληροί δίσκοι, δίσκοι CD και DVD ...
Μνήμες
ROM
Σκληροί δίσκοι
Οπτικοί δίσκοι
CD, DVD, BluRay
Μαγνητικές
Ταινίες
ΜΝΗΜΕΣ
Ασταθείς Μνήμες
• Οι Ασταθείς μνήμες (volatile storage) απαιτούν συνεχή τροφοδότηση με ρεύμα
προκειμένου να μην μεταβληθούν/ σβηστούν τα περιεχόμενά τους
– όλα τα είδη κύριας μνήμης εκτός από τη ROM
• Σκοπός της CPU cache είναι να επιταχύνει τη λειτουργία της υπόλοιπης μνήμης του
συστήματος και συνεπώς να βελτιώσει την ταχύτητα του υπολογιστή
• Η μνήμη CPU cache λόγω του μεγάλου της κόστους χρησιμοποιείται σε μικρές ποσότητες ως ένα
ενδιάμεσο στάδιο μεταξύ του επεξεργαστή και της κύριας μνήμης
• Η λειτουργία της κρυφής μνήμης βασίζεται στην αρχή της τοπικότητας (principle of locality) που
υποστηρίζει ότι στο αμέσως επόμενο χρονικό διάστημα υπάρχει μεγάλη πιθανότητα πρόσβασης σε
γειτονικά δεδομένα αυτών που χρησιμοποιούνται τώρα. Έτσι, όταν ένα μέρος δεδομένων
μεταφέρεται από τη μνήμη στην Κεντρική Μονάδα Επεξεργασίας, μεταφέρονται και τα γειτονικά
τους στην κρυφή μνήμη έτσι ώστε να είναι πολύ πιο γρήγορη τυχόν ανάκτηση τους αμέσως μετά.
• Πρακτικά, η μνήμη αυτή βρίσκεται πάνω ή κοντά στο κύκλωμα της Κεντρικής Μονάδας
Επεξεργασίας
Βοηθητική Μνήμη
• Η δευτερεύουσα ή βοηθητική μνήμη χρησιμοποιείται για τη μόνιμη
αποθήκευση μεγάλων ποσοτήτων δεδομένων
Σκληροί Δίσκοι
• Ένας σκληρός δίσκος αποτελεί μια μη ασταθή (non volatile)
μονάδα μαγνητικής βοηθητικής μνήμης
– Οι σκληροί δίσκοι πρωτοεισήχθησαν το 1956 από την IBM
– Η χρήση τους σε προσωπικούς υπολογιστές χρονολογείται από τα τέλη
της δεκαετίας του 1980
– Σήμερα βρίσκουν εφαρμογή όχι μόνο στους υπολογιστές αλλά και σε
μια μεγάλη γκάμα ηλεκτρονικών συσκευών (βιντεοκάμερες,
παιχνιδομηχανές, DVD players κ.α.)
– Από το 2005 έχουν λανσαριστεί και κυκλοφορούν κινητά τηλέφωνα με
ενσωματωμένους σκληρούς δίσκους
Κεφαλές ανάγνωσης/εγγραφής
Κεφαλή εγγραφής
Μέσο
Οργάνωση σωματιδίων
(παρουσία δεδομένων)
Κατά την περιστροφή
του μέσου η κεφαλή
εγγράφει δεδομένα
Σκληροί Δίσκοι
• Επιφάνεια Δίσκου
– ένας σκληρός δίσκος αποτελείται από μια ή περισσότερες όμοιες, κυκλικές επιφάνειες
(δίσκους) επιστρωμένες με μαγνητικό υλικό και στερεωμένες σε ένα κοινό άξονα
τοποθετημένες η μία κάτω από την άλλη
• Τροχιά (track)
– κάθε επιφάνεια χωρίζεται σε ένα αριθμό ομόκεντρων κύκλων που ονομάζονται τροχιές. Όλες οι
επιφάνειες ενός δίσκου έχουν τον ίδιο αριθμό τροχιών.
• Κύλινδρος (cylinder)
– όλες οι τροχιές ίδιους μεγέθους σε κάθε επιφάνεια (που βρίσκονται δηλαδή η μια κάτω από την
άλλη) σχηματίζουν ένα κύλινδρο. Ένας σκληρός δίσκος έχει τόσους κυλίνδρους όσες και
τροχιές.
• Τομέας (sector)
– κάθε επιφάνεια χωρίζεται σε ένα συγκεκριμένο αριθμό τομέων που έχουν μια συγκεκριμένη
χωρητικότητα σε bytes (π.χ. 512 bytes).
– κάθε τομέας έχει διαφορετικό φυσικό μέγεθος
– όλοι οι τομείς αποθηκεύουν την ίδια ποσότητα δεδομένων
• Συστοιχία (cluster)
– δύο ή περισσότεροι τομείς σχηματίζουν την συστοιχία (η μικρότερη μονάδα αποθήκευσης
δεδομένων)
Σκληρός δίσκος
Disk structures:
(A) Track
(B) Geometrical sector
(C) Track sector
(D) Cluster
Σκληροί Δίσκοι
• Η χωρητικότητα ενός σκληρού δίσκου προκύπτει ως εξής:
Επιφάνειες (Ε) × Τροχιές/Επιφάνεια (T) × Τομείς/Τροχιά (S) × Bytes/Τομέα (B) =
Χωρητικότητα (σε bytes)
• π.χ. έστω ένας σκληρός δίσκος με 6 επιφάνειες, 16.384 τροχιές ανά επιφάνεια,
256 τομείς ανά τροχιά και 512 bytes ανά τομέα. Η χωρητικότητα του είναι:
– Ε × Τ × S × Β = 6 * 16.384 * 256 * 512 = [Link] bytes ή 12 Gb
Σκληροί Δίσκοι
• H μετακίνηση του βραχίονα είναι μηχανική και γι’ αυτό οι σκληροί δίσκοι έχουν
χαμηλότερες ταχύτητες από την κύρια μνήμη
• Συνεχόμενα δεδομένα γράφονται (αν αυτό είναι εφικτό) ανά κύλινδρο, έτσι ώστε να
ελαχιστοποιούνται οι μετακινήσεις του βραχίονα (άρα και η σπατάλη χρόνου)
Σκληροί Δίσκοι
• Ο χρόνος προσπέλασης (access time) που απαιτείται για την
προσπέλαση δεδομένων που βρίσκονται αποθηκευμένα σε ένα σκληρό
δίσκο είναι το άθροισμα των παρακάτω τριών παραγόντων:
Σκληροί Δίσκοι
• Τυπικά χαρακτηριστικά των σκληρών δίσκων που χρησιμοποιούνται σήμερα
στους προσωπικούς υπολογιστές:
– Φυσικό μέγεθος: Ενώ οι πρώτοι σκληροί δίσκοι είχαν μέγεθος 8 και αργότερα 5,25
ίντσες, οι πλέον συχνά χρησιμοποιούμενοι σήμερα είναι της τάξης των 3,5 και 2,5
ιντσών.
File Fragmentation
• Παράδειγμα από Wikipedia
• [Link]
• A new disk has 5 files saved on it, named A, B, C, D and E, and each file is using 10 blocks of space (here the block
size is unimportant.) As the free space is contiguous the files are located one after the other (Example (1).)
• If file B is deleted, a second region of 10 blocks of free space is created, and the disk becomes fragmented. The file
system could defragment the disk immediately after a deletion, which would incur a severe performance penalty
at unpredictable times, but in general the empty space is simply left there, marked in a table as available for later
use, then used again as needed[2] (Example (2).)
• Now if a new file F requires 7 blocks of space, it can be placed into the first 7 blocks of the space formerly holding
the file B, and the 3 blocks following it will remain available (Example (3).) If another new file G is added, and
needs only three blocks, it could then occupy the space after F and before C (Example (4).)
• If subsequently F needs to be expanded, since the space immediately following it is occupied, there are three
options: (1) add a new block somewhere else and indicate that F has a second extent, (2) move files in the way of
the expansion elsewhere, to allow F to remain contiguous; or (3) move file F so it can be one contiguous file of the
new, larger size. The second option is probably impractical for performance reasons, as is the third when the file is
very large. Indeed the third option is impossible when there is no single contiguous free space large enough to
hold the new file. Thus the usual practice is simply to create an extent somewhere else and chain the new extent
onto the old one (Example (5).)
• Material added to the end of file F would be part of the same extent. But if there is so much material that no room
is available after the last extent, then another extent would have to be created, and so on. Eventually the file
system has free segments in many places and some files may be spread over many extents. Access time for those
files (or for all files) may become excessively long.
File Fragmentation
Κατακερματισμός (Fragmentation)
Κατακερματισμός (Fragmentation)
Οπτικές Μνήμες
• Στην περίπτωση των οπτικών μνημών, η τεχνολογία που
χρησιμοποιείται είναι οι οπτικές δέσμες (ακτίνες λέιζερ) σε υλικά
επιστρωμένα με αλουμίνιο
Εισαγωγή στην
Πληροφορική και στην
διαχείριση μεγάλου
όγκου δεδομένων
Hardware Υπολογιστών
2η διάλεξη
CPU
CPU – κεντρική μονάδα
επεξεργασίας
Η διαδικασία μετατροπής
ακατέργαστων στοιχείων σε
πληροφορία λέγεται
«επεξεργασία»- processing
και διεκπεραιώνεται από τον
επεξεργαστή (CPU) και την
μνήμη.
Αριθμητική &
Λογική Μονάδα
Μονάδα
Ελέγχου
Μονάδα
Κεντρική Μνήμη
Εισόδου - Εξόδου
CPU – Μονάδα ελέγχου
CPU
Μονάδα αριθμητικής λογικής (ALU)
Bus
• Η διαδρομή ανάμεσα από διάφορα συστατικά μέρη ενός
υπολογιστή λέγεται bus. Δεδομένα και εντολές μετακινούνται
κατά μήκος της bus.
Gaming Photoshop
Foldable
Κατηγορίες οθονών
• Διαστάσεις
• Ανάλυση (Resolution)
• Dot pitch
Διαγώνια διάσταση
Ανάλυση
B+G R+B
R+G
R+B+G
Σύνθεση χρωμάτων
Συσκευές Εξόδου - Εκτυπωτής
• Ο εκτυπωτής (printer) είναι μία μονάδα εξόδου, η οποία εκτυπώνει
σε χαρτί τα δεδομένα που λαμβάνει από τον υπολογιστή.
– Κρουστικοί εκτυπωτές (μήτρας στιγμών)
– Μη Κρουστικοί εκτυπωτές (λέιζερ και inkjet)
Αξιολόγηση εκτυπωτών
• Ποιότητα εικόνας – Μετράται σε dots per inch (dpi). Π.χ. 600 dpi.
• Ταχύτητα – Μετράται σε pages per minute (ppm) ή characters per
second (cps).
Συσκευές Εξόδου - Μη Κρουστικοί εκτυπωτές (laser -
inkjet)
– ταχύτητα, από τη στιγμή που δεν έχουν τόσα μηχανικά μέρη όσα οι
κρουστικοί εκτυπωτές
Εκτυπωτές Laser
Εκτυπωτές Laser - Απόδοση
• Ανάλυση 300 – 1200 dpi ή και υψηλότερη.
• Ταχύτητα ~ 4 – 16 ppm.
• [Link]
Προβήματα υγείας από
υπερβολική/λανθασμένη χρήση των
•
υπολογιστών
[Link]
• >6-8 ώρες στον υπολογιστή μπορεί να προκαλέσουν προβλήματα υγείας.
• Κούραση των οφθαλών
– Θολή/διπλή εικόνα
– Ξήρανση των οφθαλών
– Πονοκέφαλοι
• Μυική κούραση
– Πόνος
– Ακαμψία
• [Link]
computer-use/
• Οφθαλμολογικά προβλήματα. Τα μάτια σταματούν να
ανοιγοκλείνουν και ‘γουρλώνουν’, με αποτέλεσμα να κουράζονται και
να ξηραίνονται.
• Προβλήματα με την πλάτη και τον λαιμό.
• Προβλήματα στα χέρια και στον καρπό
[Link]
[Link]
Σύνδρομο καρπιαίου σωλήνα
Η χρήση συσκευών με οθόνες έντονα φωτισμένες για 2 ώρες πριν τον ύπνο
καταστέλλει τη παραγωγή μελατονίνης, που ρυθμίζει το μοριακό ρολόι.
Οι έφηβοι είναι ιδιαίτερα ευάλωτοι.
Προσοχή με τα laptops
• Δεν πρέπει να χρησιμοποιούμε
παρατεταμένα το laptop πάνω στα
πόδια μας.
[Link]
Εισαγωγή στην
Πληροφορική και στην
διαχείριση μεγάλου
όγκου δεδομένων
Αριθμητικά συστήματα
Αποθήκευση δεδομένων
Άλγεβρα Boole
3η διάλεξη
Αριθμητικά συστήματα
Τι είναι ένα αριθμητικό σύστημα;
Μέθοδος αναπαράστασης όλων των δυνατών αριθμών σε
κωδικοποίηση β ψηφίων (β=10 για το δεκαδικό, β=2 για το δυαδικό
κ.ο.κ.)
Με κατάλληλους συνδυασμούς των ψηφίων αναπαριστούμε
οποιαδήποτε αριθμητική ποσότητα
Παράσταση Αριθμού
• Ένας αριθμός Ν αναπαρίσταται σε οποιοδήποτε αριθμητικό σύστημα με μια
ακολουθία ψηφίων. Η θέση κάθε ψηφίου στον αριθμό προσδιορίζει την
αξία του.
– Το πρώτο ψηφίο αριστερά της υποδιαστολής εκφράζει μονάδες (βάση0)
– Όσο μετακινούμαστε προς τα αριστερά, τα ψηφία εκφράζουν αυξανόμενες
δυνάμεις της βάσης του συστήματος (βάση1, βάση2, κτλ)
– Αντίθετα, προς τα δεξιά της υποδιαστολής τα ψηφία εκφράζουν μειούμενες
δυνάμεις της βάσης του συστήματος (βάση-1, βάση-2, κτλ)
• (12.4)8=1x81+2x80+4x8-1=8+2+0.5=(10.5)10
• (3A.4)16=3x161+10x160+4x16-1=48+10+0.25=(58.25)10
• (1111.11)2=?
Παραδείγματα
• (1111.11)2=?
8 + 4 + 2 +1 + ½ + ¼=
15.75
Παραδείγματα
• Aν μας δοθεί ο (14)10 και μας ζητηθεί να τον εκφράσουμε σε ένα
άλλο σύστημα αρίθμησης;
– Μετατροπή στο εννιαδικό: Το (14)10 αποτελείται από μια εννιάδα και
πέντε μονάδες. Έτσι, (14)10=(15)9.
Παραδείγματα
• (34)10 -> δυαδικό
• 1X32 + 1X2 =
100010
Μετατροπή από το Δεκαδικό
Σύστημα
• Η μετατροπή ενός αριθµού από το δεκαδικό σε ένα οποιοδήποτε αριθµητικό
σύστηµα µε βάση β γίνεται χωριστά για το ακέραιο και χωριστά για το
κλασµατικό μέρος.
– Βήμα 3ο: Όταν το πηλίκο της διαίρεσης γίνει μηδέν, έχουμε τελειώσει με την
μετατροπή του ακεραίου μέρους και ο αριθμός που ζητάμε προκύπτει αν
καταγράψουμε τα υπόλοιπα από το τελευταίο προς το πρώτο (δηλαδή με την
αντίστροφη σειρά που έχουν βρεθεί).
– Αποθήκευση Αριθμών.
• Ακεραίων
• Πραγματικών
– 1 byte = 8 bits
Κώδικας Χαρακτήρας
00110000 0
00110001 1
00110010 2
Παραδείγματα από τον
00110011 3
ASCII
00110100 4
00110101 5
01000001 A
01000010 B
01000011 C
01000100 D
01000101 E
Αποθήκευση Εικόνων και Ήχων
• Εικόνες: τα δυο βασικά συστήματα κωδικοποίησης είναι το ψηφιογραφικό
(bitmap) και το διανυσματικό (vector)
Στο RGB, το υπόβαθρο έχει συνήθως μαύρο χρώμα, ενώ το άσπρο προκύπτει από
τον συνδυασμό των τριών βασικών χρωμάτων
Η μίξη των 3 χρωμάτων θεωρητικά θα δώσει μαύρο χρώμα, αλλά ατέλειες στα
μελάνια (και λόγοι οικονομίας) επιβάλουν την χρήση ενός 4ου μαύρου μελανιού.
80,60
320,240
• Τα ποιό συνηθησμένα formats για φακέλους τύπου bitmap
• BMP
• PICT
• TIFF
• JPEG
• GIF
• PNG
• συμπιέζουν τα δεδομένα
Αποθήκευση Ήχων
• Οι ήχοι κωδικοποιούνται στους υπολογιστές με κατάλληλη
δειγματοληψία του πλάτους των ηχητικών κυμάτων σε
συγκεκριμένα χρονικά διαστήματα
– Η αναλογική κυματομορφή μετατρέπεται σε αριθμητική πληροφορία
που μπορεί να αναπαρασταθεί με τη χρήση συνδυασμών bit.
– Η ποιότητα αναπαράστασης εξαρτάται από τη συχνότητα
δειγματοληψίας
• Για παράδειγμα, στα μουσικά CD έχουμε 44.100 δείγματα ανά
δευτερόλεπτο, ενώ σε ένα DVD-Audio έχουμε 192.000 δείγματα
ανά δευτερόλεπτο.
Η Άλγεβρα Boole
Η Άλγεβρα Boole
• Ο George Boole (1815 - 1864) εισήγαγε μία
θεωρία, που ονομάστηκε Λογική Boolean
• Η Λογική Boolean είναι μία μορφή άλγεβρας
σύμφωνα με την οποία όλες οι πιθανές
μεταβλητές, καθώς επίσης και οι συναρτήσεις
αυτών, μπορούν να πάρουν μόνο δύο
συγκεκριμένες τιμές: “αληθές” (true) ή “ψευδές”
(false)
• Καθώς η λογική Boolean μπορεί να έχει ισχύ σε
μεταβλητές οι οποίες μπορούν να πάρουν μόνο
δύο τιμές, βρίσκει απόλυτη εφαρμογή στα
υπολογιστικά συστήματα!
– Χαμηλή τάση = 0 = Ψεύδος
– Υψηλή τάση = 1 = Αλήθεια
Η Άλγεβρα Boole και Λογικές
Συναρτήσεις
πίνακας αλήθειας
1 0 0
1 1 1
1=αλήθεια
0=ψεύδος
Πράξη OR (Είτε - Διάζευξη)
Έστω οι μεταβλητές α και β:
• Η λογική παράσταση «α α β α OR β
OR β» παίρνει την τιμή 1
(true) , στην περίπτωση
που τουλάχιστον το 1 0 0 0
από τα 2 (α, β) έχουν
τιμή 1 (true)
0 1 1
πίνακας αλήθειας
1 0 1
1 1 1
1=αλήθεια
0=ψεύδος
πίνακας αλήθειας
0 1
Λογικές Πύλες
• είναι μικροσκοπικά ηλεκτρονικά (ψηφιακά) κυκλώματα
a
Είσοδος
x
b
Α
Πύλη OR
Πηγή
Έξοδος
Ενέργειας
Είσοδος
Β
a
x
Πύλη AND
b
Πηγή
Έξοδος
Ενέργειας
Είσοδος Είσοδος
Α Β
Πύλη ΝΟΤ (Λογική άρνηση)
• Η πύλη αυτή παίρνει ένα
bit σαν είσοδο και εξάγει Α C
ένα bit της αντίθετης
αξίας από την αξία αυτού 0 1
που εισήγαμε.
• Η τιμή εξόδου C 1 0
(output) είναι true (1)
μόνο όταν η τιμή
εισόδου A (input) δεν
είναι true (1).
Έξοδος
Πύλη NOT
x y
Πηγή
Ενέργειας
Γείωση
Είσοδος
Πύλη NAND
Πύλη NAND
• Το αντίθετο του OR
a b C
0 0 1
• Η πύλη NOR παίρνει δύο bits σαν
0 1 0
input και εξάγει ένα bit σαν
output. 1 0 0
• Η τιμή εξόδου C (output) είναι 1 1 0
true (1) εάν και οι δύο τιμές
εισόδου (input) είναι false (0).
Πύλη XOR
Pubmed
Pubmed
• ΒΔ του NCBI. Ξεκίνησε τον Ιανουάριο του 1996.
• Καταχωρεί όλες τις δημοσιευμένες εργασίες που προέρχονται από τον ευρύτερο
χώρο της βιοϊατρικής
• ~20 εκατομύρια εργασίες καταχωρημένες (Ιούλιος 2010)
• Όταν μια εργασία γίνεται δεκτή από το περιοδικό, κατατίθεται και στην Pubmed
• H Pubmed δίνει ένα μοναδικό κωδικό εγγραφής (PMID) και λέξεις κλειδιά που
χαρακτηρίζουν το περιεχόμενο της εργασίας (MeSH terms).
• Από το 2007, το NIH απαιτεί όποιες ερευνητικές εργασίες έχουν χρηματοδοτηθεί από
αυτό, τα αποτελέσματά τους να γίνονται προσβάσιμα σε όλους, μέσω του Pubmed
Central (εντός 12 μηνών από την ημερομηνία δημοσίευσης). (~ 1 εκατομύριο
εργασίες)
Pubmed
Βάσεις Δεδομένων
Βάσεις Δεδομένων
Pubmed
Pubmed Help
Pubmed help
Pubmed Help – Πεδία πληροφοριών
Το λειτουργικό σύστημα
Το λειτουργικό σύστημα (operating system - OS) συντονίζει και ελέγχει τις
διάφορες διεργασίες σε έναν υπολογιστή και επίσης παίζει τον ρόλο του
ενδιάμεσου μεταξύ του χρήστη ή κάποιων προγραμμάτων (software) και των
μηχανικών μερών του υπολογιστή (hardware)
Τα πιο γνωστά λειτουργικά συστήματα:
• Unix
• Mac OS
• Linux
• Windows
Kernel
Graphical shells. Στο Unix, τα πιο διαδεδομένα είναι τα GNOME & KDE. Tο
graphical shell βασίζεται σε ένα σύστημα διαχείρισης γραφικών
παραθύρων που ονομάζεται X Window System ή Χ11. Το Χ διαχειρίζεται
τον σχεδιασμό και μετακίνηση των παραθύρων στην οθόνη και επίσης
επιτρέπει την αλληλεπίδραση με το ποντίκι και το πληκτρολόγιο.
Command Line Interpreters (CLIs). Τα πιο γνωστά shells αυτού του τύπου
είναι:
• sh (Bourne Shell)
• csh (C Shell)
• Bash (Bourne again shell)
GNU project
To 1983, o Richard Stallman ξεκίνησε το GNU project που σκοπό είχε να
δημιουργήσει ένα ελεύθερο λειτουργικό σύστημα του οποίου τον κώδικα μπορούσε
να διαβάσει, να τροποποιήσει και να επανακυκλοφορίσει ΔΩΡΕΑΝ ο καθένας.
Έτσι, δεν θα υπήρχαν μυστικά και κρυφές λειτουργίες εν αγνοία του χρήστη. Αυτού
του τύπου το software γίνεται διαθέσιμο υπό μια συγκεκριμένη άδεια που
ονομάζεται General Public License (GPL), την οποία χρησιμοποιούν τα
περισσότερα ελεύθερα λογισμικά.
Το GNU project έχει δημιουργήσει πολλά (>300) ελεύθερα προγράμματα.
Σχεδόν ότι πρόγραμμα υπήρχε στο UNIX γράφηκε ξανά ως ανοικτό λογισμικό
από το GNU project.
Η μεγαλύτερη επιτυχία τους ήταν ένας C compiler, το gcc, που δουλεύει καλύτερα
και από αντίστοιχα εμπορικά λογισμικά.
Το Linux kernel
Ζήτησε βοήθεια από άλλους προγραμματιστές και έτσι μαζεύτηκε μια μεγάλη
κοινότητα προγραμματιστών που δούλεψαν εθελοντικά για την δημιουργία
αυτού του UNIX-based kernel, το οποίο ονομάστηκε Linux kernel. Είναι
διαθέσιμο υπό την άδεια GPL. Ακόμα και σήμερα, ο Torvalds έχει τον τελευταίο
λόγο στο τι θα ενσωματωθεί στην τρέχουσα έκδοση του Linux kernel.
Ο σκοπός του GNU project ήταν να δημιουργήσει ένα ελεύθερο και ανοικτό
λειτουργικό σύστημα, το οποίο θα είχε και ένα kernel.
To GNU kernel όμως είχε προβλήματα, ενώ το Linux kernel έγινε διαθέσιμο
υπό την άδεια GPL. Έτσι, ενώθηκαν και δημιουργήθηκε το λειτουργικό
σύστημα GNU/Linux. Στην ουσία είναι το λειτουργικό σύστημα GNU που
χρησιμοποιεί το Linux kernel.
[Link]
Linux Distributions
Υπάρχουν διάφορες διανομές του Linux. Μια συγκεκριμένη διανομή είναι ένα λειτουργικό
σύστημα που αποτελείται από:
• To Linux Kernel
• GNU tools & βιβλιοθήκες
• Οδηγείες χρήσης (documentation)
• Κάποιο Graphical User Interface (GNOME, KDE ή UNITY)
• Window System (Συνήθως το X windows)
• Κάποιο Package Management System
• Άλλα εξειδικευμένα προγράμματα, που δεν αποτελούν τον κορμό του λειτουργικού
συστήματος, όπως το Open Office.
l Δωρεάν
Αρχικά πρέπει να δημιουργηθεί Live-CD, από όπου γίνεται boot του λειτουργικού
συστήματος.
Σε αυτή την φάση πρέπει να δημιουργήσετε ένα .iso image στο CD/DVD/USB-stick.
Αν έχετε ήδη φορτωμένα τα Windows και θέλετε να βάλετε και το Ubuntu, τότε πρέπει να
κάνετε partition τον σκληρό δίσκο, δηλαδή να τον χωρίσετε και να ορίσετε από πού έως
πού θα χρησιμοποιείται ο χώρος για τα Windows και από πού έως πού θα χρησιμοποιείται
ο χώρος για το Linux.
Πριν κάνετε partition τον χώρο που κατείχαν τα Windows, σώστε όλα τα προσωπικά
σας αρχεία, σε περίπτωση απώλειας, κατά την διαδικασία του partition.
l Dash
l Folders
l Firefox
l Ubuntu One
l System Settings
l Workspace switcher
l Trash
lΠολύ συχνά θα χρειάζεστε τα System Settings & System Monitor, οπότε εισάγετέ τα από την αρχή στην μπάρα.
lΓια να βγάλετε ένα πρόγραμμα από την μπάρα κάνετε πάνω στο εικονίδιό του (στην μπάρα)
Εδώ μπορώ να δω τι
προγράμματα είναι διαθέσιμα
όπως επίσης και τι
προγράμματα έχω
εγκατεστημένα.
System Settings
lΑπό την μπάρα επιλέγω το System Settings
lΑπό εκεί μπορούμε να αλλάξουμε πολλές διαμορφώσεις του συστήματος.
Εισαγωγή ελληνικής γραμματοσειράς
στο πληκτρολόγιο
lΕμφανίζεται το παράθυρο Choose a Layout και από εκεί επιλέγω την γλώσσα και μετά πατάω add.
Πλέον, όταν θέλω να αλλάξω την γλώσσα στο πληκτρολόγιο πάω στην μαύρη μπάρα
που εμφανίζεται στο επάνω μέρος της οθόνης.
Επιλέγω το εικονίδιο με το πληκτρολόγιο και από εκεί αλλάζω την γλώσσα.
Μπορώ επίσης να αλλάξω την γλώσσα πατώντας ένα συνδυασμό πλήκτρων (shortcut keys)
Τον συνδυασμό πλήκτρων των ορίζω ως εξής:
System Settings → Keyboard layout → Options → Keys to change Layout.
Επιλέγω τον συνδυασμό Ctrl+Shift. → Close
Αλλαγή γραμματοσειράς
στο πληκτρολόγιο
Screen Casting
Από το Select Window μπορούμε να επιλέξουμε ποιά περιοχή της οθόνης θα καταγράφεται στο video.
Αφού πατήσουμε το Select Window, πάμε το mouse μέσα στη μικρή οθόνη του παράθυρου
RecordMyDesktop και σύρρωντας το mouse επιλέγουμε την περιοχή καταγραφής.
Στη συνέχεια πατάμε Record και όταν θέλουμε να σταματήσουμε πάμε το mouse στο κόκκινο εικονίδιο
στην πάνω μπάρα και κάνουμε την ανάλογη επιλογή.
VLC media player
Ρυθμίσεις ποντικιού
Δημιουργία νέου λογαριασμού στο σύστημα
Δίνουμε ένα όνομα στο νέο λογαριασμό, πατάμε create και στη συνέχεια μπορούμε να του
δώσουμε password, πατώντας το Account disabled
Δημιουργία νέου λογαριασμού στο σύστημα
Ρυθμίσεις Δικτύου
Automatic DHCP
Manual IP
Media Access Control (MAC) Address
MM:MM:MM:SS:SS:SS:SS
π.χ.
[Link]
Στο IPv4, κάθε IP address αποτελείται από 4 bytes (1byte = 8 bits; 4x8=32 bit)
- 4 δεκαδικά νούμερα (π.χ. [Link]).
Το κάθε νούμερο παίρνει δεκαδικές τιμές από 0-255 (επειδή αποτελείται από 8 bits).
Άρα, το εύρος τιμών IP στο IPv4 είναι από [Link] – [Link].
Άρα, υπάρχουν ~4.3 Giga μοναδικές IP addresses.
Στο νεώτερο IPv6, κάθε IP address αποτελείται από 16 bytes (128 bit).
Κάθε byte αντιστοιχεί σε ένα ζεύγος δεκαεξαδικών αριθμών.
Τα 2 πρωτόκολλα μπορούν να αντιστοιχήσουν διευθύνεις μεταξύ τους.
O laptop σας, είτε συνδέεται στο internet από το δίκτυο του σπιτιού είτε από του πανεπιστημίου,
διατηρεί το MAC address, μέσα σε κάθε δίκτυο όμως έχει διαφορετικό IP address.
Μέσα σε ένα δίκτυο, υπάρχει αντιστοιχεία του IP address με το MAC address μέσω του ARP cache
ή αλλιώς ARP table (Address resolution protocol)
O Network Administrator επιλέγει αν οι υπολογιστές που μπαίνουν στο δίκτυό του θα έχουν
στατικό IP (static IP) ή δυναμικό (που θα αλλάζει κάθε φορά που μπαίνουν στο δίκτυο αυτό).
Αν ο υπολογιστής έχει στατικό IP address, τότε του το έχει δώσει ο Network Administrator.
Αν ο υπολογιστής χρησιμοποιεί δυναμικό IP address, τότε κάθε φορά μια συσκευή του δικτύου
δίνει στον υπολογιστή ένα διαφορετικό (συνήθως) IP address, συνήθως μέσω του πρωτοκόλλου DHCP .
Το IP adress μπορεί να είναι ιδιωτικό (private) για χρήση μόνο εντός του τοπικού δικτύου
(Local Area Network: LAN) ή δημόσιο (public) για χρήση στο Internet ή σε ένα Wide Area Network (WAN)
Κάποια συσκευή του δικτύου τρέχει έναν DHCP server ο οποίος είναι υπεύθυνος για να
μοιράζει IP addresses, δυναμικά.
Όταν συνδεόμαστε στο δίκτυο, τρέχουμε έναν DHCP client που ζητάει
από τον DHCP server μια σειρά από πληροφορίες για να αποκτήσει IP address,
subnet mask, network gateway, name server addresses.
Αυτά γίνονται αυτόματα από τον DHCP server, χωρίς να χρειάζεται η παρέμβαση του
Network administrator.
Όταν ζητάμε μια ιστοσελίδα, συνήθως γράφουμε το όνομά της (domain name) και όχι το IP address της.
Ορίζουμε έναν DNS Server και αυτός προσπαθεί να κάνει την αντιστοίχιση του domain name
με το IP address. Αν δεν έχει την πληροφορία, την ζητάει από άλλους DNS Servers, μέχρι να βρεθεί.
Το Internet χρησιμοποιεί IP addresses και όχι domain names. Άρα είναι απαραίτητη η αντιστοίχιση.
Internet Protocol (IP) Address – Anonymous proxy server
Ὀταν επικοινωνούμε στο δίκτυο με άλλους Servers, δίνουμε τα στοιχεία μας (IP address).
Αυτά καταγράφονται σε log-files. Από ένα IP address καποιός μπορεί να καταλάβει ποιός επικοινωνεί
μαζί του όπως επίσης μπορεί και να καταλάβει από ποιά γεωγραφική περιοχή προέρχεται.
Π.χ. Θέλουμε να κατευάσουμε κάποια δεδομένα από έναν Server-X χωρίς να φανεί η δική μας IP address.
[Link]
Εισαγωγή στην Πληροφορική
και στην διαχείριση
μεγάλου όγκου δεδομένων
/ root
Τα βέλη είναι πολύ χρήσιμα όταν εκτελούμε μια πολύ μεγάλη και περίπλοκη
εντολή και πρέπει μετά από λίγο να την ξαναπληκτρολογήσουμε. Έτσι, και
γλιτώνουμε χρόνο και αποφεύγουμε λάθη κατά την πληκτρολόγηση.
Σύνταξη εντολών (vi)
Κατά την σύνταξη μιας εντολής μπορώ να χρησιμοποιήσω wild cards, δηλαδή
σύμβολα που μπορούν να σημαίνουν οποιοδήποτε χαρακτήρα ή χαρακτήρες.
Το σύμβολο για το wild card είναι ο αστερίσκος *
Π.χ. Βρίσκομαι σε ένα directory που έχει 15 αρχεία, τα file1 έως file15 και το
doc1.
Θέλω να σβήσω τα αρχεία file1 – file15, αλλά όχι το doc1.
Αντί να εκτελέσω την εντολή για το κάθε ένα αρχείο ξεχωριστά, μπορώ να του
πω να σβήσει όλα εκείνα τα αρχεία που ξεκινούν με τους χαρακτήρες “file”
rm file*
Το man έχει μια πληθώρα πληροφοριών για την εντολή που συνήθως
κουράζουν τον αναγνώστη. Μια καλή πηγή πληροφοριών για εντολές συνήθως
συναντάται σε προσωπικές ιστοσελίδες στο διαδίκτυο (να ναι καλά το Google
search!!!). Το man συνήθως είναι καλή πηγή για να μας θυμίσει τι κάνουν
κάποιες ειδικές παράμετροι μιας εντολής.
Βασικές εντολές για πλοήγηση μέσα στο σύστημα
ls /home/PC1/dir2/dir3
dir1 dir2
file1
ls –l
To –l αλλάζει την μορφοποίηση των
αποτελεσμάτων.
ls –a
dir3 μας δείχνει ακόμα και κρυφά
αρχεία/directories (το όνομά τους αρχίζει
με την τελεία .)
/ root
/ root
/ root
/ root
/ root
/ root
Δίνω το πλήρες
PC1 PC2 PC3 μονοπάτι:
cd /home/PC3/dir1
Ή
Δίνω το μονοπάτι από
την θέση που βρίσκομαι:
cd ./home/PC3/dir1
dir1 dir2 dir1 dir2 Το ./ σημαίνει από εδώ
που βρίσκομαι.
/ root
/ root
/ root
/ root
/ root
/ root
/ root
Παράδειγμα - ls
Αν θέλω να δω τι υπάρχει μέσα στο PC1
(αρχεία και υποκατάλογοι) εκτελώ την
εντολή ls
PC1 Θα μου δείξει ότι μέσα στον PC1 υπάρχει
fileΧ ένα αρχείο fileX και 2 υποκατάλογοι dir1
& dir2.
Αν θέλω να δω τι υπάρχει στον dir3 ενώ
ακόμα βρίσκομαι στο PC1, πρέπει να
δώσω την διεύθυνση του directory dir3
στην εντολή ls.
dir3
Παράδειγμα - cp
Βρίσκομαι στο dir1. Θέλω να αντιγράψω
το file1 στο file2, μέσα στον ίδιο κατάλογο
(dir1)
PC1
fileΧ cp file1 file2
dir1 dir2
file1
file2
dir3
Παράδειγμα - cp
Βρίσκομαι στο dir1. Θέλω να αντιγράψω
το file1 στο file2, αλλά μέσα στον
κατάλογο (dir2)
PC1
fileΧ cp file1 /home/PC1/dir2/file2
cp file1 ../dir2/file2
dir1 dir2
file1
file2
dir3
Παράδειγμα - cp
Βρίσκομαι στο PC1. Θέλω να αντιγράψω
το file1 από το dir1 στο file2, αλλά μέσα
στον κατάλογο (dir3)
PC1
fileΧ Η εντολή
cp file1 file2
δεν θα δουλέψει, γιατί το cp δεν μπορεί
να δει το file1
cp /home/PC1/dir1/file1
/home/PC1/dir2/dir3/file2
dir1 dir2
file1
Ή
cp ./dir1/file1 ./dir2/dir3/file2
dir3
file2
PC1
• Βρίσκομαι στο dir1 του PC1.
file1
blablabla
Δημιουργία αρχείου με την εντολή cat
Έχω το file1 που μέσα του γράψαμε blablabla
Αν εκτελέσω την παρακάτω εντολή τι θα έχει ως
περιεχόμενο το file1?
dir1 dir2
file1 file2
file1
Line1
Line2
Line3 head –n 4 Line1 tail –n 1
Line4 Line2 Line4
Line5 Line3
… Line4
…
Δημιουργεία καταλόγου με το mkdir – Μετακίνηση
αρχείων με το mv
file1 file1
file1
filesdir filesdir
Μετονομασία αρχείων με το mv
Βρισκόμαστε στο Desktop και έχουμε πλέον 3
αρχεία, τα file1, file2, file3 μέσα στον υποκατάλογο
filesdir.
Αν εκτελούσαμε:
mv file1 file1r
Η εντολή δεν θα λειτουργούσε, γιατί η εντολή θα
file1 έψαχνε το file1 μέσα στον κατάλογο που
r βρισκόμαστε τώρα, δηλαδή μέσα στο Desktop.
filesdir Επειδή όμως το file1 βρίσκεται σε άλλο κατάλογο,
file2 file3 πρέπει να δώσουμε είτε την πλήρη είτε την σχετική
r r
διεύθυνση του file1, για να δουλέψει η εντολή mv.
Μετονομασία αρχείων με το mv
Η πλήρης διεύθυνση του file1 είναι:
/home/PC1/Desktop/filesdir/file1
Μετονομασία/μετακίνηση αρχείων με το mv
Desktop Desktop
file1 file2 file1 file2
r x r x
rm –r filesdir
filesdir
file3
r
• Ένα αρχείο μπορεί να είναι προσβάσιμο μόνο για μια από τις παραπάνω τρεις
ενέργειες (διάβασμα, τροποποίηση, εκτέλεση), ή για οποιoδήποτε συνδυασμό
τους.
Άρα 3 νούμερα αρκούν για τα δικαιώματα του χρήστη, του group, των υπολοίπων.
Το νούμερο 777 σημαίνει ότι και οι τρεις (user/group/other) έχουν όλα τα δικαιώματα
(read-write-execute )
Δικαιώματα αρχείων και καταλόγων - chmod
Με την εντολή chmod μπορούμε να τροποποιήσουμε τα δικαιώματα σε ένα αρχείο.
Θέλουμε το αρχείο file1r να είναι προσβάσιμο μόνο για ανάγνωση μόνο σε εμάς ως
χρήστη.
r--------
Οπότε, εκτελούμε:
chmod 400 file1r
Προσπαθήστε τώρα να γράψετε κάποιο όνομα μέσα στο file1r με την εντολή cat,
όπως κάνατε πριν.
Σας το επιτρέπει το σύστημα?
Με την εντολή wc (word count) μπορούμε να μετρήσουμε τον αριθμό των γραμμών ή
των λέξεων ή των χαρακτήρων σε ένα αρχείο
Για να μετρήσουμε τις γραμμές, λέξεις, χαρακτήρες του αρχείου file1r ταυτόχρονα
εκτελούμε:
wc file1r
Για να μετρήσουμε μόνο τις γραμμές (lines) του αρχείου file1r εκτελούμε:
wc –l file1r
Για να μετρήσουμε μόνο τις λέξεις (words) του αρχείου file1r εκτελούμε:
wc –w file1r
Για να μετρήσουμε μόνο τους χαρακτήρες (characters) του αρχείου file1r εκτελούμε:
wc –c file1r
du: Υπολογισμός μεγέθους αρχείων/καταλόγων
du –m Desktop
Η εντολή sort
5 eleni 1 maria
1 maria 1 maria
4 giorgos 2 giannis
2 giannis 3 anna
3 anna 4 giorgos
1 maria 5 eleni
Η εντολή sort
Η εντολή sort δούλεψε και μας έδειξε στο terminal τα αποτελέσματά της πάνω στο
αρχείο file_unsorted, χωρίς όμως να το πειράξει.
Αν θέλουμε να σωθούν τα αποτελέσματα του sort πάνω στον file_unsorted πρέπει να
τα κατευθύνουμε σε ένα νέο αρχείο με κάποιο όνομα, π.χ. file_sorted. Πρέπει να
εκτελέσουμε:
sort file_unsorted > file_sorted
5 eleni 1 maria
1 maria 1 maria
4 giorgos 2 giannis
2 giannis 3 anna
3 anna 4 giorgos
1 maria 5 eleni
file1
file1
file1
Για να ορίσω την ταξινόμηση σε συγκεκριμένες στήλες, π.χ. πρώτα την 2η (ως αριθμούς)
και μετά την 1η, με διαχωριστή το tab \t εκτελώ:
sort –t $‘\t’ –k2n,2 –k1,1 file1
Για να ορίσω την ταξινόμηση σε συγκεκριμένες στήλες, π.χ. πρώτα την 2η (ως αριθμούς)
αντίστροφα και μετά την 1η, με διαχωριστή το tab \t εκτελώ:
sort –t $’\t’ –k2nr,2 –k1,1 file1
Στο αρχείο file_unsorted είχαμε 6 γραμμές, με μία επανάληψη (1 maria) στις γραμμές
2 & 6.
Εκτελέστε:
uniq file_unsorted
Διαγράφηκε η επαναλαμβανόμενη γραμμή?
Εκτελέστε:
uniq file_sorted
Διαγράφηκε τώρα η επαναλαμβανόμενη γραμμή?
Η εντολή uniq
Εκτελέστε:
uniq file_unsorted
Διαγράφηκε η επαναλαμβανόμενη γραμμή?
5 eleni 5 eleni
1 maria 1 maria
4 giorgos 4 giorgos
2 giannis 2 giannis
3 anna 3 anna
1 maria 1 maria
Η εντολή uniq
Εκτελέστε:
uniq file_sorted
Διαγράφηκε τώρα η επαναλαμβανόμενη γραμμή?
1 maria
1 maria 1 maria
2 giannis 2 giannis
3 anna 3 anna
4 giorgos 4 giorgos
5 eleni 5 eleni
vi editor
• Για να γράψουμε κάτι μέσα στο αρχείο ή
να τροποποιήσουμε το κείμενο, πρέπει
να βρισκόμαστε στο INSERT MODE.
vi editor
Άσκηση 2: Διαγραφή δεδομένων ενός αρχείου μέσω του
INSERT MODE
• Ανοίγω πάλι το προηγούμενο αρχείο (test1) με το vi editor.
• vi test1
• Θέλω να σβήσω ότι δεδομένα έχει το test1.
• Μπορώ να σβήσω τα προηγούμενα δεδομένα είτε μέσα από το COMMAND
MODE είτε μέσα από το INSERT MODE.
vi editor
Άσκηση 3: Μετακίνηση εντός αρχείου μέσω του
COMMAND MODE
• Ανοίξτε πάλι το test1 με το vi. Βρίσκεστε στο COMMAND MODE.
• Για να δείτε την αρίθμηση της κάθε σειράς πάτε στο LAST LINE MODE και
πληκτρολογήστε set number. Αν θέλετε να σταματήσετε αυτή την απεικόνιση,
πάτε πάλι στο LAST LINE MODE και πληκτρολογήστε set number!
• Για να μετακινήσετε τον κέρσορα στην τελευταία γραμμή, χωρίς να ξέρετε τον
αριθμό της, πληκτρολογείτε μόνο SHIFT g
• Θέλετε να πάει αυτόματα ο κερσόρας στην γραμμή και θέση εκείνη που έχει το όνομα
ενός συγκεκριμένου ατόμου. Για να γίνει αυτό, πρέπει να βρίσκεστε στο COMMAND
MODE. Πληκτρολογείτε / και στη συνέχεια βλέπετε τον κέρσορα να πηγαίνει στην
τελευταία γραμμή του terminal. Πληκτρολογείτε το όνομα του ατόμου, πατάτε ENTER
και ο κέρσορας πηγαίνει στην θέση που βρίσκεται το όνομα.
• Αν το όνομα υπάρχει περισσότερες από μια φορές στο file, τότε κάθε φορά που
πατάτε / & ENTER, ο κέρσορας μετακινείται στην επόμενη θέση.
• Δοκιμάστε το ίδιο όπως παραπάνω, ψάχνοντας μέσα στο file για ένα συγκεκριμένο
γράμμα του αλφάβητου αντί για ένα ολόκληρο όνομα.
vi editor
Άσκηση 5:
• Σε συνέχεια της προηγούμενης άσκησης, βρίσκεστε στο COMMAND
MODE.
test1 test2
A1 B1
Β1
A2 B2
awk ‘{print $2}’ test1 > test2 Β2
A3 B3
Β3
Β4
B4
Π.χ., για να πάρετε τον 5 χαρακτήρα της κάθε γραμμής από το αρχείο file1,
εκτελείτε:
cut –c5 file1
Π.χ., για να πάρετε τον 5-10 χαρακτήρα της κάθε γραμμής από το αρχείο file1,
εκτελείτε:
cut –c5-10 file1
Π.χ., για να πάρετε τον 5, 8, 10, 11, 12 χαρακτήρα της κάθε γραμμής από το αρχείο
file1, εκτελείτε:
cut –c5,8,10-12 file1
Π.χ., για να πάρετε από τον 10 χαρακτήρα μέχρι το τέλος της κάθε γραμμής από το
αρχείο file1, εκτελείτε:
cut –c10- file1
Άσκηση:
Έχετε ένα ιικό γονιδίωμα 10.000 νουκλεοτιδίων σε ένα αρχείο file1 (σε μία γραμμή)
και το γονίδιο που σας ενδιαφέρει βρίσκεται στην θέση 1.000 – 2.800. Με ποιά
εντολή θα κόψετε την ακολουθία του γονιδίου που σας ενδιαφέρει να μελετήσετε;
To –c σημαίνει : character
Το –f χρησιμοποιείται για στήλες, ενώ το –d ορίζει το πώς χωρίζονται οι στήλες
(delimeter) στο αρχείο που διαβάζεται.
Κατά σύμβαση, οι στήλες χωρίζονται με το tab, εκτός και εάν ορίσετε κάποιο
άλλο delimeter με το -d
Π.χ. για να πάρετε την 1η στήλη κάθε γραμμής από το αρχείο file1, εκτελείτε
(θεωρείται ότι οι στήλες χωρίζονται μεταξύ τους με tab):
cut –f1 file1
Με ποιά εντολή θα πάρετε την 1, 4, 5 στήλη στον παραπάνω file1;
Π.χ. για να πάρετε την 1η στήλη κάθε γραμμής από το αρχείο file1, εκτελείτε
(Σε αυτό το παράδειγμα οι στήλες χωρίζονται μεταξύ τους με κενό και όχι tab):
cut –f1 –d ‘ ‘ file1
Με ποιά εντολή θα πάρετε την 1, 4, στήλη στον file1, αν το delimeter είναι το ‘:’;
paste: Επικόληση δύο αρχείων γραμμή προς γραμμή
• Θέλετε να ενώσετε τα δύο files ([Link] & [Link]) (το ένα δίπλα στο
άλλο) σε ένα νέο file με το όνομα merged_paste.txt. Πληκτρολογείστε:
• paste [Link] [Link] > merged_paste.txt
• Δείτε τα περιεχόμενα του merged_paste.txt για να καταλάβετε τι συνέβη.
• Επαναλάβετε την προηγούμενη εντολή αλλά με αντιστροφή της σειράς των
ονομάτων των 2 files. Δείτε πάλι τα περιεχόμενα του merged_paste.txt για
να καταλάβετε τι συνέβη.
• Μπορούμε να επικολήσουμε περισσότερα από 2 αρχεία μαζί.
B1 A1 B1
A1 paste [Link] [Link] > pasted_file.txt A2 B2
B2
A2 A3 B3
B3
A3
B4
B4
• Το join χρησιμοποιεί από κάθε input file τα στοιχεία της πρώτης στήλης ως
κλειδιά και ενώνει γραμμές από δύο files όταν έχουν το ίδιο κλειδί.
Παράδειγμα:
Θέλετε να δημιουργήσετε μια ακολουθία αριθμών, τον ένα δίπλα από τον άλλο
που να διαχωρίζονται με : από το 1 μέχρι το 101, όπου ο κάθε αριθμός θα
αυξάνει κατά 10. Επίσης, όλα τα νούμερα θα πρέπει να έχουν τον ίδιο αριθμό
ψηφίων. Εκτελείτε την παρακάτω εντολή:
seq –s “:” -w 1 10 101
file1 file2
Π.χ. Έχουμε τα παρακάτω 2 αρχεία file1 & file2. Η σύγκριση με την παρακάτω
εντολή θα δώσει:
comm -12 file1 file2
Gene1 Gene2
Gene2 Gene3 Gene2
Gene3 Gene4 Gene3
Gene5
• Στην μία στήλη αναγράφεται το όνομα του ενός γονιδίου/πρωτεΐνης και στην
δεύτερη στήλη το όνομα του άλλου γονιδίου/πρωτεΐνης. Ένα
γονίδιο/πρωτεΐνη είναι δυνατόν να έχει περισσότερες από μια
αλληλεπιδράσεις. Στην τρίτη στήλη αναγράφεται η πειραματική μέθοδος
εντοπισμού. Στην τέταρτη στήλη το είδος της αλληλεπίδραση
(γενετική/φυσική). Είναι δυνατόν μια αλληλεπίδραση να έχει εντοπιστεί με
περισσότερες από μια μεθόδους.
Συνδυαστική Άσκηση
Η εντολή grep μας επιτρέπει να δούμε/αποσπάσουμε μια γραμμή από ένα αρχείο
που περιέχει μια συγκεκριμένη λέξη ή σειρά χαρακτήρων.
Θεωρείται από τις πιο χρήσιμες εντολές του Unix.
Στο παρακάτω παράδειγμα, έχουμε ένα αρχείο με όνομα file1 με 6 γραμμές και 3
στήλες (αύξων αριθμό, όνομα, πόλη).
Θέλουμε να δούμε στο τερματικό ποιές γραμμές περιέχουν τους χαρακτήρες ‘giorgos’
Πρώτα δημιουργήστε το file1.
Εκτελέστε:
grep ‘giorgos’ file1
file1 terminal
1 eleni larisa
2 maria larisa 3 giorgos larisa
3 giorgos larisa 6 giorgos volos
4 giannis athina
5 anna xanthi
6 giorgos volos
Η εντολή grep
file1 terminal
1 eleni larisa
2 maria larisa 3 giorgos larisa
3 giorgos larisa 6 giorgos2 volos
4 giannis athina
5 anna xanthi
6 giorgos2 volos
Χρησιμοποιώντας όμως την παράμετρο –w λέμε στο grep να εντοπίσει τις γραμμές
όπου το ‘giorgos’ εμφανίζεται ως ολόκληρη λέξη, οπότε τώρα θα εντοπιστεί μόνο η
γραμμή 3
grep –w ‘giorgos’ file1
Η εντολή grep -n
Με την παράμετρο –n εμφανίζεται και ο αριθμός της γραμμής που εντοπίστηκε από
το grep.
Στο file1, με την παρακάτω εντολή θα εντοπιστούν η 3η και 6η γραμμή που περιέχουν
τους χαρακτήρες ‘giorgos’ και επιπλέον θα εμφανιστούν και τα νούμερα των
γραμμών.
grep -n ‘giorgos’ file1
file1 terminal
eleni larisa
maria larisa 3:giorgos larisa
giorgos larisa 6:giorgos2 volos
giannis athina
anna xanthi
giorgos2 volos
Η εντολή grep: για περισσότερα του ενός αρχεία
Αν έχουμε δύο αρχεία, file1 & file2 και θέλουμε να δούμε και στα δύο ποιές γραμμές
έχουν το όνομα giorgos, εκτελούμε:
grep ‘giorgos’ file1 file2
Όσα αρχεία θέλουμε να ψάξουμε τα γράφουμε στη σειρά, το ένα μετά το άλλο.
1 eleni larisa
2 maria larisa file1: 3 giorgos larisa
7 giorgos athina file1: 6 giorgos volos
3 giorgos larisa
8 anna patra file2: 7 giorgos athina
4 giannis athina
5 anna xanthi
6 giorgos volos
grep -r
Με την παράμετρο –c εμφανίζεται και ο συνολικός αριθμός των γραμμών στις οποίες
εντοπίστηκε η λέξη/χαρακτήρες από το grep.
file1 terminal
eleni larisa
maria larisa 2
giorgos larisa
giannis athina
anna xanthi
giorgos2 volos
grep -v
Στο file1, οι χαρακτήρες ‘giorgos’ υπάρχουν στην 3η και 6η γραμμή, άρα η παρακάτω
εντολή θα μας δώσει τις γραμμές 1, 2, 4, 5 που ΔΕΝ περιέχουν τους χαρακτήρες
‘giorgos’.
grep -v ‘giorgos’ file1
file1 terminal
eleni larisa
maria larisa eleni larisa
giorgos larisa maria larisa
giannis athina giannis athina
anna xanthi anna xanthi
giorgos2 volos
grep -i
Με την παράμετρο –i δεν παίζει ρόλο εάν οι χαρακτήρες που δώσαμε στο grep είναι
σε κεφαλαία ή μικρά γράμματα.
file1 terminal
eleni larisa
maria larisa giorgos larisa
giorgos larisa Giorgos volos
giannis athina
anna xanthi
Giorgos volos
grep -f
Με την παράμετρο –f δίνουμε το όνομα ενός αρχείου που περιέχει χαρακτήρες, με
τους οποίους θέλουμε να ψάξουμε σε ένα άλλο αρχείο.
H παρακάτω εντολή θα κάνει grep στο file1 χρησιμοποιώντας τους χαρακτήρες που
υπάρχουν σε κάθε γραμμή του αρχείου file_s
grep –f file_s file1
file_s
eleni
athina
file1 terminal
eleni larisa
maria larisa
giorgos larisa eleni larisa
giannis athina giannis athina
anna xanthi
Giorgos volos
grep -l
Με την παράμετρο –l το grep επιστρέφει τα ονόματα των αρχείων στα οποία βρήκε
τους χαρακτήρες/λέξεις με τα οποία ψάχνουμε.
Στο παρακάτω παράδειγμα και τα 3 αρχεία περιέχουν τους χαρακτήρες ‘giorgos’.
grep –l ‘giorgos’ ./filesdir/
Ή
grep –l ‘giorgos’ ./filesdir/file*
Εδώ το * συμβολίζει ταίριασμα με οποιοδήποτε χαρακτήρα μηδέν ή μία ή
περισσότερες φορές.
terminal
Desktop
file1
file2
file3 file3
filesdir
file1 file2
grep –color=auto
Με την παράμετρο - - color χρωματίζεται το κομμάτι της γραμμής που περιέχει το
μοτίβο με το οποίο κάνουμε την αναζήτηση.
file1 terminal
eleni larisa
maria larisa giorgos larisa
giorgos larisa
giannis athina
anna xanthi
Giorgos volos
Egrep: Αναζήτηση με περισσότερα από ένα μοτίβα
To egrep είναι μια εντολή προέκταση της grep για regular expressions.
Θέλω να ψάξω στο αρχείο μου για γραμμές που έχουν κάποιο ή και τα δύο από τα
ονόματα-μοτίβα ‘giannis’ ‘eleni’. Χρησιμοποιούμε το σύμβολο ‘|’ (pipe).
egrep ‘giannis|eleni’ file1
Επίσης, είναι δυνατόν να κάνουμε αναζήτηση και με περισσότερα μοτίβα.
file1 terminal
eleni larisa
maria larisa
giorgos larisa eleni larisa
giannis athina giannis athina
anna xanthi
Giorgos volos
• Ποιά είναι η εντολή για να βρω γραμμές που περιέχουν τα ονόματα ‘giannis’ ‘eleni’
ή ‘giorgos’ ?
• Αν θέλω η αναζήτηση να μην είναι ευαίσθητη σε κεφαλαία/μικρά γράμματα, πώς
θα τροποποιήσω την εντολή?
• Τι θα έκανα αν ήθελα να εκτελέσω το ίδιο πράγμα με την grep –f ?
Για να δηλώσουμε ότι το συγκεκριμένο μοτίβο πρέπει να βρίσκεται στην αρχή μιας
σειράς χρησιμοποιούμε το σύμβολο ^ πριν το μοτίβο.
Η παρακάτω εντολή βρίσκει γραμμές όπου η λέξη ‘eleni’ βρίσκεται μόνο στην αρχή
της γραμμής
file1 terminal
eleni larisa
giannis athina eleni larisa
anna xanthi
Giorgos eleni
Egrep: μοτίβα που βρίσκονται στο τέλος μιας σειράς
Για να δηλώσουμε ότι το συγκεκριμένο μοτίβο πρέπει να βρίσκεται στο τέλος μιας
σειράς χρησιμοποιούμε το σύμβολο $ μετά το μοτίβο.
Η παρακάτω εντολή βρίσκει γραμμές όπου η λέξη ‘eleni’ βρίσκεται μόνο στο τέλος
της γραμμής
file1 terminal
eleni larisa
giannis athina Giorgos eleni
anna xanthi
Giorgos eleni
Με ποιά εντολή θα βρούμε γραμμές που στην αρχή τους έχουν τη λέξη ‘eleni’ ή
στο τέλος έχουν τη λέξη ‘athina’ ?
Με ποιά εντολή θα βρούμε γραμμές που στην αρχή τους έχουν τη λέξη ‘eleni’ ή
στο τέλος έχουν τη λέξη ‘athina’ ?
Θέλω να εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με κεφαλαίο
γράμμα και ακολουθεί το 11.
Εκτελώ:
egrep ‘^[A-Z]11’ file1
file1 terminal
A11 larisa
B11 athina A11 larisa
a11 xanthi B11 athina
b11 eleni
Με ποιά εντολή θα εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με
μικρό γράμμα και ακολουθεί το 11;
Egrep:
Κάποιες φορές το regular expression θέλουμε να επαναλαμβάνεται περισσότερες από μία
φορές. Για να δηλώσουμε πόσες φορές θέλουμε να επαναλαμβάνεται, χρησιμοποιούμε:
{Χ}, αμέσως μετά από το υπο-μοτίβο, όπου Χ το νούμερο/φορές που θέλουμε να
επαναλαμβάνεται.
{Χ,Υ}, αμέσως μετά από το υπο-μοτίβο, όπου Χ& Υ το νούμερο/φορές που θέλουμε να
επαναλαμβάνεται από Χ έως Υ φορές.
Egrep:
Θέλω να εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με δύο κεφαλαία
γράμματα (οποιαδήποτε) kαι ακολουθούν οι χαρακτήρες 11.
Εκτελώ:
egrep ‘^[A-Z][Α-Ζ]11’ file1
Ή
egrep ‘^[A-Z]{2}11’ file1
file1 terminal
AA11 larisa
B11 athina
aa11 xanthi AA11 larisa
b11 eleni
Με ποιά εντολή θα εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με
οποιοδήποτε μικρό γράμμα μία φορά και ακολουθούν νούμερα;
Egrep:
Θέλω να εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με ένα κεφαλαίο
γράμμα, ακολουθεί ένα νούμερο, ακολουθεί ένα μικρό γράμμα.
Εκτελώ:
egrep ‘^[A-Z][1-9][a-z]’ file1
file1 terminal
A2a11 larisa
B11 athina
a11 xanthi A2a11 larisa
b11 eleni
Συνδυαστική Άσκηση
• Σας δίνεται ένα αρχείο ([Link]) που περιέχει ρυθμιστικές αλληλεπιδράσεις μεταξύ
μεταγραφικών παραγόντων (transcription factors) και γονιδίων στα οποία συνδέονται
(στους προαγωγείς τους) και ρυθμίζουν την έκφρασή τους (target).
Χειρισμός κειμένου
tr: αντικατάσταση χαρακτήρων
Με την εντολή tr (που σημαίνει translate ή transliterate) μπορούμε να αντικαταστήσουμε ένα σετ
χαρακτήρων με ένα άλλο σετ αντίστοιχων χαρακτήρων.
Επίσης με αυτή την εντολή μπορούμε να διαγράψουμε μία ακολουθία χαρακτήρων (string),
χρησιμοποιώντας την παράμετρο –d.
Π.χ. Με την παρακάτω εντολή παίρνουμε τα δεδομένα από το αρχείο file1 και αντικαθιστούμε το
γράμμα a με το γράμμα Α, το b με το B και σώζουμε το αποτέλεσμα στο αρχείο file2.
tr –d “mouse“ <file1
Η παραπάνω εντολή θα διαγράψει οποιονδήποτε από τους 5 χαρακτήρες βρει και όχι μόνο την
λέξη mouse
[Link]
[Link]
Τα παραπάνω έχουν ως συνέπεια, όταν ανοίγουμε σε έναν text editor του linux ένα
text file που προήλθε από Windows ή Macintosh, να εμφανίζονται στο τέλος της
κάθε γραμμής τα carriage return characters, με τη μορφή ^M.
Π.χ.
Gene1 Gene2 tissue^M
Με την παρακάτω εντολή μετατρέπουμε ένα αρχείο (file1) τύπου Windows σε αρχείο
(file2) τύπου Unix/Linux.
tr -d ‘\r’ <file1> file2
Ένα αρχείο Macintosh που ονομάζεται file1 μετατρέπεται σε αρχείο τύπου
Unix/Linux (με ονομασία file2) με την παρακάτω εντολή:
tr ‘\r’ ‘\n’ <file1> file2
Θέλουμε να εκτυπώσουμε όλες τις γραμμές του αρχείου file1 στο terminal. Εκτελούμε:
sed ‘’ file1
Θέλουμε να εκτυπώσουμε τις γραμμές 1-3 του αρχείου file1 στο terminal. Εκτελούμε:
sed ‘1,3 p’ file1
Χρησιμοποιούμε στην εντολή το p για print.
Το sed έχει μια κάπως περίεργη συμπεριφορά. Θα εκτυπώσει όλες τις γραμμές και επίσης θα
εκτυπώσει ξανά εκείνες που ορίζονται μέσα στα μονά εισαγωγικά
Για να το αποφύγουμε αυτό και να εκτυπωθούν μόνο οι γραμμές που ορίζονται μέσα στα μονά
εισαγωγικά χρησιμοποιούμε την παράμετρο –n:
sed –n ‘1,3 p’ file1
file1 file1
Gene1
Gene1 Gene1
Gene1
Gene2
sed ‘1,3 p’ file1 Gene2 Sed -n ‘1,3 p’ file1 Gene1
Gene2
Gene3 Gene2 Gene2
Gene3
Gene4 Gene3 Gene3
Gene4
Gene5 Gene3
Gene5
Gene4
Gene5
Θέλουμε να εκτυπώσουμε τις γραμμές 6 έως το τέλος του αρχείου file1 στο
terminal. Εκτελούμε:
sed -n ‘6,$ p’ file1
Αν το μοτίβο word1 εμφανίζεται περισσότερες από μία φορές σε μια γραμμή και
θέλω να τροποποιήσω μόνο την δεύτερη εμφάνιση του μοτίβου, εκτελώ:
sed -n ‘s/word1/word2/2 p’ file1
sed: stream editor – Παράδειγμα 4 =
Θέλουμε να εκτυπώσουμε τα νούμερα των γραμμών στις οποίες εμφανίζεται το
μοτίβο word1, στο αρχείο file1. Εκτελούμε:
sed -n ‘/word1/ =’ file1
• Δεν του λέμε πουθενά να εκτυπώσει περιεχόμενα από τις 4 γραμμές που
πήρε από το input_test!
Βασική σύνταξη
• Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο
terminal, αν το input_test έχει 4 γραμμές, με τα νούμερα 1-4;
awk 'BEGIN {print "this is the beginning"}
{print "awk just took a line from input file called input_test"}
END {print "this is the end"}' input_test
Βασική σύνταξη
Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο terminal, αν το input_test
έχει 4 γραμμές, με τα νούμερα 1-4;
awk 'BEGIN {print "this is the beginning"}
{print "awk just took a line from input file called input_test"}
END {print "is this the end?"; print "no, this is the end"}' input_test
Βασική σύνταξη
Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο terminal, αν το
input_test έχει 4 γραμμές, με τα νούμερα 1-4;
awk 'BEGIN {print "this is the beginning"}
{print "awk just took a line from input file called input_test"; print "content of
this line is $1"}
END {print "is this the end?"; print "no, this is the end"}' input_test
Βασική σύνταξη
Πού υπάρχει λάθος στην παρακάτω εντολή;
awk 'BEGIN {print "this is the beginning"}
{print "awk just took a line from input file called input_test"}
END {print is this the end?"; print "no, this is the end"}' input_test
Μεταβλητές (variables)
• Οι μεταβλητές έχουν κάποιο όνομα που τους δίνουμε εμείς και
κάποιο περιεχόμενο.
• Το περιεχόμενο μπορούμε να το ορίσουμε με το =
• Επίσης, το περιεχόμενο μπορεί να μεταβάλλεται, καθώς εκτελείται το
πρόγραμμα.
• Το περιεχόμενο μιας μεταβλητής μπορεί να περιέχει είτε νούμερα
είτε συμβολοσειρές. Στις συμβολοσειρές τα περιεχόμενα
περικλείονται σε διπλά εισαγωγικά ""
Π.χ.
• X=10;
• X="this is a test”;
Πράξεις
• Πρόσθεση: +
• Αφαίρεση: -
• Πολλαπλασιασμός: *
• Διαίρεση: /
• Υπόλοιπο διαίρεσης: % (π.χ. Χ=7%3 το υπόλοιπο είναι ίσο με 1)
Έστω X έχει μια τιμή; Αν θέλω να αυξήσω την τιμή του Χ κατά 1, τότε:
X=X+1;
Ή
Χ++;
Ή
Χ+=1;
Αντίστοιχα, αν θέλω να μειώσω την τιμή του Χ κατά 1, τότε:
X=X-1;
Ή
Χ--;
Ή
Χ-=1;
Πράξεις
Αν θέλω να αυξήσω την τιμή του X κατά 5;
X=X+5;
Ή
Χ+=5;
Π.χ. Στην παρακάτω εντολή, τι περιμένετε ότι θα εκτυπωθεί;
awk 'BEGIN {x=5; x+=2; print x}'
Πράξεις
int(x): μετατρέπει τον αριθμό x σε ακέραιο, χωρίς στρογγυλοποίηση.
Τι θα εκτυπωθεί από την παρακάτω εντολή;
awk 'BEGIN {x=1.8; print int(x)}'
Η τιμή 1.
Χειρισμός συμβολοσειρών
Αποκοπή περιοχής μιας συμβολοσειράς (substring) με την παρακάτω
εντολή:
substr(string, position, fragment_length)
Αν στην παραπάνω εντολή δεν δώσουμε το fragment_length, τότε θα
αποκοπεί το κομμάτι από την θέση position μέχρι το τέλος της
συμβολοσειράς string.
Τι θα εκτυπωθεί στην παρακάτω γραμμή;
awk 'BEGIN {x="abcab "; y=substr(x, 2, 1); print y}’
Τι θα εκτυπωθεί στην παρακάτω γραμμή;
awk 'BEGIN {x="abcab "; y=substr(x, 2); print y}’
x=“first string”;
y=“second string”;
z=x y;
To z τώρα περιέχει την συμβολοσειρά: “first stringsecond string”
1 2 3 4 Δείκτες
A 9 @ D5 Στοιχεία
Συστοιχίες – Πίνακες (arrays)
Ο πίνακας test_array έχει 4 στοιχεία, όπως φαίνεται παρακάτω.
Πρόσβαση στα στοιχεία του πίνακα test_array:
• 1ο στοιχείο: test_array[1]
• 2ο στοιχείο: test_array[2]
Κτλ...
1 2 3 4 Δείκτες
A 9 @ D5 Στοιχεία
Άσκηση 1
Το file1 έχει 5 αριθμούς, τον καθένα σε μία γραμμή.
Από τo file1, υπολογίστε το άθροισμα και τον μέσο όρο των αριθμών της
στήλης 1.
Tips:
Αρχικά ορίστε μια μεταβλήτη (ονομάστε την sum) που να ξεκινάει με την
τιμή μηδέν. Σε αυτή την μεταβλητή θα προσθέτετε τον αριθμό που παίρνετε
από την κάθε γραμμή. Χρησιμοποιείστε το $1.
Επίσης, ορίστε μια μεταβλητή (ονομάστε την counter) που να μετράει
πόσες γραμμές διαβάστηκαν από το file1. Χρησιμοποιείστε το ++ για
προσαύξηση κατά 1.
Άσκηση 1 - Λύση
awk 'BEGIN {counter=0;sum=0}
{sum=sum+$1;counter++}
END {print sum, sum/counter}' file1
Άσκηση 2
Το file1 έχει 10 αριθμούς σε 5 γραμμές (2 αριθμοί/γραμμή).
Από τo file1, υπολογίστε το άθροισμα και τον μέσο όρο των αριθμών
της στήλης 1 και στήλης 2.
Tips: Με το $1 παίρνουμε την 1η στήλη και με το $2 την 2η. Επίσης,
ορίστε τις κατάλληλες μεταβλητές για τους αριθμούς της πρώτης
στήλης και τις κατάλληλες μεταβλητές για τους αριθμούς της δεύτερης
στήλης.
Το awk μας δίνει τη δυνατότητα να ελέγξουμε για όλες τις γραμμές ενός αρχείου μια (ή και
περισσότερες) υπόθεση με το if. Εάν ισχύει, τότε θα εκτελεστούν μια σειρά από συγκεκριμμένες
εντολές, αλλιώς δεν θα εκτελεστούν.
Επίσης, μπορούμε να συνδυάσουμε περισσότερους από έναν έλεγχο υποθέσεων μέσα στο ίδιο
if με το AND (&&) ή το OR (||).
Awk - if
[Link]
ID Num1 Num2
ENSG0001 2 1
ENSG0002 0.8 3
ENSG0003 1.2 0.1
…… ……. …….
Για το παραπάνω αρχείο, θέλω να τυπωθούν στο αρχείο [Link] όλες εκείνες οι γραμμές
όπου ο αριθμός της στήλης 2 (Num1) να είναι μεγαλύτερος από 1. Η υπόθεση μπαίνει μέσα
στην παρένθεση.
awk ‘{if ($2 > 1) print $0 }’ [Link] > [Link]
Για το παραπάνω αρχείο, θέλω να τυπωθούν στο αρχείο [Link] όλες εκείνες οι γραμμές
όπου ο αριθμός της στήλης 3 (Num2) να είναι ίσος με 1. Η υπόθεση μπαίνει μέσα στην
παρένθεση.
awk ‘{if ($3 == 1) print $0 }’ [Link] > [Link]
Για το παραπάνω αρχείο, θέλω να τυπωθούν στο αρχείο [Link] όλες εκείνες οι γραμμές
όπου ο αριθμός της στήλης 3 (Num2) να είναι μικρότερος ή ίσος με το 1. Η υπόθεση μπαίνει
μέσα στην παρένθεση.
awk ‘{if ($3 <= 1) print $0 }’ [Link] > [Link]
Awk – if – AND - OR
[Link]
ID Num1 Num2
ENSG0001 2 1
ENSG0002 0.8 3
ENSG0003 1.2 0.1
…… ……. …….
Για το παραπάνω αρχείο, θέλω να τυπωθούν στο αρχείο [Link] όλες εκείνες οι γραμμές
όπου ο αριθμός της στήλης 2 (Num1) να είναι μεγαλύτερος από 1 KAI μικρότερος από 2. Η
υπόθεση μπαίνει μέσα στην παρένθεση.
awk ‘{if ($2 > 1 && $2 < 2) print $0 }’ [Link] > [Link]
Για το παραπάνω αρχείο, θέλω να τυπωθούν στο αρχείο [Link] όλες εκείνες οι γραμμές
όπου ο αριθμός της στήλης 2 (Num1) να είναι μικρότερος από 1 Η’ μεγαλύτερος από 1.5. Η
υπόθεση μπαίνει μέσα στην παρένθεση.
awk ‘{if ($2 < 1 || $2 > 1.5) print $0 }’ [Link] > [Link]
Για το παραπάνω αρχείο, θέλω να τυπωθούν στο αρχείο [Link] όλες εκείνες οι γραμμές
όπου η στήλη 1 (ID) να γράφει ENSG0002. Η υπόθεση μπαίνει μέσα στην παρένθεση.
awk ‘{if ($1 == “ENSG0002”) print $0 }’ [Link] > [Link]
Άσκηση
Τοποθεσία αρχείων
Desktop
Βρισκόμαστε στο Desktop και τα αρχεία που μας ενδιαφέρουν από το ανθρώπινο
γονιδίωμα βρίσκονται στους υποκαταλόγους:
• genes
• transcription
• gene_regulations
Μέσα στον κάθε κατάλογο υπάρχει το αντίστοιχο/α αρχείο/α.
Τα αρχεία
[Link]
gene_identifier gene_name chromosome
ENSG0001 Gene_A chrom_1
ENSG0002 Gene_B chrom_2
ENSG0003 Gene_C chrom_1
…… ……. …….
[Link]
TF_name target_name regulation_type
Gene_A Gene_B activate
Gene_A Gene_C activate
Gene_C Gene_F suppress
…… ……. …….
[Link] [Link]
gene_identifier Cancer Heart gene_identifier Diabetes
ENSG0001 2 1 ENSG0001 1
ENSG0002 0.8 3 ENSG0003 1.5
ENSG0003 1.2 0.1 ENSG0002 4.5
…… ……. ……. …… …….
Ασκήσεις
1) Δημιουργείστε κάτω από το Desktop τον υποκατάλογο data και μεταφέρετε εκεί όλα τα
προηγούμενα αρχεία και μετά διαγράψτε τους άδειους υποκαταλόγους.
Ασκήσεις
7) Ενώστε τα αρχεία [Link] & [Link] σε ένα αρχείο όπου σε κάθε
γραμμή να υπάρχουν οι πληροφορίες σχετικής μεταβολής της έκφρασης ενός γονιδίου σε
όλες τις συνθήκες που ελέγχθηκε. Θεωρούμε ότι οι μετρήσεις στο καθένα από τα 2 αρχεία
[Link] & [Link] γίνονται για το σύνολο των ανθρώπινων γονιδίων,
δεν είναι απαραίτητο όμως να είναι γραμμένα με αλφαβητική σειρά.
[Link] [Link]
gene_identifier Cancer Heart gene_identifier Diabetes
ENSG0001 2 1 ENSG0001 1
ENSG0002 0.8 3 ENSG0003 1.5
ENSG0003 1.2 0.1 ENSG0002 4.5
…… ……. ……. …… …….
8) Ποιά γονίδια
• εμφανίζονται να υπερ-εκφράζονται στον καρκίνο (έκφραση > 2);
• Ποιά είναι τα 10 γονίδια με την πιο έντονη υπερ-έκφραση στον καρκίνο; Σε ποιά
χρωμοσώματα εντοπίζονται;
10) Ποιά γονίδια εμφανίζονται να μην έχουν σημαντική μεταβολή της έκφρασής τους
(υπερ-έκφραση ή υπο-έκφραση) στον καρκίνο (0.5 < μεταβολή έκφρασης < 2);
11) Ποιά γονίδια εμφανίζονται να υπερ-εκφράζονται και στον καρκίνο και στον διαβήτη;
Λύσεις
1) Δημιουργείστε κάτω από το Desktop τον υποκατάλογο data και μεταφέρετε εκεί όλα τα
προηγούμενα αρχεία και μετά διαγράψτε τους άδειους υποκαταλόγους.
mkdir data
mv ./genes/[Link] ./data/
mv ./transcription/transcription* ./data/
mv ./regulations/[Link] ./data/
rm –r ./genes/
rm –r ./transcription/
rm –r ./regulations/
cd ./data
Λύσεις
2) Στο αρχείο [Link] έχουμε πληροφορίες για όλα τα ανθρώπινα γονίδια.
• Πόσα είναι τα ανθρώπινα γονίδια;
• Πόσα είναι τα ανθρώπινα χρωμοσώματα;
• Ποιό χρωμόσωμα έχει τα περισσότερα γονίδια;
Βρισκόμαστε στοn κατάλογο data, όπου βρίσκονται πλέον όλα τα αρχεία που μας ενδιαφέρουν.
Παραπάνω, χρησιμοποιήσαμε την εντολή sort –n για να κάνουμε sorting με βάση αριθμητικές
τιμές.
Ποιό χρωμόσωμα έχει τα περισσότερα γονίδια;
tail –n 1 chroms_count
Λύσεις
3) Για πόσα ανθρώπινα γονίδια γνωρίζουμε ότι είναι μεταγραφικοί παράγοντες;
awk ‘{print $1}’ [Link] > [Link]
sort [Link] | uniq | wc -l
Λύσεις
transcription3_joined.txt
gene_identifier Cancer Heart Diabetes
ENSG0001 2 1 1
ENSG0002 0.8 3 4.5
ENSG0003 1.2 0.1 1.5
…… ……. ……. …..
8) Ποιά γονίδια
• εμφανίζονται να υπερ-εκφράζονται στον καρκίνο (έκφραση >= 2);
awk ‘{if ($2 >= 2) print $1}’ transcription3_joined.txt > cancer_upregulated.txt
• Ποιά είναι τα 10 γονίδια με την πιο έντονη υπερ-έκφραση στον καρκίνο; Σε ποιά
χρωμοσώματα εντοπίζονται;
awk ‘{if ($2 >= 2) print $2”\t”$1}’ transcription3_joined.txt > cancer_upregulated.txt
sort -n cancer_upregulated.txt | tail –n 10 > cancer_top10_upregulated.txt
awk ‘{print $2}’ cancer_top10_upregulated.txt > top10_list
10) Ποιά γονίδια εμφανίζονται να μην έχουν σημαντική μεταβολή της έκφρασής τους
(υπερ-έκφραση ή υπο-έκφραση) στον καρκίνο (0.5 < μεταβολή έκφρασης < 2);
awk ‘{if ($2 > 0.5 && $2 < 2) print $1}’ transcription3_joined.txt > cancer_not_regulated.txt
11) Ποιά γονίδια εμφανίζονται να υπερ-εκφράζονται και στον καρκίνο και στον διαβήτη;
awk ‘{if ($2 > 2 && $4 < 2) print $1}’ transcription3_joined.txt >
cancer_diabetes_upregulated.txt
Εντολές Διαχείρισης
Εγκατάσταση προγραμμάτων
Π.χ. για την δημιουργία του πακέτου [Link] που περιέχει μέσα του τρία αρχεία file1 file2 &
file3, χρησιμοποιούμε την εντολή:
gzip: συμπίεση
αρχείων
Με το πρόγραμμα gzip μπορούμε να συμπιέσουμε ένα αρχείο, όπως με το zip
στα windows. Άρα, η μεταφορά του συμπιεσμένου αρχείου μέσω διαδικτύου
γίνεται πιο εύκολη.
Π.χ. για την συμπίεση ενός αρχείου file1, χρησιμοποιούμε την εντολή:
gzip file1
Πλέον το file1 είναι συμπιεσμένο και εμφανίζεται ως [Link]
Η κατάληξη .gz σημαίνει ότι το αρχείο έχει συμπιεστεί με το πρόγραμμα gzip
Εγκατάσταση προγράμματος με το
configure & make
Συνήθως όταν κατευάζουμε ένα πρόγραμμα (από το δίκτυο) που θέλουμε να το
εγκαταστήσουμε στο σύστημα, αυτό είναι συμπιεσμένο στη μορφή: [Link]
Επομένως πρέπει πρώτα να το αποσυμπιέσουμε.
Στη συνέχεια, μέσα στον κατάλογο που δημιουργείται υπάρχει ένα αρχείο
README ή INSTALL που εξηγεί ποιά βήματα πρέπει να ακολουθήσουμε για να
εγκαταστήσουμε το πρόγραμμα.
Συνήθως πρέπει πρώτα να εκτελέσουμε το script που ονομάζεται configure με
την παρακάτω εντολή:
./configure
Μετά εκτελούμε την εντολή:
make
Και μετά εκτελούμε την εντολή:
make install
Τί κάνει το configure
Συνήθως, πρώτα εκτελούμε το script που ονομάζεται configure με την παρακάτω εντολή :
./configure
Αν τα απαιτούμενα πακέτα δεν υπάρχουν στο σύστημα, το configure τερματίζει και μας
ενημερώνει για το τί λείπει.
Τέλος, ή εντολή make install κάνει εγκατάσταση του εκτελέσιμου προγράμματος που
δημιουργήθηκε από την προηγούμενη εντολή μέσα σε κάποιο άλλο κατάλογο του
συστήματος, π.χ. στο /usr/local/bin από όπου πλέον όλοι οι χρήστες του συστήματος θα
μπορούν να χρησιμοποιήσουν αυτό το πρόγραμμα. Επιπλέον, ο αρχικός κατάλογος μέσα
στον οποίο δημιουργήσαμε το πρόγραμμα με τις 3 παραπάνω εντολές δεν χρειάζεται
άλλο.
Με την παρακάτω εντολή αναζητούμε το αρχείο file1 στον κατάλογο Desktop (ή σε κάποιον από
τους υποκαταλόγους του) του χρήστη user1.
• Με ποιά εντολή θα αναζητούσαμε τον υποκατάλογο dir1 μέσα στον κατάλογο Desktop (ή σε
κάποιον από τους υποκαταλόγους του) του χρήστη user1;
• Με ποιά εντολή θα αναζητούσαμε το αρχείο file1 μέσα σε όλο το σύστημα;
Μία παρόμοια εντολή με τη find είναι και η locate, αλλά προϋποθέτει την προηγούμενη
δημιουργία ενός ευρετηρίου (index)
ssh user1@[Link]
Στη συνέχεια μας ζητείται το password του λογαριασμού user1, οπότε γράφουμε Pswd1 και
πατούμε το πλήκτρο Enter.
Πλέον, ότι εντολή εκτελέσουμε στο terminal είναι ως user1 στον υπολογιστή [Link]
Για να σταματήσει το ssh στο συγκεκριμένο terminal εκτελούμε την εντολή exit.
Επίσης, μπορούμε να συνδεθούμε σε ένα άλλο υπολογιστή μέσω του γραφικού περιβάλλοντος,
με το Connect to Server.
scp: secure copy
Μέσω του κρυπτογραφημένου πρωτοκόλου ssh μπορούμε να μεταφέρουμε αρχεία (ή και
ολόκληρους καταλόγους) από έναν υπολογιστή σε έναν άλλο. Αυτό γίνεται με την εντολή scp και
στη συνέχεια γράφουμε το όνομα του αρχείου που θέλουμε να μεταφερθεί και μετά το σημείο
άφιξης.
Έστω ότι στον υπολογιστή μας, στο ~/Desktop βρίσκεται ένα αρχείο file1.
Το αρχείο αυτό θέλουμε να το αντιγράψουμε στον υπολογιστή [Link], στον χρήστη
user1, στον κατάλογο: /home/user1/Desktop/dir1.
Εκτελούμε από το terminal του δικού μας υπολογιστή (ενώ βρισκόμαστε στο δικό μας Desktop):
Έστω ότι στον άλλο υπολογιστή ([Link]), στο /home/user1/Desktop/dir2 βρίσκεται ένα
αρχείο file2.
Το αρχείο αυτό θέλουμε να το αντιγράψουμε στον δικό μας υπολογιστή, στο Desktop.
Ενώ βρισκόμαστε στο Desktop, εκτελούμε:
wget [Link]
ps : process status
top
kill
Όταν λειτουργεί ένα πρόγραμμα, αποτελεί μια υπολογιστική διαδικασία.
Η κάθε διαδικασία έχει έναν μοναδικό αριθμό ταυτότητα, το process ID (PID).
Με την εντολή ps -e μπορούμε να δούμε όλες τις υπολογιστικές διαδικασίες
(processes).
Επίσης, με την εντολή top μπορούμε να δούμε σε πραγματικό χρόνο τις
υπολογιστικές διαδικασίες, σε ποιόν χρήστη ανήκουν, για πόσο χρόνο
λειτουργούν, τον υπολογιστικό τους φόρτο στον επεξεργαστή και πόσο μνήμη
RAM καταλαμβάνουν. Για να τερματίσει το top πληκτρολογούμε q
Αν θέλουμε να τερματίσουμε μια διαδικασία και δεν είναι δυνατόν από το
γραφικό περιβάλλον (π.χ. «κόλησε» το Word και δεν ανταποκρίνεται), πρώτα
βρίσκουμε τον αριθμό ταυτότητας της εντολής (με top) και μετά με την εντολή
kill -9 και τον αριθμό ταυτότητας της διαδικασίας (π.χ. PID 1014) την
τερματίζουμε από το terminal.
kill -9 1014
date, sleep, at : Εντολές σχετικές με χρόνο
Με την εντολή date βλέπουμε την ημερομηνία και ώρα του συστήματος.
Με την εντολή sleep και καθορίζοντας τα δευτερόλεπτα το terminal περιμένει για
αυτό το χρονικό διάστημα.
θα δούμε στο terminal μια ημερομηνία, μετά θα υπάρξει παύση για 10 δευτερόλεπτα
και μετά θα δούμε τη νέα ημερομηνία.
Το sleep είναι χρήσιμο όταν θέλουμε να εκτελεστούν στη σειρά κάποιες εντολές και
μεταξύ τους να μεσολαβεί συγκεκριμένο χρονικό διάστημα. Π.χ. Όταν με την εντολή
wget ανακτούμε δεδομένα από πολλά αρχεία από μια ιστοσελίδα και θέλουμε να
μεσολαβεί κάποιο χρονικό διάστημα μεταξύ των ανακτήσεων, για να μην
καταλάβουμε όλο το internet bandwindth της ιστοσελίδας. Σε ορισμένες περιπτώσεις
αλόγιστη χρήση του wget χωρίς sleep μπορεί να ερμηνευθεί και ως Denial of
Service (DoS) attack.
Επίσης, με την εντολή at μπορούμε να ζητήσουμε να εκτελεστεί μια εντολή, σειρά
εντολών ή πρόγραμμα σε μια συγκεκριμένη χρονική στιγμή.
alias: ψευδώνυμο
Με την εντολή alias μπορούμε να ορίσουμε ένα σύντομο ψευδώνυμο για μια
(συνήθως περίπλοκη) εντολή με πολλές παραμέτρους.
Π.χ. Αντί να εκτελούμε την εντολή ls –al μπορούμε να ορίσουμε ένα
ψευδώνυμο, το ll και να καλούμε αυτό. Φυσικά, για ομαλή λειτουργία του
συστήματος το ψευδώνυμο δεν πρέπει να έχει το ίδιο όνομα με κάποια άλλη
εντολή του συστήματος. Ο ορισμός του ψευδώνυμου γίνεται με την παρακάτω
εντολή, αλλά είναι προσωρινός, για όσο λειτουργεί το συγκεκριμένο κέλυφος.
alias ll = ‘ls –al’
Θ
Δομή αρχείων/καταλόγων στο Linux
/ root
Θ
Δομή αρχείων/καταλόγων στο Linux
/ root
Θ
Δομή αρχείων/καταλόγων στο Linux
/ root
Βασικές εντολές
Θ
Σύνταξη εντολών (i)
Θ
Σύνταξη εντολών (iii)
Στην ίδια γραμμή μπορώ να γράψω και δύο ή περισσότερες εντολές, που θα
εκτελεστούν η μία μετά το πέρας της άλλης. Για να γίνει αυτό πρέπει τις εντολές
να τις χωρίσω μεταξύ τους με το ;
Π.χ.: Εντολή1 ; Εντολή2 ; Εντολή3
Θ
Σύνταξη εντολών (v)
Μπορούμε να δούμε ποιές εντολές εκτελέσαμε πιο πριν πληκτρολογώντας την
εντολή history.
Τα βέλη είναι πολύ χρήσιμα όταν εκτελούμε μια πολύ μεγάλη και περίπλοκη
εντολή και πρέπει μετά από λίγο να την ξαναπληκτρολογήσουμε. Έτσι, και
γλιτώνουμε χρόνο και αποφεύγουμε λάθη κατά την πληκτρολόγηση.
Θ
Σύνταξη εντολών (vi)
Κατά την σύνταξη μιας εντολής μπορώ να χρησιμοποιήσω wild cards, δηλαδή
σύμβολα που μπορούν να σημαίνουν οποιοδήποτε χαρακτήρα ή χαρακτήρες.
Το σύμβολο για το wild card είναι ο αστερίσκος *
Π.χ. Βρίσκομαι σε ένα directory που έχει 15 αρχεία, τα file1 έως file15 και το
doc1.
Θέλω να σβήσω τα αρχεία file1 – file15, αλλά όχι το doc1.
Αντί να εκτελέσω την εντολή για το κάθε ένα αρχείο ξεχωριστά, μπορώ να του
πω να σβήσει όλα εκείνα τα αρχεία που ξεκινούν με τους χαρακτήρες “file”
rm file*
Α
Οδηγίες χρήσης μιας εντολής
Η εντολή man μας δίνει πληροφορίες για μια εντολή.
Πληκτρολογούμε man και μετά την εντολή ls:
man ls
Το man έχει μια πληθώρα πληροφοριών για την εντολή που συνήθως
κουράζουν τον αναγνώστη. Μια καλή πηγή πληροφοριών για εντολές συνήθως
συναντάται σε προσωπικές ιστοσελίδες στο διαδίκτυο (να ναι καλά το Google
search!!!). Το man συνήθως είναι καλή πηγή για να μας θυμίσει τι κάνουν
κάποιες ειδικές παράμετροι μιας εντολής.
Θ
• pwd από το present working directory. Δείχνει την πλήρη διεύθυνση του
καταλόγου μέσα στον οποίο βρισκόμαστε.
Θ
Βασικές εντολές πλοήγησης
Βρίσκομαι στο directory PC1.
Η πλήρης διεύθυνσή του είναι /home/PC1
ls /home/PC1/dir2/dir3
dir1 dir2
file1
ls –l
To –l αλλάζει την μορφοποίηση των
αποτελεσμάτων.
ls –a
dir3 μας δείχνει ακόμα και κρυφά
αρχεία/directories (το όνομά τους αρχίζει
με την τελεία .)
Θ
Πλοήγηση στο Linux
/ root
/ root
A
Login ως guest
/ root
guest-
xxx
Επειδή έκανα login as guest, δημιουργείται ένας προσωρινός λογαριασμός στο /tmp που
ονομάζεται guest-xxx, όπου xxx είναι τυχαία γράμματα και νούμερα που αλλάζουν κάθε φορά.
Οτιδήποτε δημιουργήσω σε αυτό τον λογαριασμό καταστρέφεται με το logout.
A
Login ως guest - pwd
/ root
guest-
xxx
Με το που κάνω login as guest, ξεκινάω από την κορυφή των directories που ανήκουν στον
guest. Για να δω που βρίσκομαι, εκτελώ:
pwd
Το terminal δείχνει: /tmp/guest-xxx
A
Login ως guest - ls
/ root
guest-
xxx
Clear
Πληκτρολογήστε την εντολή clear για να σβήσει ότι υπήρχε
γραμμένο στο terminal.
A
Μετακίνηση με το cd
/ root
guest-
xxx
A
Οι εντολές more, head, tail
A
Ένωση αρχείων με το cat
Έχουμε το file1 που μέσα του γράψαμε 3 ονόματα.
Θέλουμε να δημιουργήσουμε ένα δεύτερο αρχείο
file2 που να έχει μέσα του το όνομα eleni.
Αν εκτελούσατε:
cat file2 file1 > file3
Τι θα βλέπατε μέσα στο file3?
Αν εκτελούσατε:
cat file2 file1 file2 > file3
Τι θα βλέπατε μέσα στο file3?
A
Αντιγραφή αρχείου με το cp
A
Δημιουργία καταλόγου με το mkdir – Μετακίνηση
αρχείων με το mv
Αν εκτελούσαμε:
mv file1 file1r
Η εντολή δεν θα λειτουργούσε, γιατί η εντολή θα
file1 έψαχνε το file1 μέσα στον κατάλογο που
r βρισκόμαστε τώρα, δηλαδή μέσα στο Desktop.
filesdir Επειδή όμως το file1 βρίσκεται σε άλλο κατάλογο,
file2 file3 πρέπει να δώσουμε είτε την πλήρη είτε την σχετική
r r
διεύθυνση του file1, για να δουλέψει η εντολή mv.
A
Μετονομασία αρχείων με το mv
Η πλήρης διεύθυνση του file1 είναι:
/tmp/guest-xxx/Desktop/filesdir/file1
A
Διαγραφή καταλόγου με το rm -r
• Ένα αρχείο μπορεί να είναι προσβάσιμο μόνο για μια από τις παραπάνω τρεις
ενέργειες (διάβασμα, τροποποίηση, εκτέλεση), ή για οποιoδήποτε συνδυασμό
τους.
Θ
Δικαιώματα αρχείων και καταλόγων
Παρακάτω φαίνονται τα δικαιώματα ενός αρχείου στο οποίο όλοι έχουν
πρόσβαση και για ανάγνωση και για τροποποίηση και για εκτέλεση.
rwxrwxrwx
Στο παρακάτω αρχείο μόνο ο χρήστης (user) έχει πρόσβαση για ανάγνωση,
τροποποίηση, εκτέλεση, ενώ οι υπόλοιποι (group & others) έχουν πρόσβαση
μόνο για ανάγνωση
rwxr--r--
Στο παρακάτω αρχείο μόνο ο χρήστης (user) έχει πρόσβαση για ανάγνωση,
εκτέλεση, ενώ οι υπόλοιποι (group & others) δεν έχουν πρόσβαση για τίποτα.
r-x------
Θ
Δικαιώματα αρχείων και καταλόγων - chmod
Με την εντολή chmod μπορούμε να τροποποιήσουμε τα δικαιώματα σε ένα αρχείο.
Άρα 3 νούμερα αρκούν για τα δικαιώματα του χρήστη, του group, των υπολοίπων.
Το νούμερο 777 σημαίνει ότι και οι τρεις (user/group/other) έχουν όλα τα δικαιώματα
(read-write-execute )
Α
Δικαιώματα αρχείων και καταλόγων - chmod
Με την εντολή chmod μπορούμε να τροποποιήσουμε τα δικαιώματα σε ένα αρχείο.
Με την εντολή wc (word count) μπορούμε να μετρήσουμε τον αριθμό των γραμμών ή
των λέξεων ή των χαρακτήρων σε ένα αρχείο
Για να μετρήσουμε τις γραμμές, λέξεις, χαρακτήρες του αρχείου file1 ταυτόχρονα
εκτελούμε:
wc file1
Θ
Η εντολή sort
[Link]
[Link]
Α
Η εντολή sort
Μετά δείτε με την εντολή more αν πράγματι άλλαξε το περιεχόμενο του file_unsorted.
Τι συνέβη?
Η εντολή sort δούλεψε και μας έδειξε στο terminal τα αποτελέσματά της πάνω στο
αρχείο file_unsorted, χωρίς όμως να το πειράξει.
Αν θέλουμε να σωθούν τα αποτελέσματα του sort πάνω στον file_unsorted πρέπει να
τα κατευθύνουμε σε ένα νέο αρχείο με κάποιο όνομα, π.χ. file_sorted.
Τώρα εκτελέστε:
sort file_unsorted > file_sorted
Δείτε τώρα με την εντολή more τα περιεχόμενα του file_unsorted & μετά τα
περιεχόμενα του file_sorted.
Α
Η εντολή sort -n
Δείτε τώρα με την εντολή more τα περιεχόμενα του file_unsorted & μετά τα
περιεχόμενα του file_sorted.
Α
Η εντολή uniq
Με την εντολή uniq εμφανίζουμε τις μοναδικές γραμμές μέσα σε ένα αρχείο. Πρέπει
όμως να έχει προηγηθεί sort του αρχείου.
Στο αρχείο file_unsorted είχαμε 6 γραμμές, με μία επανάληψη (το: 1 maria) στις
γραμμές 2 & 6.
Α
Η χρήση των pipes |
Θ
vi editor • Για να γράψουμε κάτι μέσα στο αρχείο ή
να τροποποιήσουμε το κείμενο, πρέπει
να βρισκόμαστε στο INSERT MODE. Σε
αυτό το MODE, ότι πληκτρολογήσουμε
γίνεται κείμενο μέσα στο αρχείο.
Α
vi editor
Άσκηση 2: Διαγραφή δεδομένων ενός αρχείου μέσω του
INSERT MODE
• Ανοίγω πάλι το προηγούμενο αρχείο (test1) με το vi editor.
• vi test1
• Θέλω να σβήσω ότι δεδομένα έχει το test1.
• Μπορώ να σβήσω τα προηγούμενα δεδομένα είτε μέσα από το COMMAND
MODE είτε μέσα από το INSERT MODE.
• Αν μπω στο INSERT MODE (πατώντας μια φορά i ενώ είμαι στο COMMAND
MODE) σβήνω τα δεδομένα με το DELETE. Πάω τον κέρσορα στο τέλος της
τελευταίας γραμμής (με τα βελάκια στο πληκτρολόγιο) και αρχίζω να σβήνω.
Εκτελέστε το.
Α
vi editor
Άσκηση 3: Μετακίνηση εντός του αρχείου μέσω
του COMMAND MODE
• Ανοίξτε πάλι το test1 με το vi. Βρίσκεστε στο COMMAND MODE.
• Για να μετακινήσετε τον κέρσορα στη δεύτερη γραμμή (δίχως τα βέλη του
πληκτρολόγιου), πληκτρολογείτε τον αριθμό της γραμμής 2 και αμέσως
μετά πατάτε ταυτόχρονα τα δύο πλήκτρα SHIFT και g
• Για να μετακινήσετε τον κέρσορα στην τελευταία γραμμή, χωρίς να ξέρετε
τον αριθμό της, πατάτε ταυτόχρονα τα δύο πλήκτρα SHIFT και g
• Θέλετε να πάει αυτόματα ο κερσόρας στην γραμμή και θέση εκείνη που έχει το όνομα
ενός συγκεκριμένου ατόμου. Για να γίνει αυτό, πρέπει να βρίσκεστε στο COMMAND
MODE. Πληκτρολογείτε / και στη συνέχεια βλέπετε τον κέρσορα να πηγαίνει στην
τελευταία γραμμή. Πληκτρολογείτε το όνομα του ατόμου, πατάτε ENTER και ο
κέρσορας πηγαίνει στην θέση που βρίσκεται το όνομα (αν υπάρχει).
• Αν το όνομα υπάρχει περισσότερες από μια φορές στο file, τότε κάθε φορά που
πατάτε / & ENTER, ο κέρσορας μετακινείται στην επόμενη θέση. Δεν είναι ανάγκη να
ξαναπληκτρολογήσετε το όνομα που ψάχνετε.
• Δοκιμάστε το ίδιο όπως παραπάνω, ψάχνοντας μέσα στο file για ένα συγκεκριμένο
γράμμα του αλφάβητου αντί για ένα ολόκληρο όνομα.
Α
vi editor
Άσκηση 5: αντικατάσταση χαρακτήρων εντός κειμένου
• Σε συνέχεια της προηγούμενης άσκησης, πάτε στο COMMAND MODE.
Θ
Awk: Επιλογή στήλης από ένα αρχείο
• awk ‘{print $1}’ test1 > test2
test1 test2
A1 B1
A2 B2 A1
A3 B3 A2
A3
B4
Α
Awk: Άσκηση 2
• Βρίσκεστε στο ίδιο directory με το test1, μέσα στο οποίο έχετε τις
πληροφορίες για 5 φίλους σας.
• Θέλετε να δείτε (στο terminal) μόνο τις πόλεις (δεύτερη στήλη) που
υπάρχουν μέσα στο test1.
• Από το terminal, τι εντολή πληκτρολογείτε;
• Θέλετε να βάλετε μόνο τις πόλεις (δεύτερη στήλη) που υπάρχουν μέσα στο
test1 σε ένα άλλο file με το όνομα [Link]
• Τι πληκτρολογείτε;
Α
paste: Επικόληση δύο αρχείων γραμμή προς γραμμή
• Θέλετε να ενώσετε τα δύο files ([Link] & [Link]) (το ένα δίπλα στο
άλλο) σε ένα νέο file με το όνομα merged_paste.txt. Πληκτρολογείστε:
• paste [Link] [Link] > merged_paste.txt
• Δείτε τα περιεχόμενα του merged_paste.txt για να καταλάβετε τι συνέβη.
• Επαναλάβετε την προηγούμενη εντολή αλλά με αντιστροφή της σειράς των
ονομάτων των 2 files. Δείτε πάλι τα περιεχόμενα του merged_paste.txt για
να καταλάβετε τι συνέβη.
• Μπορούμε να επικολήσουμε περισσότερα από 2 αρχεία μαζί;
A1 B1
B1
A1 A2 B2
B2
A2 A3 B3
B3
A3
B4
B4
Α
Join: Ένωση αρχείων με βάση μοναδικά κλειδιά
• Δημιουργείστε ένα file με όνομα f1, με τρείς σειρές, όπου στην πρώτη στήλη
έχετε έναν αύξοντα αριθμό, στην δεύτερη στήλη έχετε ένα όνομα.
• Δημιουργείστε ένα άλλο file με όνομα f2, με τρεις σειρές, όπου στην πρώτη
στήλη έχετε έναν αύξοντα αριθμό, στην δεύτερη στήλη έχετε μια πόλη.
• Εκτελέστε:
• join f1 f2 > f3
• Δείτε το f3 με το vi για να καταλάβετε τι συνέβη.
• Το join χρησιμοποιεί από κάθε input file τα στοιχεία της πρώτης στήλης ως
κλειδιά και ενώνει γραμμές από δύο files όταν έχουν το ίδιο κλειδί.
f1 f2 f3
Α
Join & sort: Άσκηση 2
• Πειραματιστείτε με τα 2 files f1 & f2 και αλλάξτε την σειρά των γραμμών στο
ένα από τα δύο και εκτελέστε πάλι το join για να δείτε πως συμπεριφέρεται.
Δείτε το f3 στο vi.
• Εκτελέστε πάλι join, αλλά αυτή την φορά για τα f1a & f2a. Δείτε το f3 στο vi.
• Όπως καταλάβατε, για να γίνει σωστά το join θα πρέπει να έχει προηγηθεί
sort.
• Πειραματιστείτε με τα 2 files f1α & f2α και προσθέστε μια νέα σειρά στο ένα
και εκτελέστε πάλι το join για να δείτε πως συμπεριφέρεται.
Συνδυαστική Άσκηση
• Σας δίνεται ένα αρχείο (BioGrid_interactions.txt) που περιέχει πρωτεϊνικές
και γενετικές αλληλεπιδράσεις από τον πολύ καλά μελετημένο οργανισμό
μοντέλο S. cerevisiae (ζυμομύκητας).
• Στην μία στήλη αναγράφεται το όνομα του ενός γονιδίου/πρωτεΐνης και στην
δεύτερη στήλη το όνομα του άλλου γονιδίου/πρωτεΐνης. Ένα
γονίδιο/πρωτεΐνη είναι δυνατόν να έχει περισσότερες από μια
αλληλεπιδράσεις. Στην τρίτη στήλη αναγράφεται η πειραματική μέθοδος
εντοπισμού. Στην τέταρτη στήλη το είδος της αλληλεπίδρασης
(γενετική/φυσική). Είναι δυνατόν μια αλληλεπίδραση να έχει εντοπιστεί με
περισσότερες από μια μεθόδους.
Συνδυαστική Άσκηση
Α
Η εντολή grep
Η εντολή grep μας επιτρέπει να δούμε/αποσπάσουμε μια γραμμή από ένα αρχείο
που περιέχει μια συγκεκριμένη λέξη ή σειρά χαρακτήρων.
Θεωρείται από τις πιο χρήσιμες εντολές του Linux/Unix.
Στο παρακάτω παράδειγμα, έχουμε ένα αρχείο με όνομα file1 με 6 γραμμές και 3
στήλες (αύξων αριθμό, όνομα, πόλη).
Θέλουμε να δούμε στο τερματικό ποιές γραμμές περιέχουν τους χαρακτήρες ‘giorgos’
Πρώτα δημιουργήστε το file1.
Εκτελέστε: grep ‘giorgos’ file1
file1 terminal
1 eleni larisa
2 maria larisa 3 giorgos larisa
3 giorgos larisa 6 giorgos volos
4 giannis athina
5 anna xanthi
6 giorgos volos
Α
Η εντολή grep -w
Με το vi τροποποιήστε την 6η γραμμή του file1 όπως στην εικόνα.
Στο τροποποιημένο αρχείο file1, με την παρακάτω εντολή θα εντοπιστούν οι γραμμές
3 & 6.
Εκτελέστε: grep ‘giorgos’ file1
file1 terminal
1 eleni larisa
2 maria larisa 3 giorgos larisa
3 giorgos larisa 6 giorgos2 volos
4 giannis athina
5 anna xanthi
6 giorgos2 volos
Χρησιμοποιώντας όμως την παράμετρο –w λέμε στο grep να εντοπίσει τις γραμμές
όπου το ‘giorgos’ εμφανίζεται ως ολόκληρη λέξη, οπότε τώρα θα εντοπιστεί μόνο η
γραμμή 3.
Εκτελέστε: grep –w ‘giorgos’ file1
Α
Η εντολή grep -n
Με την παράμετρο –n εμφανίζεται και ο αριθμός της γραμμής που εντοπίστηκε από
το grep.
Στο file1, με την βοήθεια του awk σώστε την δεύτερη στήλη (ονόματα) και την τρίτη
στήλη (πόλεις) σε ένα νέο αρχείο file1_2c3c.
file1_2c3c file2
eleni larisa
maria larisa 3:giorgos larisa
giorgos larisa 6:giorgos2 volos
giannis athina
anna xanthi
giorgos2 volos
Α
Η εντολή grep: για περισσότερα του ενός αρχεία
Τροποποιείστε τα αρχεία file1 & file2 όπως στην εικόνα παρακάτω, με το vi.
Στη συνέχεια θέλουμε να δούμε και στα δύο αρχεία ποιές γραμμές έχουν το όνομα
giorgos.
Εκτελούμε: grep ‘giorgos’ file1 file2
Όσα αρχεία θέλουμε να ψάξουμε τα γράφουμε στη σειρά, το ένα μετά το άλλο.
1 eleni larisa
2 maria larisa file1: 3 giorgos larisa
7 giorgos athina file1: 6 giorgos volos
3 giorgos larisa
8 anna patra file2: 7 giorgos athina
4 giannis athina
5 anna xanthi
6 giorgos volos
Α
grep -r
Α
grep -c
Με την παράμετρο –c εμφανίζεται και ο συνολικός αριθμός των γραμμών στις οποίες
εντοπίστηκε η λέξη/χαρακτήρες από το grep.
file1 terminal
eleni larisa
maria larisa 2
giorgos larisa
giannis athina
anna xanthi
giorgos2 volos
Α
grep -v
Στο file1, οι χαρακτήρες ‘giorgos’ υπάρχουν στην 3η και 6η γραμμή, άρα η παρακάτω
εντολή θα μας δώσει τις γραμμές 1, 2, 4, 5 που ΔΕΝ περιέχουν τους χαρακτήρες
‘giorgos’.
Εκτελούμε: grep -v ‘giorgos’ file1
file1 terminal
eleni larisa
maria larisa eleni larisa
giorgos larisa maria larisa
giannis athina giannis athina
anna xanthi anna xanthi
giorgos2 volos
Α
grep -i
Με την παράμετρο –i δεν παίζει ρόλο εάν οι χαρακτήρες που δώσαμε στο grep είναι
σε κεφαλαία ή μικρά γράμματα.
eleni larisa
maria larisa giorgos larisa
giorgos larisa Giorgos volos
giannis athina
anna xanthi
Giorgos volos
Α
grep -f
Με την παράμετρο –f δίνουμε το όνομα ενός αρχείου που περιέχει χαρακτήρες, με
τους οποίους θέλουμε να ψάξουμε σε ένα άλλο αρχείο.
Με το vi, δημιουργείστε το αρχείο file_s όπως φαίνεται στην εικόνα.
H παρακάτω εντολή θα κάνει grep στο file1 χρησιμοποιώντας τους χαρακτήρες που
υπάρχουν σε κάθε γραμμή του αρχείου file_s
Εκτελέστε: grep –f file_s file1
file_s
eleni
athina
file1 terminal
eleni larisa
maria larisa
giorgos larisa eleni larisa
giannis athina giannis athina
anna xanthi
Giorgos volos
Α
grep -l
Με την παράμετρο –l (L μικρό) το grep επιστρέφει τα ονόματα των αρχείων στα
οποία βρήκε τους χαρακτήρες/λέξεις με τα οποία ψάχνουμε.
terminal
Desktop
file1
file2
file_s file3
filesdir
file1 file2
Εισαγωγή στο Linux/Unix
Εργαστηριακή Άσκηση 3
Η/Υ 1ο έτος
Γρ. Αμούτζιας
Α
Egrep: Αναζήτηση με περισσότερα από ένα μοτίβα
To egrep είναι μια εντολή προέκταση της grep για regular expressions.
Θέλω να ψάξω στο αρχείο μου για γραμμές που έχουν κάποιο ή και τα δύο από τα
ονόματα-μοτίβα ‘giannis’ ‘eleni’. Χρησιμοποιούμε το σύμβολο ‘|’ (pipe).
Δημιουργείστε το παρακάτω αρχείο file1 με το vi και εκτελέστε την παρακάτω εντολή
για βρείτε τις γραμμές που περιέχουν τα ονόματα giannis ή eleni:
egrep ‘giannis|eleni’ file1
file1 terminal
eleni larisa
maria larisa
giorgos larisa eleni larisa
giannis athina giannis athina
anna xanthi
Giorgos volos
Θ
Egrep: Αναζήτηση πιο γενικών μοτίβων με regular
expressions
Πολλές φορές δεν αναζητούμε μια συγκεκριμένη λέξη ή σειρά χαρακτήρων, αλλά
ένα πιο γενικό μοτίβο χαρακτήρων.
Εκτελέστε την παρακάτω εντολή, για να βρείτε γραμμές όπου η λέξη ‘eleni’
βρίσκεται μόνο στην αρχή της γραμμής:
egrep ‘^eleni’ file1
file1 terminal
eleni larisa
giannis athina eleni larisa
anna xanthi
Giorgos eleni
Α
Egrep: μοτίβα που βρίσκονται στο τέλος μιας σειράς
Για να δηλώσουμε ότι το συγκεκριμένο μοτίβο πρέπει να βρίσκεται στο τέλος μιας
σειράς χρησιμοποιούμε το σύμβολο $ μετά το μοτίβο.
Εκτελέστε την παρακάτω εντολή για να βρείτε γραμμές όπου η λέξη ‘eleni’ βρίσκεται
μόνο στο τέλος της γραμμής:
file1 terminal
eleni larisa
giannis athina Giorgos eleni
anna xanthi
Giorgos eleni
Με ποιά εντολή θα βρούμε γραμμές που στην αρχή τους έχουν τη λέξη ‘eleni’ ή
στο τέλος έχουν τη λέξη ‘athina’ ?
Α
Egrep: μοτίβα που βρίσκονται στο τέλος μιας σειράς
Με ποιά εντολή θα βρούμε γραμμές που στην αρχή τους έχουν τη λέξη ‘eleni’ ή
στο τέλος έχουν τη λέξη ‘athina’ ?
Θ
Egrep: λέξεις που σε μια συγκεκριμένη θέση τους μπορεί
να υπάρχουν εναλλακτικά μια σειρά από κάποιους
χαρακτήρες/νούμερα/σύμβολα.
A11 larisa
B11 athina A11 larisa
a11 xanthi B11 athina
b11 eleni
Με ποιά εντολή θα εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με
μικρό γράμμα και ακολουθεί το 11;
Με ποιά εντολή θα εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με
μικρό γράμμα και ακολουθεί το 11;
egrep ‘^[a-z]11’ file1
file1 terminal
A11 larisa
B11 athina a11 xanthi
a11 xanthi b11 eleni
b11 eleni
Θ
Egrep:
Κάποιες φορές το regular expression θέλουμε να επαναλαμβάνεται περισσότερες από μία
φορές. Για να δηλώσουμε πόσες φορές θέλουμε να επαναλαμβάνεται, χρησιμοποιούμε:
{Χ}, αμέσως μετά από το υπο-μοτίβο, όπου Χ το νούμερο/φορές που θέλουμε να
επαναλαμβάνεται.
{Χ,Υ}, αμέσως μετά από το υπο-μοτίβο, όπου Χ& Υ το νούμερο/φορές που θέλουμε να
επαναλαμβάνεται από Χ έως Υ φορές.
Egrep:
Θέλω να εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με δύο κεφαλαία
γράμματα (οποιαδήποτε).
Εκτελέστε:
egrep ‘^[A-Z][Α-Ζ]11’ file1
Ή
egrep ‘^[A-Z]{2}11’ file1
file1 terminal
AA11 larisa
B11 athina
aa11 xanthi AA11 larisa
b11 eleni
abc321 XXX
Με ποιά εντολή θα εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με
οποιαδήποτε 3 μικρά γράμματα μία φορά και ακολουθούν νούμερα;
Α
Egrep:
Με ποιά εντολή θα εντοπίσετε τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με
οποιαδήποτε 3 μικρά γράμματα μία φορά και ακολουθούν νούμερα;
Εκτελέστε:
egrep ‘^[a-z][a-z][a-z][0-9]+’ file1
Ή
egrep ‘^[a-z]{3}[0-9]+’ file1
file1 terminal
AA11 larisa
B11 athina
aa11 xanthi abc321 XXX
b11 eleni
abc321 XXX
Egrep:
Στο παρακάτω παράδειγμα, θέλετε να εντοπίσετε τις γραμμές που ο κωδικός (1η
στήλη) ξεκινάει με ένα κεφαλαίο γράμμα, ακολουθεί ένα νούμερο, ακολουθεί ένα
μικρό γράμμα.
Εκτελέστε:
egrep ‘^[A-Z][0-9][a-z]’ file1
file1 terminal
A2a11 larisa
B11 athina
a11 xanthi A2a11 larisa
1A2a11 eleni
Egrep:
file1 terminal
A2a11 larisa
B11 athina A2a11 larisa
a11 xanthi 1A2a11 eleni
1A2a11 eleni
Συνδυαστική Άσκηση
• Δημιουργήστε το παρακάτω αρχείο ([Link]) που περιέχει ρυθμιστικές
αλληλεπιδράσεις μεταξύ μεταγραφικών παραγόντων (transcription factors) και γονιδίων στα
οποία συνδέονται (στους προαγωγείς τους) και ρυθμίζουν την έκφρασή τους (target).
grep ‘^Gene_1’ [Link] | awk ‘{print $2}’ | sort | uniq > G1_targets.txt
wc -l G1_targets.txt
grep ‘activate’ [Link] | awk ‘{print $1}’ | sort | uniq > TF_activators.txt
grep ‘suppress’ [Link] | awk ‘{print $1}’ | sort | uniq > TF_suppressors.txt
wc -l TF_activators.txt
wc -l TF_suppressors.txt
Α
seq: Δημιουργία ακολουθίας αριθμών
Θέλετε να δημιουργήσετε μια ακολουθία αριθμών, τον ένα δίπλα από τον άλλο
που να διαχωρίζονται με : από το 1 μέχρι το 101, όπου ο κάθε αριθμός θα
αυξάνει κατά 10. Επίσης, όλα τα νούμερα θα πρέπει να έχουν τον ίδιο αριθμό
ψηφίων.
Εκτελέστε την παρακάτω εντολή:
seq –s “:” -w 1 10 101
Θέλετε να δημιουργήσετε μια ακολουθία αριθμών τον ένα κάτω από τον άλλο,
από το 101 έως το 1 με μείωση κατά 10, όπου τα νούμερα δεν θα έχουν τον ίδιο
αριθμό ψηφίων. Εκτελέστε:
seq 101 -10 1
Συνδυαστική άσκηση
Δημιουργείστε το παρακάτω αρχείο file1 με τα ονόματα γονιδίων, ένα μοναδικό
γονίδιο σε κάθε γραμμή.
Θέλετε να δημιουργήσετε ένα νέο αρχείο file2 και να προσθέσετε τον αύξοντα
αριθμό στην αρχή της κάθε γραμμής.
Οι αύξοντες αριθμοί θα πρέπει να έχουν τον ίδιο αριθμό ψηφίων.
Ποιές εντολές θα εκτελέσετε;
file1 file2
Gene1 01 Gene1
Gene2 02 Gene2
Gene3 03 Gene3
Gene4 04 Gene4
Gene5 05 Gene5
Gene6 06 Gene6
Gene7 07 Gene7
Gene8 08 Gene8
Gene9 09 Gene9
Gene10 10 Gene10
01 Gene1 01 Gene1
02 Gene2 02 Gene2
03 Gene3 03 Gene3
… … …
10 Gene10 10 Gene10
Θ
tr: αντικατάσταση χαρακτήρων
Με την εντολή tr (που σημαίνει translate ή transliterate) μπορούμε να αντικαταστήσουμε ένα σετ
χαρακτήρων με ένα άλλο σετ αντίστοιχων χαρακτήρων.
Επίσης με αυτή την εντολή μπορούμε να διαγράψουμε μία ακολουθία χαρακτήρων (string),
χρησιμοποιώντας την παράμετρο –d.
Π.χ. Με την παρακάτω εντολή παίρνουμε τα δεδομένα από το αρχείο file1 και αντικαθιστούμε το
γράμμα a με το γράμμα Α, το b με το B και σώζουμε το αποτέλεσμα στο αρχείο file2.
tr –d “mouse“ <file1
Η παραπάνω εντολή θα διαγράψει οποιονδήποτε από τους 5 χαρακτήρες βρει και όχι μόνο την
λέξη mouse
Α
tr: αντικατάσταση χαρακτήρων
Δημιουργείστε το παρακάτω αρχείο file1 με μια πρωτεϊνική ακολουθία.
Θέλουμε:
1) να μετατρέψουμε όλους τους χαρακτήρες σε κεφαλαία γράμματα και να
σώσουμε στο file2.
2) Να διαγράψουμε από το file2 τα κενά που συμβολίζονται με – και να
σώσουμε στο file3
3) Να ενωθούν όλες οι γραμμές του file3 σε μία, διαγράφοντας το new line
character \n και να σώσουμε στο file4
Εκτελούμε:
tr “[a-z]” “[A-Z]” < file1 > file2
tr -d “-” < file2 > file3
tr -d “\n” < file3 > file4
matygrakssppp
lkdhlkl--idglhkp
qertykklldsaaap
Θ
sed: stream editor - Εισαγωγή
Το sed είναι ένα πολύ ισχυρό πρόγραμμα/εργαλείο του Unix & Linux που μας
επιτρέπει να χειριστούμε ποικιλοτρόπως το περιεχόμενο αρχείων. Εδώ θα
αναφερθούμε σε κάποιες από τις πιο κοινές εφαρμογές του.
Το sed μπορεί να αναγνωρίσει μοτίβα χαρακτήρων (regular expressions) όπως
και η εντολή egrep ή να εκτελέσει μια πράξη σε συγκεκριμένες γραμμές ενός
αρχείου.
Π.χ.:
• Μπορεί να αντικαταστήσει μια λέξη ή ένα μοτίβο με ένα άλλο, οποτεδήποτε
το συναντά, ή εντός ενός συγκεκριμένου εύρους γραμμών.
• Μπορεί να εκτυπώσει ή να διαγράψει συγκεκριμένες γραμμές ενός αρχείου,
αρκεί να ορίσουμε το εύρος τιμών των γραμμών, ή το μοτίβο που πρέπει να
συναντάται στις προς εκτύπωση/διαγραφή γραμμές.
• Μπορεί να μας πει σε ποιές γραμμές συναντάται ένα συγκεκριμένο μοτίβο
χαρακτήρων.
Α
sed: stream editor
Κατά σύμβαση, το sed εκτυπώνει κάθε γραμμή του αρχείου που του ορίζουμε.
Με την παράμετρο –n δεν εκτυπώνονται όλες οι γραμμές, αλλά μόνο αυτές που ορίζονται μέσα
στα μονά εισαγωγικά.
Θέλουμε να εκτυπώσουμε όλες τις γραμμές του παρακάτω αρχείου file1 στο terminal.
Εκτελούμε:
sed ‘’ file1
Θέλουμε να εκτυπώσουμε τις γραμμές 1-3 του αρχείου file1 στο terminal. Εκτελούμε:
sed ‘1,3 p’ file1
Χρησιμοποιούμε στην εντολή το p για print.
Το sed έχει μια κάπως περίεργη συμπεριφορά. Θα εκτυπώσει όλες τις γραμμές και επίσης θα
εκτυπώσει ξανά εκείνες που ορίζονται μέσα στα μονά εισαγωγικά
Για να το αποφύγουμε αυτό και να εκτυπωθούν μόνο οι γραμμές που ορίζονται μέσα στα μονά
εισαγωγικά χρησιμοποιούμε την παράμετρο –n:
sed –n ‘1,3 p’ file1
file1 file1
Gene1
Gene1
Gene1 Gene1
sed ‘1,3 p’ file1 Gene2 Sed -n ‘1,3 p’ file1
Gene2 Gene2 Gene1
Gene2
Gene3 Gene3 Gene2
Gene3
Gene4 Gene4 Gene3
Gene3
Gene5 Gene5
Gene4
Gene5
Α
sed: stream editor
Θέλουμε να εκτυπώσουμε τις γραμμές 3 έως το τέλος του αρχείου file1 στο
terminal. Εκτελούμε:
sed -n ‘3,$ p’ file1
file1
Gene1
sed -n ‘3,$ p’ file1
Gene2 Gene3
Gene3 Gene4
Gene4 Gene5
Gene5
Α
sed: stream editor
Θέλουμε να πάρουμε τις γραμμές του αρχείου file1 και μετά να διαγράψουμε τις
γραμμές 3 έως το τέλος και το υπόλοιπο να εμφανιστεί στο terminal. Εκτελούμε:
sed ‘3,$ d’ file1
file1
Gene1
sed ‘3,$ d’ file1
Gene2
Gene3 Gene1
Gene4 Gene2
Gene5
Α
sed: stream editor
Θέλουμε να πάρουμε το περιεχόμενο του παρακάτω file1 και να
αντικαταστήσουμε την λέξη Gene με την λέξη Protein σε όλες τις γραμμές και
στη συνέχεια το τροποποιημένο περιεχόμενο να εμφανιστεί στο terminal.
Εκτελούμε:
sed ‘s/Gene/Protein/’ file1
Θ
sed: stream editor
Αν το μοτίβο Gene εμφανίζεται περισσότερες από μία φορές σε μια γραμμή, η
προηγούμενη εντολή θα τροποποιήσει μόνο την πρώτη εμφάνιση του μοτίβου.
Αν θέλουμε να τροποποιηθούν όλες οι εμφανίσεις του μοτίβου, πρέπει να
χρησιμοποιήσουμε το g που σημαίνει global, όπως παρακάτω:
sed ‘s/Gene/Protein/g’ file1
A
sed: stream editor
Θέλουμε να εκτυπώσουμε τα νούμερα των γραμμών στις οποίες εμφανίζεται το
μοτίβο Gene2, στο αρχείο file1. Εκτελούμε:
sed -n ‘/Gene2/ =’ file1