The Wayback Machine - https://web.archive.org/web/20260308205332/https://www.scribd.com/document/635212975/%CE%95%CE%99%CE%A3%CE%91%CE%93%CE%A9%CE%93%CE%97-%CE%A3%CE%A4%CE%97%CE%9D-%CE%A0%CE%9B%CE%97%CE%A1%CE%9F%CE%A6%CE%9F%CE%A1%CE%99%CE%9A%CE%97-%CE%9A%CE%91%CE%99-%CE%A3%CE%A4%CE%97%CE%9D-%CE%A5%CE%A0%CE%9F%CE%9B%CE%9F%CE%93%CE%99%CE%A3%CE%A4%CE%99%CE%9A%CE%97-%CE%94%CE%99%CE%91%CE%A7%CE%95%CE%99%CE%A1%CE%99%CE%A3%CE%97-%CE%9C%CE%95%CE%93%CE%91%CE%9B%CE%9F%CE%A5-%CE%9F%CE%93%CE%9A%CE%9F%CE%A5-%CE%94%CE%95%CE%94%CE%9F%CE%9C%CE%95%CE%9D%CE%A9%CE%9D-%CE%93%CF%81%CE%B7%CE%B3%CF%8C%CF%81%CE%B9%CE%BF%CF%82-%CE%91%CE%BC%CE%BF%CF%8D%CF%84%CE%B6%CE%B9%CE%B1%CF%82-%CE%A0%CE%B1%CE%BD%CE%B5%CF%80%CE%B9%CF%83%CF%84%CE%AE%CE%BC%CE%B9%CE%BF-%CE%98%CE%B5%CF%83%CF%83%CE%B1%CE%BB%CE%AF%CE%B1%CF%82
0% found this document useful (0 votes)
156 views281 pages

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΤΗΝ ΥΠΟΛΟΓΙΣΤΙΚΗ ΔΙΑΧΕΙΡΙΣΗ ΜΕΓΑΛΟΥ ΟΓΚΟΥ ΔΕΔΟΜΕΝΩΝ Γρηγόριος Αμούτζιας Πανεπιστήμιο Θεσσαλίας

ΠΛΗΡΟΦΟΡΙΚΗ ΕΠΙΣΤΗΜΗ Η/Υ

Uploaded by

pliroforiki1
Copyright
© Public Domain
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
156 views281 pages

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΤΗΝ ΥΠΟΛΟΓΙΣΤΙΚΗ ΔΙΑΧΕΙΡΙΣΗ ΜΕΓΑΛΟΥ ΟΓΚΟΥ ΔΕΔΟΜΕΝΩΝ Γρηγόριος Αμούτζιας Πανεπιστήμιο Θεσσαλίας

ΠΛΗΡΟΦΟΡΙΚΗ ΕΠΙΣΤΗΜΗ Η/Υ

Uploaded by

pliroforiki1
Copyright
© Public Domain
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Εισαγωγή στην

Πληροφορική και στην


διαχείριση μεγάλου
όγκου δεδομένων

Γρηγόριος Αμούτζιας
Επικ. Καθηγητής Βιοπληροφορικής στη Γενωμική
Τμήμα Βιοχημείας & Βιοτεχνολογίας,
Πανεπιστήμιο Θεσσαλίας

Εισαγωγή στην
Πληροφορική και
εφαρμογές της στις
Βιοεπιστήμες
Προτεινόμενα συγγράμματα

Τι είναι Πληροφορική
• η επιστήμη, η οποία ασχολείται με τους Η/Υ και τις εφαρμογές τους.
• Κλάδοι:
– Επιστήμη των Υπολογιστών (Computer Science)
– Τεχνολογία Πληροφοριών (Information Technology)
– Πληροφοριακά Συστήματα (Information Systems)
ΔΕΔΟΜΕΝΑ ΠΛΗΡΟΦΟΡΙΑ ΓΝΩΣΗ

Τι είναι ο Υπολογιστής;
• Μια προγραμματιζόμενη, ηλεκτρονική, ψηφιακή μηχανή γενικού σκοπού με
μνήμη

• Προγραμματιζόμενη γιατί: μπορεί να εκτελεί διαφορετικά προγράμματα, δηλ.


ακολουθίες εντολών που καθοδηγούν τον υπολογιστή.

• Ηλεκτρονική γιατί: αποτελείται από ηλεκτρονικά στοιχεία (π.χ. κυκλώματα).

• Ψηφιακή γιατί: οι πληροφορίες αναπαρίστανται και επεξεργάζονται σε μορφή


δυαδικού ψηφίου (0 ή 1).

• Γενικού σκοπού γιατί: η χρήση του ποικίλλει και ορίζεται από τα προγράμματά του,
τα οποία μπορούν να ανανεώνονται ή/και μεταβάλλονται.

• Με μνήμη γιατί: είναι απαραίτητο συστατικό για την αποθήκευση ψηφιακών


πληροφοριών (δεδομένων ΚΑΙ προγραμμάτων).
Τι είναι το Υλικό
Ο επεξεργαστής (ή Κεντρική
Μονάδα Επεξεργασίας)

Υπολογιστή; Τα κυκλώματα μνήμης

Η οθόνη
• Υλικό (hardware)
ονομάζουμε τα μηχανικά
και απτά μέρη ενός Ο εκτυπωτής

υπολογιστή.
Το ποντίκι

Το πληκτρολόγιο

Και άλλα

Τι είναι το λογισμικό Το λειτουργικό σύστημα


(π.χ. Linux, Windows, Mac)

Υπολογιστή;
Τα συστήματα διαχείρισης βάσεων
δεδομένων

Λογισμικό (software) Οι μεταγλωτιστές γλωσσών


προγραμματισμού (π.χ. JVM, yacc)
ονομάζουμε τo σύνολο
των προγραμμάτων ενός
υπολογιστή. Οι εφαρμογές γραφείου (π.χ.
Microsoft Office, Open office)

Οι εφαρμογές πλοήγησης στο


Internet

Και άλλα
Τι είναι ένα Υπολογιστικό Σύστημα;

• Υπολογιστής = Επεξεργαστής + Μνήμη + Συσκευές Εισόδου/Εξόδου


(Βασικό Υλικό).

• Υπολογιστικό Σύστημα = Υπολογιστής + Λογισμικό.

• Ο προσωπικός Η/Υ μας είναι ένα Υπολογιστικό Σύστημα.

Τι είναι ένα Πληροφοριακό Σύστημα;


• Πληροφοριακό Σύστημα = Υπολογιστικό Σύστημα + Δεδομένα +
Άνθρωποι + Διαδικασίες

• Ένα πληροφοριακό σύστημα είναι π.χ. ένα σύστημα πλοήγησης σε


ένα μουσείο. Ένα τέτοιο σύστημα αποτελείται από:

– υπολογιστικά συστήματα [π.χ. εξυπηρετητές, υπολογιστές χειρός


(PDA), wireless access points,κτλ]
– λογισμικό που διερμηνεύει και επικοινωνεί στους επισκέπτες
πληροφορίες σχετικές με τα εκθέματα,
– τους ίδιους τους επισκέπτες αλλά και τους υπαλλήλους του
μουσείου που χειρίζονται τα παραπάνω
– τα δεδομένα που αφορούν τα εκθέματα
– τις διαδικασίες χρήσης των συστημάτων
Προ-Ιστορία της Πληροφορικής
• Πρώτοι Υπολογιστές
5000 π.Χ.: Άβακας (Έλληνες,
Ρωμαίοι, Βυζαντινοί, Κινέζοι,
Ίνκας, Μάγια)

80 π.Χ. : Ο αστρολάβος των


Αντικηθύρων

Σημερινοί υπολογιστές βασίζονται


στις αρχές της μηχανής von
Neumann

• Μηχανή Von Neumann.

• Προτάθηκε από τον John Von Neumann, Μαθηματικό, Ουγγρικής


καταγωγής (αλλά δεν κατασκευάστηκε από αυτόν).

• Πρώτη ηλεκτρονική υπολογιστική μηχανή με αποθηκευμένο


πρόγραμμα (stored program)
– Η μνήμη δε χρησιμοποιείται μόνο για να αποθηκεύει δεδομένα
και αποτελέσματα, αλλά και τα ίδια τα προγράμματα που
επενεργούν στα δεδομένα
• Η αρχιτεκτονική της μηχανής von Neumann ακολουθείται μέχρι
σήμερα
Αρχιτεκτονική von Neumann
• Μονάδα Εισόδου (Input)
– Επικοινωνία του χρήστη με το υπολογιστικό σύστημα, εισαγωγή
δεδομένων

• Επεξεργασία (Processing)
– Εκτέλεση προγραμμάτων και εντολών
– Χωρίζεται σε Αριθμητική και Λογική Μονάδα (εκτέλεση πράξεων) και
Μονάδα Ελέγχου (συντονισμός λειτουργίας του υπολογιστή)

• Μνήμη (Memory)
– Καταχώρηση προγραμμάτων και δεδομένων
– Χωρίζεται σε κύρια και βοηθητική

• Μονάδα Εξόδου (Output)


– Επικοινωνία υπολογιστικoύ συστήματος με το χρήστη, εμφάνιση
αποτελεσμάτων εκτέλεσης προγραμμάτων

Η Ιστορία Συνοπτικά
Διάρκεια Βασικά Επιτεύγματα

1951-1958 Λυχνίες Κενού


Διάτρητες κάρτες στην είσοδο – έξοδο
1959-1964 Τρίοδος Ηλεκτρονική Λυχνία (τρανζίστορ)
1965-1970 Ολοκληρωμένα Κυκλώματα Μεγάλης
Ολοκλήρωσης (LSI)
Οθόνες και Πληκτρολόγια στην είσοδο - έξοδο
1971-σήμερα Ολοκληρωμένα Κυκλώματα Πολύ Μεγάλης
Ολοκλήρωσης (VLSI)
Μικροεπεξεργαστής – Προσωπικός Υπολογιστής
Μέλλον (?) Οπτικοί, Μοριακοί, Κβαντικοί Υπολογιστές
Μηχανές με Λυχνίες Κενού

• Από το 1951 μέχρι το 1958 κατασκευάζονται οι υπολογιστικές μηχανές


με Λυχνίες Κενού (π.χ. UNIVAC)

• Κυκλώματα: λυχνίες κενού (λαμπτήρες)

• Αποθήκευση (μνήμη): Μαγνητικά τύμπανα και μαγνητικές ταινίες

• Είσοδος: Διάτρητες κάρτες ή χαρτοταινίες

• Έξοδος: Εκτυπωτικές συσκευές ή συσκευές διάτρησης καρτών

Μηχανές με Λυχνίες Κενού


Universal Automatic Computer
(UNIVAC)

• Πρώτη μηχανή μαζικής


παραγωγής & πώλησης

• Η πρώτη πώληση έγινε για


λογαριασμό του Γραφείου
Απογραφών των Η.Π.Α

• Συνολικά πουλήθηκαν 46
κομμάτια
Μηχανές με Λυχνίες Κενού

International Business Machines


(IBM)

• Ξεκίνησε να ασχολείται με την


κατασκευή Η/Υ από το 1953

Μηχανές Βασισμένες σε Τρανζίστορ

• Από το 1959 μέχρι το 1964


κατασκευάζονται οι υπολογιστικές
μηχανές βασισμένες σε τρανζίστορ

• Εφεύρεση της τριόδου


ηλεκτρονικής λυχνίας (transistor
- τρανζίστορ) το 1948 στα
εργαστήρια της εταιρίας Bell

• Αντικαθιστά τα μαγνητικά μέσα στην


αποθήκευση
Μηχανές βασισμένες σε
Ολοκληρωμένα Κυκλώματα
• Από το 1965 μέχρι το 1970 κατασκευάζονται υπολογιστικές
μηχανές με ολοκληρωμένα κυκλώματα (chip)

• Στο εσωτερικό κάθε ολοκληρωμένου περιέχεται ένα μονολιθικό


κύκλωμα πυριτίου με πολλά αλληλοσυνδεδεμένα τρανζίστορ
και άλλα στοιχεία

• Από το 1971 μέχρι και σήμερα κατασκευάζονται


υπολογιστικές μηχανές με ολοκληρωμένα Κυκλώματα Πολύ
Μεγάλης Ολοκλήρωσης (VLSI-Very Large Scale
Integration) που μειώνουν τον όγκο και αυξάνουν τις
δυνατότητες αποθήκευσης και επεξεργασίας των υπολογιστών

• Δημιουργία του Μικροεπεξεργαστή (Microprocessor)


– Πρώτος μικροεπεξεργαστής ο 4004 της Intel και
ακολούθησαν οι 8008 και 8080

Ο Προσωπικός Υπολογιστής (PC)


• Αποτέλεσμα της δημιουργίας του
μικροεπεξεργαστή είναι η γέννηση του
Προσωπικού Υπολογιστή (PC –
Personal Computer).

• Πωλήσεις υπολογιστών και σε άτομα


εκτός από επιχειρήσεις και οργανισμούς.

• Διεύρυνση της χρήσης τους σε


καθημερινά προβλήματα και όχι μόνο για
επιχειρηματικές ανάγκες και
επιστημονικές εφαρμογές.
Το μέλλον
• Οπτικοί Υπολογιστές
• Μοριακοί Υπολογιστές
• Χημικοί Υπολογιστές
• Κβαντικοί Υπολογιστές
• Άλλοι:
– Υπολογιστές που μπορούν να ενσωματωθούν στα ρούχα των χρηστών
τους (wearable computing)

Η πληροφορική στις Βιοεπιστήμες

(Βιοπληροφορική)
Εισαγωγή

Βιοπληροφορική: τι είναι
• Η ανάπτυξη και χρήση τεχνικών και εργαλείων
πληροφορικής/μαθηματικών/στατιστικής για την ανάλυση βιολογικών δεδομένων
(κυρίως μοριακής βιολογίας)

• Σήμερα γίνεται διάκριση μεταξύ της βιοπληροφορικής και της υπολογιστικής βιολογίας
– Βιοπληροφορική: Η ανάπτυξη μεθόδων και προγραμμάτων.
– Υπολογιστική Βιολογία: Η χρήση των παραπάνω μεθόδων και προγραμμάτων για την
ανάλυση βιολογικών δεδομένων.

• Συχνά συμβαίνουν και τα δύο ταυτόχρονα και τα σύνορα δεν είναι πάντα ευδιάκριτα

• Πολλές και συμπληρωματικές μεταξύ τους ειδικότητες (από Βιολογία, Βιοχημεία,


Χημεία, Χημική Μηχανική, Μηχανική, Υπολογιστές, Μαθηματικά, Στατιστική κ.α.)
συνεργάζονται σήμερα στο χώρο της Βιοπληροφορικής

Εισαγωγή

Βιοπληροφορική: βασικοί τομείς


• Βάσεις δεδομένων (Databases)
– Οργάνωση, αποθήκευση, αναζήτηση των δεδομένων.

• Ανάλυση ακολουθιών DNA, RNA, πρωτεϊνών. (Sequence analysis)


– Στοίχιση ακολουθιών: Σύγκριση των αντίστοιχων/ομόλογων περιοχών, μεταξύ δύο ή
περισσοτέρων ακολουθιών.
– Φυλογενετική ανάλυση: Οι εξελικτικές σχέσεις μεταξύ ομοειδών αντικειμένων (γονίδια,
πρωτεΐνες, οργανισμοί).

• Γονιδιακή ρύθμιση/έκφραση (Gene expression)


Ανάλυση δεδομένων από μικροσυστοιχίες, RNA-seq.

• Δομή RNA/πρωτεϊνών (structural biology):


Πρόβλεψη δευτεροταγούς και τριτοταγούς δομής. Ανάλυση πρωτεϊνικών επιφανειών που
αλληλεπιδρούν μεταξύ τους.

• Εξόρυξη δεδομένων από βιβλιογραφία (text mining).

• Βιολογικά δίκτυα/μονοπάτια, Βιολογία Συστημάτων (FBA, MCA).

• Οντολογίες (Ontologies)
Η χρήση ενός ελεγχόμενου λεξιλογίου (με ιεραρχική δόμηση), για την περιγραφή των ιδιοτήτων
και των λειτουργιών ομοειδών αντικειμένων (π.χ πρωτεϊνών).
Εισαγωγή

Παρόν/μέλλον
• Μέχρι το 2000, Βιοπληροφορική σήμαινε κυρίως ανάλυση ακολουθιών.

• Η γενωμική αποτέλεσε το ερέθισμα για την ανάπτυξη τεχνολογιών που


κάνουν μετρήσεις ευρείας κλίμακας.

• Από το 2000 και μετά, η Βιοπληροφορική καλείται επίσεις να διαχειριστεί και


να αναλύσει μεγάλα και πολύπλοκα δεδομένα από το χώρο της γενωμικής,
της γονιδιακής έκφρασης, της πρωτεομικής κ.α.

• Πλέον ο όρος ‘Βιοπληροφορική’ είναι τόσο εξειδικευμένος/γενικός, όσο και ο


όρος ‘Μοριακή Βιολογία’!

• Βρισκόμαστε σε μια μεταβατική περίοδο για τις Βιολογικές Eπιστήμες, όπως


η Φυσική πριν πολλά χρόνια. Βέβαιη η εισδοχή περισσότερων μαθηματικών,
στατιστικής και πληροφορικής (προγραμματισμός) μεσοπρόθεσμα στο
πρόγραμμα σπουδών.

Bioinformatics Market - Advanced


Technologies, Global Forecast and Winning
Imperatives (2009 - 2014)
• Απόσπασμα από:
– [Link]

• The market for bioinformatics platforms is growing at a significant pace with


the increasing demand from U.S. and Europe.
• This trend is supported by the increasing demand for sequencing platforms
with increasing life science research using techniques such as gene
expression analysis, sequence analysis, and protein expression analysis.
• The global bioinformatics market is expected to reach $8.3 billion by 2014
at a high CAGR of 24.8% from 2009-2014. While knowledge management
formed the largest submarket is 2009 at $1.3 billion, the bioinformatics
platforms market is expected to have greatest market share in 2014 at an
estimated $3.9 billion, due to rising demand from the U.S. and Europe.

• Συμβουλευτική (δουλειά από το σπίτι)?


Χαμηλό κόστος γενωμικών τεχνολογιών θα οδηγήσει
σε καθημερινές εφαρμογές.
• Κόστος αλληλούχισης πέφτει διαρκώς.
– Illumina -> 1 lane: 19GBp, ~ €3000, 10 βακτηριακά γενώματα.
• Τα δείγματα αποστέλλονται σε κέντρα με μεγάλες εγκαταστάσεις και
χαμηλό κόστος λειτουργίας (οικονομία κλίμακας). Η ανάλυση των
δεδομένων όμως δεν υπόκειται σε όρους οικονομίας κλίμακας.
• Πλέον, ένα σημαντικό μέρος του ολικού κόστους είναι η
βιοπληροφορική ανάλυση.
• Μηχανήματα αλληλούχισης ακριβά (Illumina ~ €600.000) - service
φτηνό.
• Mισθός ακριβός (ίσως ένα νέο μοντέλο συμβουλευτικής?)
• Yπολογιστής φτηνός (€3-5.000), εφόσον πρόκειται για μικρά
γονιδιώματα (de novo assembly), ή για re-sequencing.

Χαμηλό κόστος γενωμικών τεχνολογιών θα οδηγήσει


σε καθημερινές εφαρμογές
• Κόστος αλληλούχισης
– [Link]
• Ο νόμος του Moore προβλέπει διπλασιασμό της υπολογιστικής ισχύς
κάθε δύο χρόνια.
Χαμηλό κόστος γενωμικών τεχνολογιών θα οδηγήσει
σε καθημερινές εφαρμογές
• Κόστος αλληλούχισης
– [Link]

Εφαρμογές

• Ανίχνευση ομόλογων γονιδίων/πρωτεϊνών.

• Πρόβλεψη λειτουργίας άγνωστου βιομορίου.


Blast

Blastn / MegaBlast

Εφαρμογές
• Πολλαπλή στοίχιση.

• Εντοπισμός μεταλλάξεων που μπορεί να προσφέρουν


ανθεκτικότητα σε φάρμακα.
MSA

MSA

• Πολλαπλή στοίχιση ομόλογων ακολουθιών δείχνει τα αμινοξέα


που είναι σημαντικά για την λειτουργία της πρωτεΐνης.

Blast

Blastn
Παράδειγμα: Eντοπισμός SNPs σε ακολουθίες του ιού HIV-1 για
ανθεκτικότητα σε φάρμακα
Εφαρμογές
• Ομαδοποίηση δεδομένων.

• Π.χ. Ομαδοποίηση οργανισμών με βάση:


– Kοινά γνωρίσματα.
– Γονίδια/πρωτεΐνες.

• Ομαδοποίηση δεδομένων γονιδιακής έκφρασης.

Ομαδοποίηση
Εφαρμογές

Φυλογένεση – εξελικτικές σχέσεις.

Φυλογένεση

Φυλογένεση σπονδυλωτών
Εφαρμογές

‘Ελεγχος εξελικτικών υποθέσεων -

Προέλευση -

Επιδημιολογία

Έλεγχος εξελικτικών υποθέσεων


Από που
που προήλθε
προήλθε ο ιός HIV
HIV;;

Πρωτοεμφαν
Πρωτοεμφανίστηκε
ίστηκε
μυστηριωδώς στις αρχές της
δεκαετίας του 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

•Αλληλούχιση του γονιδιώματος:


•2 κλινικών στελεχών από την τωρινή επιδημία στην Αϊτή.
•1 κλινικό στέλεχος από την επιδημία του 1991 στη Νότια Αμερική.
•2 στέλεχη που απομονώθηκαν στη Νότια Ασία το 2002 και 2008.

•Επίσης χρησιμοποιήθηκαν οι μερικές αλληλουχίες από 23 άλλα στελέχη ανά την


υφήλιο (τα τελευταία 98 χρόνια).
•1588 συντηρημένα ορθόλογα γονίδια χρησιμοποιήθηκαν από το κάθε στέλεχος,
για να γίνει το φυλογενετικό δένδρο.

Επιδημ
Επιδημία
ία χολέρας στην Αϊτή 2010
Εφαρμογές

Αλληλούχιση οργανισμών
-
Ανίχνευση οργανισμών
-
Μεταγενωμική

Χαμηλό κόστος γενωμικών τεχνολογιών θα οδηγήσει


σε καθημερινές εφαρμογές.
• Κόστος αλληλούχισης πέφτει διαρκώς.
– Illumina -> 1 lane: 19GBp, ~ €3000, 10 βακτηριακά γενώματα.
• Τα δείγματα αποστέλλονται σε κέντρα με μεγάλες εγκαταστάσεις και
χαμηλό κόστος λειτουργίας (οικονομία κλίμακας). Η ανάλυση των
δεδομένων όμως δεν υπόκειται σε όρους οικονομίας κλίμακας.
• Πλέον, ένα σημαντικό μέρος του ολικού κόστους είναι η
βιοπληροφορική ανάλυση.
• Μηχανήματα αλληλούχισης ακριβά (Illumina ~ €600.000) - service
φτηνό.
• Mισθός ακριβός (ίσως ένα νέο μοντέλο συμβουλευτικής?)
• Yπολογιστής φτηνός (€3-5.000), εφόσον πρόκειται για μικρά
γονιδιώματα (de novo assembly), ή για re-sequencing.
Shotgun sequencing

Genome assembly
Εφαρμογές στην τοξικολογία/
τοξικογενωμική
• Μέτρηση της γονιδιακής έκφρασης μετά από έκθεση σε τοξικό
παράγοντα μπορεί να δείξει τον μοριακό μηχανισμό δράσης του
παράγοντα.

• Μπορεί να αποτελέσει μοναδική μοριακή υπογραφή του


συγκεκριμένου τοξικού παράγοντα, για μελλοντική ανίχνευσή του.
– Ομαδοποίηση τοξικών παραγόντων με κοινή δράση, με βάση την
ομοιότητα των μοριακών προφιλ τους

Μοριακό προφίλ τοξικότητας


Μοριακό προφίλ τοξικότητας

Hierarchical cluster analysis showed a close association in gene expressional responses between aroclor 1254 and 3-
methylcholanthrene.

Εισαγωγή στην
Πληροφορική και στην
διαχείριση μεγάλου
όγκου δεδομένων
Τι είναι ο υπολογιστής

Τι είναι ο υπολογιστής;

Ηλεκτρονική συσκευή για επεξεργασία δεδομένων


• Μπορεί να μετατρέπει δεδομένα σε πληροφορία
χρήσιμη στον άνθρωπο.
• Ένα πλήρες σύστημα περιλαμβάνει τέσσερα διακριτά
μέρη:
Υλικό (Hardware)
Λογισμικό (Software)
Δεδομένα (Data)
Χειριστή (χρήστης)
Υλικό (hardware)
Τα βασικά μέρη του υπολογιστή
Μνήμη

Κύρια και Βοηθητική Μνήμη

• Η Κύρια Μνήμη (RAM, ROM, Cache, Virtual Memory).


• Υπεύθυνη για
– Οργάνωση της μνήμης
– Διευθυνσιοδότηση της μνήμης

• Η Βοηθητική Μνήμη
– Μαγνητικές και Οπτικές Μνήμες
– Σκληροί Δίσκοι
– Μαγνητικές Ταινίες
– CD, DVD, BluRay Disks
Εισαγωγή στη Μνήμη Υπολογιστή
• Μνήμη = τεχνολογίες που χρησιμεύουν στην αποθήκευση
δεδομένων και προγραμμάτων

ΚΕΝΤΡΙΚΗ ΜΟΝΑΔΑ ΕΠΕΞΕΡΓΑΣΙΑΣ

Αριθμητική και Λογική Μονάδα


ΜΟΝΑΔΑ ΜΟΝΑΔΑ
ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ

Μονάδα Ελέγχου

Κεντρική Μνήμη

Βοηθητική Μνήμη

ΜΝΗΜΗ

Κύρια και Βοηθητική Μνήμη


• Κύρια μνήμη
– βρίσκεται εντός του υπολογιστικού συστήματος (στη μητρική πλακέτα)
– συνεργάζεται με την Κεντρική Μονάδα Επεξεργασίας
– “θυμάται” όσο λειτουργεί ο υπολογιστής
– π.χ. RAM, ROM, κρυφή μνήμη (cache) ...

• Βοηθητική μνήμη
– βρίσκεται εντός και εκτός του υπολογιστικού συστήματος
– “θυμάται” και αφού κλείσει ο υπολογιστής
– π.χ. σκληροί δίσκοι, δίσκοι CD και DVD ...

• Γιατί χρειαζόμαστε τη Βοηθητική μνήμη;


1. Οικονομικός τρόπος αποθήκευσης μεγάλου όγκου δεδομένων (η κύρια
μνήμη είναι ακριβή και άρα μικρής χωρητικότητας)
2. Μόνιμη αποθήκευση δεδομένων (η κύρια μνήμη χάνει τα δεδομένα της όταν
πάψει η τροφοδοσία της με ηλεκτρικό ρεύμα)
Ιεραρχία μνημών
απόσταση από ΚΜΕ (-)
μέγεθος (-)
Κρυφή
Μνήμη
ταχύτητα (+)
Μνήμη κόστος (+)
RAM

Μνήμες
ROM

Σκληροί δίσκοι

Οπτικοί δίσκοι
CD, DVD, BluRay

Μαγνητικές
Ταινίες

Είδη Κύριων και Βοηθητικών


Μνημών
• 2 βασικά είδη μνήμης ανάλογα με το αν μπορούν να διατηρούν τα
περιεχόμενα τους μόνιμα (δηλαδή όταν δεν τροφοδοτούνται με
ηλεκτρικό ρεύμα)
• οι Σταθερές και οι Ασταθείς μνήμες

ΜΝΗΜΕΣ

Όλες οι βοηθητικές μνήμες


Σταθερές Ασταθείς Όλες οι κύριες μνήμες
και η κύρια μνήμη ROM (non volatile) (volatile) (εκτός ROM)

Μαγνητικές Οπτικές Δυναμικές Στατικές


(π.χ. σκληροί δίσκοι) (π.χ. CD, DVD) (π.χ. DRAM) (π.χ. SRAM, cache)
Σταθερές Μνήμες
• Οι Σταθερές μνήμες (non volatile storage) είναι σε θέση να κρατήσουν
αποθηκευμένα τα περιεχόμενα τους μόνιμα
– βοηθητικές μνήμες
– από κύρια μνήμη μόνο η ROM (χρησιμεύει στην φόρτωση του λειτουργικού
συστήματος κατά την εκκίνηση του υπολογιστή)

• Μαγνητικές Μνήμες (π.χ. σκληροί δίσκοι, εύκαμπτοι δίσκοι, μαγνητικές


ταινίες)
– Η λειτουργία τους στηρίζεται στη μαγνήτιση επιστρωμένων περιοχών μέσω ενός
ηλεκτροφόρου αγωγού
– Η φορά (δεξιόστροφα και αριστερόστροφα) της μαγνήτισης αντιπροσωπεύει το 0
ή το 1
– Η μαγνήτιση είναι μόνιμη
• Οπτικές Μνήμες (π.χ. CD, DVD)
– Η λειτουργία τους στηρίζεται στην παραμόρφωση μέσω θερμότητας («κάψιμο»)
επιστρωμένων περιοχών μέσω ακτίνας λέιζερ
– Η παρουσία ή η απουσία παραμόρφωσης αντιπροσωπεύει το 0 ή 1
– Η παραμόρφωση είναι μόνιμη

Ασταθείς Μνήμες
• Οι Ασταθείς μνήμες (volatile storage) απαιτούν συνεχή τροφοδότηση με ρεύμα
προκειμένου να μην μεταβληθούν/ σβηστούν τα περιεχόμενά τους
– όλα τα είδη κύριας μνήμης εκτός από τη ROM

• Δυναμική μνήμη (dynamic memory)


– DRAM (Dynamic RAM)
• Στατική μνήμη (static memory)
– SRAM (Static RAM)
Κύρια Μνήμη – Βασικές Λειτουργίες
• Η κύρια μνήμη μας δίνει τη δυνατότητα να εκτελέσουμε τρεις βασικές
λειτουργίες:

– Την καταχώρηση δεδομένων τα οποία εισάγονται προς


επεξεργασία στο υπολογιστικό σύστημα.

– Την καταχώρηση αποτελεσμάτων που προκύπτουν από την


επεξεργασία των αποθηκευμένων δεδομένων.

– Την καταχώρηση ακολουθιών πράξεων, δηλαδή


προγραμμάτων, οι οποίες θα εκτελεστούν επί των
αποθηκευμένων δεδομένων

Οργάνωση της Κύριας Μνήμης


• Το στοιχείο που αποθηκεύουμε στη μνήμη είναι το bit (binary digit ,
δυαδικό ψηφίο) και παίρνει τιμές 0 ή 1
• Η μνήμη είναι χωρισμένη σε κελιά των 8 bits = 1 byte
(ψηφιοσυλλαβή)
• Το byte αποτελεί την μονάδα μέτρησης χωρητικότητας των
μνημών των υπολογιστικών συστημάτων (κύριες και βοηθητικές)

Όνομα Σύμβολο Κατά προσέγγιση μέγεθος Ακριβές μέγεθος


Kilobyte Kb 1.000 bytes 210 = 1.024 bytes
Megabyte Mb 1 εκατομμύριο bytes 220 = 1.048.576 bytes
Gigabyte Gb 1 δισεκατομμύριο bytes 230 = [Link] bytes
Terabyte Tb 1 τρισεκατομμύριο bytes 240 = [Link].776 bytes
Petabyte Pb 1 τετρακισεκατομμύριο bytes 250 = [Link].842.624 bytes
Διευθυνσιοδότηση της μνήμης
• Κάθε κελί της μνήμης έχει ένα μοναδικό αναγνωριστικό (διεύθυνση) με το
οποίο να αναφερόμαστε στο κελί αυτό
• Η διεύθυνση μας υποδεικνύει το κελί που θέλουμε να προσπελάσουμε
(ανάγνωση/εγγραφή δεδομένων)
• Οι διευθύνσεις των κελιών είναι συνεχόμενοι δυαδικοί αριθμοί
– από το 0 (για το πρώτο κελί της μνήμης) μέχρι το Ν-1 (όπου Ν ο αριθμός των
bytes της μνήμης)
– π.χ. σε μια μνήμη μεγέθους 1 Kb (1.024 bytes), οι διευθύνσεις των κελιών της
είναι 0, 1, 2, ... 1.023
• Ο αριθμός των δυαδικών ψηφίων της διεύθυνσης ονομάζεται μήκος
διεύθυνσης
– προσδιορίζει το μέγιστο αριθμό κελιών που μπορεί να έχει μια μνήμη.
– για μήκος διεύθυνσης = k, τότε μέγιστο πλήθος θέσεων μνήμης = 2k
– π.χ. Η διεύθυνση 00101110 έχει μήκος 8 ψηφία άρα η μηχανή που την
χρησιμοποιεί έχει το πολύ 28=256 θέσεις μνήμης

Διευθυνσιοδότηση της μνήμης


• Κάθε θέση μνήμης (κελί) χαρακτηρίζεται Διεύθυνση Περιεχόμενα
από δυο δυαδικούς αριθμούς Κελιού Κελιού
– τη διεύθυνση 00 00 01 10 11 11
– τα περιεχόμενα
(οι αριθμοί αυτοί δεν έχουν νοηματική 00 01 00 00 00 00
σχέση μεταξύ τους) 00 10 11 11 11 11
00 11 10 00 00 00
... ...
• Αν θέλαμε να έχουμε μεγαλύτερη μνήμη,
θα έπρεπε να έχουμε ένα υπολογιστή με 11 01 10 10 10 10
μεγαλύτερο μήκος διεύθυνσης 11 10 01 01 01 01
11 11 11 11 11 10
?? ??
Μνήμη Τυχαίας Προσπέλασης
(RAM)
• Η μνήμη RAM (Random Access Memory) αποτελεί την κύρια μνήμη του
υπολογιστή
– η RAM είναι μνήμη τυχαίας προσπέλασης (ο χρόνος προσπέλασης ενός
δεδομένου δεν εξαρτάται από τη φυσική θέση του δεδομένου στη μνήμη)
– η RAM είναι μνήμη ανάγνωσης/ εγγραφής
– η RAM είναι ασταθής μνήμη
– τυπική χωρητικότητα της RAM είναι στα 1-16 Gb

Μνήμη Ανάγνωσης Μόνο (ROM)


• Η μνήμη ROM (Read Only Memory) αποτελεί μέρος της κύριας μνήμης του
υπολογιστή μας
– η ROM είναι μνήμη τυχαίας προσπέλασης
– η ROM είναι μνήμη ανάγνωσης/ εγγραφής
– τυπική χωρητικότητα της ROM είναι στα 8-32 Μb
• η μνήμη ROM αναλαμβάνει τη διαδικασία εκκίνησης του υπολογιστή
(boot) που είναι μόνιμα αποθηκευμένη σε αυτή.
Boot
• Η διαδικασία αυτή εκτελείται αυτόματα όταν ξεκινάει ο υπολογιστής και
εκτελεί δυο βασικές δραστηριότητες:

– Ελέγχει αν όλες οι βασικές μονάδες του ηλεκτρονικού υπολογιστή (κύρια και


δευτερεύουσα μνήμη, συσκευές εισόδου-εξόδου) είναι σε θέση να λειτουργήσουν.
Τη δραστηριότητα αυτή αναλαμβάνει ένα σύνολο εντολών που ονομάζεται BIOS
(Basic Input-Output System).

– Μεταφέρει το λειτουργικό σύστημα από τη βοηθητική μνήμη (συνήθως μια


προκαθορισμένη θέση του σκληρού δίσκου) στη μνήμη RAM και ξεκινάει την
εκτέλεση του

Μνήμη Ανάγνωσης Μόνο (ROM)


• ROM μάσκας: τα περιεχόμενα είναι ενσωματωμένα στα κυκλώματα της μνήμης και
δεν είναι τεχνικά εφικτό να αλλαχθούν

• Υπάρχουν σύγχρονες μνήμες ROM που επιτρέπουν μερική τροποποίηση των


δεδομένων τους
– Προγραμματιζόμενη ROM ή PROM (Programmable Read Only Memory): είναι δυνατό να
προγραμματιστεί μία μόνο φορά.

– Διαγράψιμη Προγραμματιζόμενη ROM ή EPROM (Erasable Programmable Read Only


Memory): έχει τη δυνατότητα διαγραφής και επαναπρογραμματισμού του περιεχόμενού της
έως 1.000 περίπου φορές χωρίς πρόβλημα με χρήση ειδικού εξοπλισμού.

– Ηλεκτρικά Διαγράψιμη Προγραμματιζόμενη ROM ή EEPROM (Electrically Erasable


Programmable Read Only Memory): είναι δυνατή η μεταβολή των περιεχομένων της χωρίς
τη χρήση εργαστηριακού εξοπλισμού
Κρυφή Μνήμη (Cache)
• Γενικά με τον όρο cache στην πληροφορική εννοούμε ένα αντίγραφο δεδομένων τα πρωτότυπα
των οποίων βρίσκονται αποθηκευμένα σε κάποιο άλλο μέρος από το οποίο είναι δυσκολότερο, πιο
χρονοβόρο ή λιγότερο οικονομικό να τα ανακτήσουμε

• Υπάρχουν πολλά είδη cache:


– CPU cache (στην Κενρική Μονάδα Επεξεργασίας)
– disk cache (στη βοηθητική μνήμη)
– web cache (στον παγκόσμιο ιστό, για παράδειγμα σε μηχανές αναζήτησης)
– database cache (στις βάσεις δεδομένων)

• Σκοπός της CPU cache είναι να επιταχύνει τη λειτουργία της υπόλοιπης μνήμης του
συστήματος και συνεπώς να βελτιώσει την ταχύτητα του υπολογιστή

• Η μνήμη CPU cache λόγω του μεγάλου της κόστους χρησιμοποιείται σε μικρές ποσότητες ως ένα
ενδιάμεσο στάδιο μεταξύ του επεξεργαστή και της κύριας μνήμης

• Η λειτουργία της κρυφής μνήμης βασίζεται στην αρχή της τοπικότητας (principle of locality) που
υποστηρίζει ότι στο αμέσως επόμενο χρονικό διάστημα υπάρχει μεγάλη πιθανότητα πρόσβασης σε
γειτονικά δεδομένα αυτών που χρησιμοποιούνται τώρα. Έτσι, όταν ένα μέρος δεδομένων
μεταφέρεται από τη μνήμη στην Κεντρική Μονάδα Επεξεργασίας, μεταφέρονται και τα γειτονικά
τους στην κρυφή μνήμη έτσι ώστε να είναι πολύ πιο γρήγορη τυχόν ανάκτηση τους αμέσως μετά.

• Πρακτικά, η μνήμη αυτή βρίσκεται πάνω ή κοντά στο κύκλωμα της Κεντρικής Μονάδας
Επεξεργασίας

Βοηθητική Μνήμη
• Η δευτερεύουσα ή βοηθητική μνήμη χρησιμοποιείται για τη μόνιμη
αποθήκευση μεγάλων ποσοτήτων δεδομένων

Κριτήριο Κύρια Μνήμη Βοηθητική Μνήμη


Μονιμότητα Ασταθής Σταθερή
Δεδομένων (τα περιεχόμενα χάνονται όταν σβήσει το ρεύμα) (τα περιεχόμενα παραμένουν μόνιμα)
Άπειρη
Μικρή
Μέγεθος (μπορούμε απλά να αγοράσουμε όση
(υπάρχει περιορισμός στο μέγεθος της)
χωρητικότητα θέλουμε)
Μεγάλη Μικρή
Ταχύτητα
(nanoseconds / bit) (milliseconds / bit)
Παραδείγματα RAM Σκληροί δίσκοι, CD, DVD

• Η Βοηθητική μνήμη χωρίζεται σε δυο κατηγορίες ανάλογα με την


τεχνολογία που χρησιμοποιείται
– μαγνητικές βοηθητικές μνήμες
– οπτικές βοηθητικές μνήμες
Συνήθεις χρόνοι πρόσβασης για μνήμες και μέσα
αποθήκευσης

Device Χρόνος πρόσβασης


Static RAM (SRAM) 5-15 ns
Dynamic RAM (DRAM) 50-70 ns
Read only memory (ROM) 55-250 ns
Hard disk drives 6-12 ms
CD ROM drives 80-800 ms
Tape drives 20-500 s

ΜΑΓΝΗΤΙΚΕΣ ΒΟΗΘΗΤΙΚΕΣ ΜΝΗΜΕΣ


Μαγνητικές Μνήμες
• Στην περίπτωση των μαγνητικών μνημών, η τεχνολογία που
χρησιμοποιείται είναι η μαγνήτιση κατάλληλα επιστρωμένων
υλικών

• Τα δεδομένα διαβάζονται από ή αποθηκεύονται σε μία επιφάνεια η


οποία έχει επιστρωθεί με μαγνητικό υλικό μέσω μίας κεφαλής
ηλεκτρομαγνήτη ανάγνωσης/ εγγραφής
– Εγγραφή: με τη βοήθεια της κεφαλής μαγνητίζεται μόνιμα μια μικρή
περιοχή. Η πολικότητα της μαγνήτισης (δεξιόστροφη ή
αριστερόστροφη) κωδικοποιεί το 0 και το 1

– Ανάγνωση: η κεφαλή περνά πάνω από τη μαγνητισμένη περιοχή με


αποτέλεσμα να δημιουργείται επαγωγικό ρεύμα με φορά που
εξαρτάται από την πολικότητα της μαγνήτισης που είχε γίνει. Ανάλογα
λοιπόν με τη φορά του ρεύματος διαβάζεται το 0 ή το 1

Σκληροί Δίσκοι
• Ένας σκληρός δίσκος αποτελεί μια μη ασταθή (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

• Η συστοιχία αποτελεί τη μικρότερη μονάδα αποθήκευσης δεδομένων και


κάθε αρχείο πρέπει να καταλαμβάνει ακέραιο αριθμό συστοιχιών
– Έστω ότι ο παραπάνω δίσκος έχει μέγεθος συστοιχίας 10 τομείς
– Αν αρχείο 100 bytes αποθηκευθεί στο δίσκο αυτό, αφήνει πολύ αχρησιμοποίητο
χώρο: 10 × 512 bytes – 100 bytes = 5.020 bytes.

Σκληροί Δίσκοι

• H ανάγνωση/ εγγραφή από/ σε ένα σκληρό δίσκο γίνεται με τη βοήθεια μιας


κεφαλής (head)
– η κεφαλή βρίσκεται πάρα πολύ κοντά στην επιφάνεια του δίσκου και είναι στερεωμένη στην
άκρη ενός βραχίονα (arm)
– ο σκληρός δίσκος έχει όσες κεφαλές όσες οι επιφάνειες του (αν οι επιφάνειες είναι διπλής
όψεως τότε έχουμε διπλό αριθμό κεφαλών)
– οι κεφαλές είναι ενωμένες σε κοινό βραχίονα και μετακινούνται όλες μαζί

• Όταν πρόκειται να γίνει ανάγνωση/ εγγραφή δεδομένων


1. ο βραχίονας δέχεται εντολή να μετακινηθεί ώστε η κεφαλή να βρεθεί πάνω από το επιθυμητό
σημείο της επιφάνειας του δίσκου
2. η κεφαλή διαβάζει/ εγγράφει δεδομένα στην επιφάνεια του δίσκου καθώς αυτή περιστρέφεται

• H μετακίνηση του βραχίονα είναι μηχανική και γι’ αυτό οι σκληροί δίσκοι έχουν
χαμηλότερες ταχύτητες από την κύρια μνήμη

• Συνεχόμενα δεδομένα γράφονται (αν αυτό είναι εφικτό) ανά κύλινδρο, έτσι ώστε να
ελαχιστοποιούνται οι μετακινήσεις του βραχίονα (άρα και η σπατάλη χρόνου)
Σκληροί Δίσκοι
• Ο χρόνος προσπέλασης (access time) που απαιτείται για την
προσπέλαση δεδομένων που βρίσκονται αποθηκευμένα σε ένα σκληρό
δίσκο είναι το άθροισμα των παρακάτω τριών παραγόντων:

– Χρόνος αναζήτησης (seek time): είναι ο χρόνος που απαιτείται για να


μετακινήσει ο βραχίονας την κεφαλή ανάγνωσης/εγγραφής πάνω από τον
επιθυμητό κύλινδρο. Ο χρόνος αυτός μετριέται σε χιλιοστά του δευτερολέπτου
(milliseconds, ms) και κυμαίνεται από 5 – 15 ms στους περισσότερους σκληρούς
δίσκους.

– Καθυστέρηση περιστροφής (rotational delay): είναι ο χρόνος που απαιτείται


για να περιστραφεί η επιφάνεια του δίσκου έτσι ώστε η κεφαλή να βρεθεί πάνω
από τον επιθυμητό τομέα Σε ένα δίσκο με ταχύτητα περιστροφής 7.200 RPM
(revolutions per minute, περιστροφές ανά λεπτό), η μέση καθυστέρηση
περιστροφής θα είναι περίπου 8 ms

– Χρόνος μεταφοράς (transfer time): είναι η ταχύτητα με την οποία μεταφέρονται


τα δεδομένα από το σκληρό δίσκο προς την ΚΜΕ για επεξεργασία ή από την
ΚΜΕ προς το σκληρό δίσκο για να αποθηκευτούν

Σκληροί Δίσκοι
• Τυπικά χαρακτηριστικά των σκληρών δίσκων που χρησιμοποιούνται σήμερα
στους προσωπικούς υπολογιστές:

– Χωρητικότητα: 300-500 Gb (έως και 1,5 Tb)

– Ρυθμός Περιστροφής / Ρυθμός Μεταφοράς Δεδομένων: 7.200 περιστροφών


των επιφανειών του δίσκου ανά λεπτό -> 1 Gbit ανά δευτερόλεπτο.
– Υπάρχουν βέβαια και ισχυρότεροι δίσκοι, 15.000 RPM -> 1,5 Gbit/sec.

– Φυσικό μέγεθος: Ενώ οι πρώτοι σκληροί δίσκοι είχαν μέγεθος 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)

Έχει ως αποτέλεσμα πολλαπλές προσπάθειες της κεφαλής για


εντοπισμό ολόκληρου του αρχείου, κάτι που μειώνει την απόδοση
του συστήματος
ΟΠΤΙΚΕΣ ΒΟΗΘΗΤΙΚΕΣ ΜΝΗΜΕΣ

Οπτικές Μνήμες
• Στην περίπτωση των οπτικών μνημών, η τεχνολογία που
χρησιμοποιείται είναι οι οπτικές δέσμες (ακτίνες λέιζερ) σε υλικά
επιστρωμένα με αλουμίνιο

• Τα δεδομένα διαβάζονται από ή αποθηκεύονται σε ένα δίσκο που


είναι επικαλυμμένος με μια στρώση αλουμινίου μέσω μιας ακτίνας
λέιζερ
– Εγγραφή: μια ισχυρή δέσμη λέιζερ «καίει» την επιφάνεια του δίσκου
και έτσι σχηματίζεται μια εσοχή ή την αφήνει ως έχει και έτσι
σχηματίζεται μια κοιλάδα, κωδικοποιώντας έτσι το 0 και το 1

– Ανάγνωση: μια ασθενής δέσμη λέιζερ χτυπά το δίσκο και ένας


αισθητήρας (φωτοδίοδος) διαβάζει τις αντανακλάσεις. Ανάλογα με το
αν έχει καεί ένα σημείο ή όχι διαβάζεται το 0 ή το 1
1 0

Συμπαγείς Δίσκοι (Compact Disks, CD)


• Τα CD είναι μη ασταθής οπτική βοηθητική μνήμη

• Γνωστές παραλλαγές της τεχνολογίας αποτελούν τα:


– CD-ROM (1985), για την αποθήκευση δεδομένων. 800-900 Mb ανά δίσκο.
Επιτρέπει μόνο την ανάγνωση και όχι την εγγραφή πληροφοριών σε αυτό
– CD-R (CD Recordable) (1990), στα οποία ο χρήστης μπορεί να εγγράψει
δεδομένα στην επιφάνεια του δίσκου, αλλά μόνο μια φορά. Ανήκει στην κατηγορία
μνημών που είναι γνωστές ως WORM (write once, read many – μιας εγγραφής,
πολλών αναγνώσεων).
– CD-RW (CD ReWriteable) (1997), που επιτρέπουν πολλαπλές εγγραφές
(θεωρητικά μέχρι 1.000, στην πράξη πολύ λιγότερες) πάνω στην επιφάνεια του
δίσκου.
Ψηφιακοί Ευέλικτοι Δίσκοι
(Digital Versatile Disks, DVD)

• Τα DVD είναι μη ασταθής οπτική βοηθητική μνήμη


– Πρωτοπαρουσιάστηκαν το 1996 και αποτελούν προϊόν συγχώνευσης δυο
παλιότερων τεχνολογιών, του Super Disk (SD) και του Multimedia CD (MMCD)
– Τα DVD αρχικά σχεδιάστηκαν για την αποθήκευση βίντεο και στη συνέχεια έγιναν
δημοφιλή σα βοηθητική μνήμη σε υπολογιστές

• Γνωστές παραλλαγές της τεχνολογίας αποτελούν τα:


– DVD-ROM, για την αποθήκευση δεδομένων. Eπιτρέπουν μόνο την ανάγνωση και
όχι την εγγραφή πληροφοριών σε αυτά
– DVD-R (DVD Recordable), στα οποία ο χρήστης μπορεί να εγγράψει δεδομένα
στην επιφάνεια του δίσκου, αλλά μόνο μια φορά. Ο δίσκος έπειτα μπορεί να
χρησιμοποιηθεί μόνο για την ανάγνωση των δεδομένων αυτών.
– DVD-RW (DVD ReWriteable), που επιτρέπουν πολλαπλές εγγραφές πάνω στην
επιφάνεια του δίσκου.

Δίσκοι Μπλέ Ακτίνας


(BluRay Disks, BRD)
• Η τεχνολογία των BluRay δίσκων παρουσιάστηκε το 2006 και φαίνεται να
αποτελεί το ντε φάκτο νέο πρότυπο για οπτικές μνήμες, επικρατώντας του
ανταγωνιστικού προτύπου HD DVD (Hi Definition DVD)
• Οι διαστάσεις ενός δίσκου BluRay είναι οι ίδιες με αυτές ενός DVD αλλά
λόγω της χρήσης ακτίνας λέιζερ ακόμα μικρότερου μήκους κύματος (405 nm,
από το οποίο προκύπτει και το μπλε χρώμα της ακτίνας), τα δεδομένα
γράφονται ακόμα πυκνότερα

Χαρακτηριστικό CD DVD BluRay


Μήκος κύματος ακτίνας
780nm (υπέρυθρο) 640 nm (κόκκινο) 405 nm (μπλε)
λέιζερ
Απόσταση μεταξύ τροχιών 1,6 μm 0,74 μm 0,32 μm
Απόσταση μεταξύ bits 0,834 μm 0,4 μm 0,14 μm
Μήκος σπειροειδούς ακτίνας
6 – 7,5 Km 17,5 – 25 Km 27 – 54 Km
εγγραφής δεδομένων
Τυπική χωρητικότητα 800 – 900 Mb 4,7 – 17 Gb 25 – 50 Gb
CD – DVD - Blue Ray

Εισαγωγή στην
Πληροφορική και στην
διαχείριση μεγάλου
όγκου δεδομένων
Hardware Υπολογιστών
2η διάλεξη

CPU
CPU – κεντρική μονάδα
επεξεργασίας
Η διαδικασία μετατροπής
ακατέργαστων στοιχείων σε
πληροφορία λέγεται
«επεξεργασία»- processing
και διεκπεραιώνεται από τον
επεξεργαστή (CPU) και την
μνήμη.

H CPU αποτελείται από ένα ή περισσότερα chips


εγκατεστημένα στην κύρια πλακέτα του συστήματος
(motherboard).

Δομικά στοιχεία της ΚΜΕ


Κεντρική Μονάδα Επεξεργασίας
(CPU)

Αριθμητική &
Λογική Μονάδα

Μονάδα
Ελέγχου
Μονάδα
Κεντρική Μνήμη
Εισόδου - Εξόδου
CPU – Μονάδα ελέγχου

Τα κύρια μέρη μιας CPU είναι η μονάδα ελέγχου και η μονάδα


αριθμητικής λογικής (ALU)

• Η μονάδα ελέγχου διευθύνει την ροή των δεδομένων μέσα


στην CPU και προς ή από άλλες συσκευές.

• Η μονάδα ελέγχου αποθηκεύει τον μικροκώδικα της CPU,


ο οποίος περιλαμβάνει τις εντολές για όλες τις διεργασίες
που μπορεί να εκτελεί η CPU.

CPU
Μονάδα αριθμητικής λογικής (ALU)

• Αυτή καθ’ αυτή η επεξεργασία των δεδομένων γίνεται στην


ALU.

• Η ALU μπορεί να εκτελεί αριθμητικές και λογικές λειτουργίες.

• Η ALU συνδέεται με ένα σύνολο καταχωρητών (registers)-


μικρές περιοχές μνήμης στην CPU, που κρατούν δεδομένα και
εντολές προγράμματος κατά την διάρκεια της επεξεργασίας
τους.
Αριθμητική & Λογική Μονάδα (ΑLU)
• Η αριθµητική-λογική µονάδα ALU εκτελεί τις παρακάτω
πράξεις:

– Αριθµητικές πράξεις: πρόσθεση, αφαίρεση,


πολλαπλασιασµός, διαίρεση.
• Τις εκτελεί το τµήµα που καλείται αριθµητική
µονάδα (ΑU).
– Λογικές πράξεις: Συγκρίσεις (=, < ,>) και διάζευξη,
σύζευξη, άρνηση (OR, AND, NOT).
• Τις εκτελεί το τµήµα που καλείται λογική
µονάδα (LU).

ALU – κατάλογος λειτουργιών

Αριθμητικές Λογικές λειτουργίες


λειτουργίες
+ Πρόσθεση ,  ίσον, διάφορο

 Αφαίρεση > μεγαλύτερο

x Πολλαπλασιασμός < μικρότερο


 Διαίρεση  μεγαλύτερο ή ίσο
^ Ύψωση σε δύναμη  Μικρότερο ή ίσο
Ρολόι συστήματος
• Το ρολόι του συστήματος είναι ο βηματοδότης της CPU
χρησιμοποιώντας έναν δονούμενο κρύσταλλο χαλαζία.

• Ένα «τικ» του ωρολογίου είναι το χρονικό διάστημα που


απαιτείται για να γυρίσει ένα transistor στην κατάσταση off
και πάλι πίσω στην on. Αυτό λέγεται ένας κύκλος του
ωρολογίου.

• Η ταχύτητα του ωρολογίου μετράται σε Hertz (Hz). Αν ένας


υπολογιστής έχει ταχύτητα ωρολογίου 1 GHz, τότε
«κτυπάει» 1 δισεκατομμύριο φορές στο δευτερόλεπτο.

Bus
• Η διαδρομή ανάμεσα από διάφορα συστατικά μέρη ενός
υπολογιστή λέγεται bus. Δεδομένα και εντολές μετακινούνται
κατά μήκος της bus.

• To εύρος της bus δεδομένων καθορίζει το πόσα bits


μπορούν να μεταδοθούν μεταξύ της CPU και άλλων
συσκευών.

• Περιφερειακές συσκευές συνδέονται με την CPU με μια


επέκταση της bus.
Συσκευές Εισόδου - Πληκτρολόγιο
• Το πληκτρολόγιο (keyboard) παρέχει τον πιο διαδεδομένο σήμερα
τρόπο εισαγωγής κειμένου, αριθμών και εντολών σε ένα υπολογιστή
– διάταξη πλήκτρων QWERTY (AZERTY στη Γαλλία)
– αποτελείται από 101 ή 104 πλήκτρα
• Πλήκτρα δακτυλογράφησης
• Αριθμητικό πληκτρολόγιο
• Πλήκτρα λειτουργιών
• Πλήκτρα ελέγχου
– ενσύρματα (PS/2 ή USB), ασύρματα (υπέρυθρες ή Bluetooth)
Άλλα Πληκτρολόγια

Gaming Photoshop

Foldable

Συσκευές Εισόδου - Ποντίκι


• Το ποντίκι (mouse) είναι μια βοηθητική συσκευή κατάδειξης και
ελέγχου του δρομέα της οθόνης
– Στόχος: να μεταφράσει την κίνηση του χεριού του χρήστη σε σήματα τα
οποία αντιλαμβάνεται και μεταφράζει ο υπολογιστής σε εντολές
– Ο χρήστης μετακινώντας το ποντίκι μετακινεί κατά την ίδια φορά και
ταχύτητα ένα κέρσορα, ο οποίος έχει συνήθως τη μορφή δείκτη, στην
οθόνη
• Μηχανικό ποντίκι
• Οπτικό ποντίκι
• Επιφάνεια Αφής
• Οθόνη αφής
Συσκευές Εξόδου - Οθόνη
• Το πιο κοινό μέσο εξόδου ενός υπολογιστικού συστήματος είναι
η οθόνη, καθώς δίνει στο χρήστη τη δυνατότητα να έχει οπτική
επαφή με τα δεδομένα και τα αποτελέσματα που παράγονται
από ένα υπολογιστικό σύστημα
– επίπεδες οθόνες, ακολουθώντας την τεχνολογία TFT LCD (thin
film transistor liquid crystal display), ενώ παλιότερα
χρησιμοποιούνταν οθόνες καθοδικού σωλήνα (cathode ray tube,
CRT)

• Χαρακτηριστικά των οθονών


– Μέγεθος
– Μέγεθος του εικονοστοιχείου (pixel)
– Ανάλυση
– Κατανάλωση
– Ρυθμός ανανέωσης εικόνας

Κατηγορίες οθονών

• Καθοδικής ακτίνας (CRT)


• Flat-panel
Σύγκριση οθονών

• Διαστάσεις

• Ανάλυση (Resolution)

• Ρυθμός ανανέωσης (Refresh rate)

• Dot pitch

Διαγώνια διάσταση
Ανάλυση

• Ανάλυση είναι ο αριθμός των pixels στην οθόνη,


εκφραζόμενος ως πίνακας π.χ. 600x800.

• Μια οθόνη 17" προσφέρει ανάλυση από 640x480 έως


1280x1024.

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)

• Οι μη κρουστικοί εκτυπωτές ουσιαστικά αποτελούνται από πολλές


και πολύ διαφορετικές μεταξύ τους τεχνολογίες, με μόνο κοινό ότι η
εκτύπωση δε γίνεται με κρούση του χαρτιού.

– χρησιμοποιείται θερμότητα, ακτίνες λέιζερ, εκτόξευση μελάνης, ανάλογα


με το είδος του εκτυπωτή

– ταχύτητα, από τη στιγμή που δεν έχουν τόσα μηχανικά μέρη όσα οι
κρουστικοί εκτυπωτές

– αθόρυβοι, αφού η εκτύπωση δε γίνεται με κρούση

– Οι βασικοί τύποι μη κρουστικών εκτυπωτών είναι οι εκτυπωτές


εκτόξευσης μελάνης (inkjet) και οι εκτυπωτές λέιζερ (laser).

Εκτυπωτές ψεκασμού (Ink Jet Printers) –


Τρόπος λειτουργίας

• Ο εκτυπωτής εκτοξεύει μικροσκοπικές σταγόνες μελάνης


πάνω στο χαρτί.
Εκτυπωτές Εκτόξευσης Μελάνης (inkjet)

• Λόγω της αναπόφευκτης διάχυσης της μελάνης κατά την εκτόξευση


και πριν στεγνώσει πάνω στο χαρτί, οι inkjet εκτυπωτές μπορεί να
υστερούν στην ποιότητα εκτύπωσης

• Επειδή το μελάνι που χρησιμοποιείται στους εκτυπωτές αυτούς είναι


ευαίσθητο στο νερό, ακόμα και μια μικρή υγρασία θα προκαλέσει
διάχυση της μελάνης στο χαρτί

• Είναι πολύ αθόρυβοι εκτυπωτές, σχετικά φθηνοί στην αγορά τους


(σε σχέση με τους λέιζερ εκτυπωτές), αλλά μπορεί η ανάγκη συχνής
αντικατάστασης των μελανιών τους να αυξήσει σημαντικά το κόστος
λειτουργίας τους
Εκτυπωτές Λέιζερ (laser)
• Οι εκτυπωτές λέιζερ (laser) αποτελούν μια σχετικά παλιά τεχνολογία (εφευρέθηκαν
πριν και από τους dot matrix εκτυπωτές) που όμως έγινε οικονομική και δημοφιλής τα
τελευταία χρόνια
• Μία ακτίνα λέιζερ προσπίπτει σε ένα περιστρεφόμενο κύλινδρο (ο οποίος είναι
φτιαγμένος από φωτοευαίσθητο υλικό), μεταβάλλοντας το ηλεκτρικό φορτίο κάποιων
σημείων του και δημιουργώντας έτσι ένα ηλεκτροστατικό «είδωλο» της προς
εκτύπωσης σελίδας
• Στη συνέχεια, ο κύλινδρος «ντύνεται» με θετικά φορτισμένο γραφίτη, ο οποίος
προσκολλάται μόνο στα σημεία του κυλίνδρου που έχουν φορτιστεί αρνητικά.
• Τέλος, μια σελίδα χαρτιού συμπιέζεται ανάμεσα στον κύλινδρο και σε μια
σταθερή επιφάνειας και έτσι ο γραφίτης περνάει στη σελίδα σχηματίζοντας την
επιθυμητή εικόνα.
• Οι εκτυπωτές λέιζερ διαθέτουν δική τους μνήμη
• Αρχικά, οι εκτυπωτές λέιζερ ήταν ασπρόμαυροι
• Τα τελευταία χρόνια έχουν αναπτυχθεί και έγχρωμοι λέιζερ εκτυπωτές, οι οποίοι έχουν
σχετικά ακριβότερο κόστος αγοράς και λειτουργίας (κόστος ανταλλακτικών γραφίτη –
toner) από τους αντίστοιχους inkjet.

Εκτυπωτές Laser
Εκτυπωτές Laser - Απόδοση
• Ανάλυση 300 – 1200 dpi ή και υψηλότερη.

• Ταχύτητα ~ 4 – 16 ppm.

• Προσφέρουν καλύτερης ποιότητας εκτύπωση από τους


εκτυπωτές ψεκασμού αλλά είναι ακριβότεροι.
Υπολογιστές και Υγεία

• [Link]
Προβήματα υγείας από
υπερβολική/λανθασμένη χρήση των

υπολογιστών
[Link]
• >6-8 ώρες στον υπολογιστή μπορεί να προκαλέσουν προβλήματα υγείας.
• Κούραση των οφθαλών
– Θολή/διπλή εικόνα
– Ξήρανση των οφθαλών
– Πονοκέφαλοι
• Μυική κούραση
– Πόνος
– Ακαμψία

• Πνευματική και ψυχική κούραση


– Αίσθημα κούρασης
– Έλλειψη συγκέντρωσης
– Νευρικότητα
– Ζάλη

• [Link]
computer-use/
• Οφθαλμολογικά προβλήματα. Τα μάτια σταματούν να
ανοιγοκλείνουν και ‘γουρλώνουν’, με αποτέλεσμα να κουράζονται και
να ξηραίνονται.
• Προβλήματα με την πλάτη και τον λαιμό.
• Προβλήματα στα χέρια και στον καρπό
[Link]

[Link]
Σύνδρομο καρπιαίου σωλήνα

Διαταραχή του ύπνου

Η χρήση συσκευών με οθόνες έντονα φωτισμένες για 2 ώρες πριν τον ύπνο
καταστέλλει τη παραγωγή μελατονίνης, που ρυθμίζει το μοριακό ρολόι.
Οι έφηβοι είναι ιδιαίτερα ευάλωτοι.
Προσοχή με τα laptops
• Δεν πρέπει να χρησιμοποιούμε
παρατεταμένα το laptop πάνω στα
πόδια μας.

• Προβλήματα από την θερμότητα


και ίσως και από την Η/Μ
ακτινοβολία.
– Υπογονιμότητα.
– Δερματολογικά προβλήματα

• laptop & wi-fi (RF-EMW) στα


γόνατα πρέπει να αποφεύγεται.

• In vitro μελέτες έδειξαν ότι τα RF-


EMW μπορούν να προκαλέσουν
βλάβες στο αναπαραγωγικό υλικό.

Πληκτρολόγιο και υγειινή

[Link]
Εισαγωγή στην
Πληροφορική και στην
διαχείριση μεγάλου
όγκου δεδομένων
Αριθμητικά συστήματα
Αποθήκευση δεδομένων
Άλγεβρα Boole

3η διάλεξη

Αριθμητικά συστήματα
Τι είναι ένα αριθμητικό σύστημα;
Μέθοδος αναπαράστασης όλων των δυνατών αριθμών σε
κωδικοποίηση β ψηφίων (β=10 για το δεκαδικό, β=2 για το δυαδικό
κ.ο.κ.)
Με κατάλληλους συνδυασμούς των ψηφίων αναπαριστούμε
οποιαδήποτε αριθμητική ποσότητα

Γιατί χρειαζόμαστε αριθμητικά συστήματα στον υπολογιστή;


Ο υπολογιστής είναι ψηφιακή μηχανή
Οι πληροφορίες αποθηκεύονται στη μνήμη του σε μορφή δίτιμων
καταστάσεων (π.χ. υψηλή/χαμηλή τάση)
Αυτές οι καταστάσεις αναπαριστούνται μέσω δυαδικών ψηφίων,
δηλαδή αριθμητικών αναπαραστάσεων που χρησιμοποιούν
συνδυασμούς των ψηφίων 0 και 1, δηλαδή του δυαδικού
συστήματος
1 01 10 1 01 01 1 01

Θεσιακά Αριθμητικά Συστήματα


• Χαρακτηριστικά θεσιακών αριθμητικών συστημάτων
– Βάση: ορίζει τον αριθμό των ψηφίων από τα οποία αποτελείται το
σύστημα αρίθμησης
• π.χ. το δεκαδικό σύστημα αρίθμησης έχει 10 διαφορετικά ψηφία
(0,1,2,3,4,5,6,7,8,9). Άρα η βάση = 10.

– Θέση: ορίζει την αξία του ψηφίου στην αριθμητική αναπαράσταση


• Όσο πιο αριστερά, τόσο περισσότερο σημαντικό είναι το ψηφίο, π.χ. στον
αριθμό 234,7 του δεκαδικού συστήματος το 2 συμβολίζει εκατοντάδες, το 3
συμβολίζει δεκάδες κ.ο.κ.

• Υπάρχουν μη θεσιακά αριθμητικά συστήματα;


– Ναι, π.χ. το αρχαίο ελληνικό (α, β, γ, ...) και το ρωμαϊκό σύστημα (I, II,
III, ...) αρίθμησης
– Δεν υπήρχε σύμβολο που να συμβολίζει την ανυπαρξία αριθμητικής
ποσότητας, δηλαδή το σημερινό μηδέν
– Δύσχρηστα.
Θεσιακά Αριθμητικά Συστήματα
• Πόσα θεσιακά συστήματα αρίθμησης υπάρχουν;
– Θεωρητικά άπειρα, ανάλογα με τον αριθμό των ψηφίων που έχουμε
στη διάθεση μας (βάση)
• Δυαδικό σύστημα αρίθμησης: 0,1
• Οκταδικό σύστημα αρίθμησης: 0,1,2,3,4,5,6,7
• Πενταδικό σύστημα αρίθμησης: 0,1,2,3,4
• Δεκαδικό σύστημα αρίθμησης: 0,1,2,3,4,5,6,7,8,9
• Δεκαεξαδικό σύστημα αρίθμησης: 0,1,2,3,4,5,6,7,8,9,Α,B,C,D,E,F

• Χρειάζονται όλα αυτά στην Πληροφορική;


– Όχι, στους υπολογιστές χρησιμοποιείται το δυαδικό ενώ μερικές φορές
χρησιμοποιούνται επίσης το οκταδικό και το δεκαεξαδικό.

Παράσταση Αριθμού
• Ένας αριθμός Ν αναπαρίσταται σε οποιοδήποτε αριθμητικό σύστημα με μια
ακολουθία ψηφίων. Η θέση κάθε ψηφίου στον αριθμό προσδιορίζει την
αξία του.
– Το πρώτο ψηφίο αριστερά της υποδιαστολής εκφράζει μονάδες (βάση0)
– Όσο μετακινούμαστε προς τα αριστερά, τα ψηφία εκφράζουν αυξανόμενες
δυνάμεις της βάσης του συστήματος (βάση1, βάση2, κτλ)
– Αντίθετα, προς τα δεξιά της υποδιαστολής τα ψηφία εκφράζουν μειούμενες
δυνάμεις της βάσης του συστήματος (βάση-1, βάση-2, κτλ)

• Έτσι, για παράδειγμα:


– Ο αριθμός 101.1 του δυαδικού συστήματος συμβολίζει αριθμητική ποσότητα με 1
τετράδα (22), καμία δυάδα (21), 1 μονάδα (20) και 1 δεύτερο της μονάδας (2-1).
Δηλαδή, είναι το 5.5 του δεκαδικού συστήματος.
Παραδείγματα
• (101.1)2=1x22+0x21+1x20+1x2-1=4+0+1+0.5=(5.5)10

• (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=?

1X23 + 1X22 + 1X21 + 1X20 + 1X2-1 + 1X2-2 =

8 + 4 + 2 +1 + ½ + ¼=

15.75
Παραδείγματα
• Aν μας δοθεί ο (14)10 και μας ζητηθεί να τον εκφράσουμε σε ένα
άλλο σύστημα αρίθμησης;
– Μετατροπή στο εννιαδικό: Το (14)10 αποτελείται από μια εννιάδα και
πέντε μονάδες. Έτσι, (14)10=(15)9.

– Μετατροπή στο πενταδικό: Το (14)10 αποτελείται από δυο πεντάδες


και τέσσερις μονάδες. Έτσι, (14)10=(24)5.

– Μετατροπή στο τριαδικό: Το (14)10 αποτελείται από μια εννιάδα, μια


τριάδα και δυο μονάδες. Έτσι, (14)10=(112)3.

– Μετατροπή στο δυαδικό: Το (14)10 αποτελείται από μια οκτάδα, μια


τετράδα, μια δυάδα και καμία μονάδα. Έτσι, (14)10=(1110)2

• Κάντε το ίδιο για τον αριθμό (34)10.

Παραδείγματα
• (34)10 -> δυαδικό

• 1X32 + 1X2 =

1X25 + 0X24 + 0X23 + 0X22 + 1x21 + 0X20 =

100010
Μετατροπή από το Δεκαδικό
Σύστημα
• Η μετατροπή ενός αριθµού από το δεκαδικό σε ένα οποιοδήποτε αριθµητικό
σύστηµα µε βάση β γίνεται χωριστά για το ακέραιο και χωριστά για το
κλασµατικό μέρος.

• Για το ακέραιο μέρος του αριθμού ακολουθούμε την εξής διαδικασία:


– Βήμα 1ο: Διαιρούμε τον ακέραιο δεκαδικό αριθμό με τη βάση β του συστήματος
στο οποίο θέλουμε να κάνουμε μετατροπή και καταγράφουμε το υπόλοιπο
αυτής της διαίρεσης.

– Βήμα 2ο: Όσο έχουμε πηλίκο διαφορετικό του μηδενός συνεχίζουμε να το


διαιρούμε το πηλίκο με το β και να καταγράφουμε τα νέα υπόλοιπα.

– Βήμα 3ο: Όταν το πηλίκο της διαίρεσης γίνει μηδέν, έχουμε τελειώσει με την
μετατροπή του ακεραίου μέρους και ο αριθμός που ζητάμε προκύπτει αν
καταγράψουμε τα υπόλοιπα από το τελευταίο προς το πρώτο (δηλαδή με την
αντίστροφη σειρά που έχουν βρεθεί).

Παραδείγματα (Ακέραιο Μέρος)


• Μετατροπή του δεκαδικού
41 σε δυαδικό.
– (41)10 = (101001)2
41 (2)
20 1
10 0
5 0
2 1
1 0
0 1
Το δεκαδικό Βάση 10 Βάση 2 Το δυαδικό
σύστημα 0 0 σύστημα
1 1
εκ. δεκ. μον. 2 10 1 1 0 1 1 1=
5 3 4 = 25 24 23 22 21 20
3 11
102 101 100 1x25+1x24+0x23+
4 100
1x22+1x21+1x20=55
5x102+3x101+4x100 5 101
6 110
Κάθε θέση μπορεί Κάθε θέση μπορεί
να πάρει 10 τιμές 7 111
να πάρει 2 τιμές
(ψηφία) που 8 1000 (ψηφία) που
αποτελούν τους αποτελούν τους
συντελεστές των
9 1001
συντελεστές των
δυνάμεων με βάση 10 1010 δυνάμεων με βάση
το δέκα το δύο

Δυαδικό Σύστημα και Η/Υ

– Αποθήκευση Αριθμών.
• Ακεραίων
• Πραγματικών

– Αποθήκευση Χαρακτήρων, Εικόνων και Ήχων.


Παράσταση Πληροφοριών στον Η/Υ
• Η παράσταση οποιασδήποτε πληροφορίας σε μια υπολογιστική
μηχανή γίνεται σε δυαδική μορφή
– Στην πραγματικότητα γίνεται με ηλεκτρικά ή μαγνητικά σήματα που
μπορούν να πάρουν μόνο δυο τιμές
• ανοικτό-κλειστό κύκλωμα, υψηλή-χαμηλή τάση, αριστερόστροφη-
δεξιόστροφη φορά μαγνήτισης, κτλ.
– Αναπαριστούμε τις τιμές αυτές με 0 ή 1.

• Η μικρότερη μονάδα πληροφορίας που μπορεί να παρασταθεί είναι


ένα bit (binary digit)
– Μπορεί να έχει τιμή 0 ή 1

• Μια οκτάδα bits αποτελούν ένα byte


– 11111111
– 00000000

Κατά την περιστροφή


του μέσου η κεφαλή
εγγράφει δεδομένα
Μορφές Πληροφορίας
• Αριθμοί
– Αποθηκεύονται με τη δυαδική τους μορφή
– Γίνονται ειδικές κωδικοποιήσεις για την αναπαράσταση
προσήμων και υποδιαστολών

– Ακέραιοι αριθμοί αποθηκεύονται συνήθως σε 2 bytes ενώ


πραγματικοί αριθμοί σε 4 bytes

– Υπάρχει πάντα όριο στο εύρος αλλά και τη διακριτότητα των


αριθμών που μπορούν να αποθηκευτούν

• Χαρακτήρες και άλλες πληροφορίες


– Αποθηκεύονται επίσης σε δυαδική μορφή βάσει
προσυμφωνημένης κωδικοποίησης (π.χ. ASCII)

Αποθήκευση Φυσικών Αριθμών


στον Υπολογιστή
• Αποθηκεύονται στη δυαδική τους μορφή. Τα όρια των φυσικών αριθμών
που μπορούμε να αποθηκεύσουμε εξαρτώνται από το μέγεθος της μνήμης
που έχουμε στη διάθεση μας
– π.χ. Αν έχουμε 2 bytes χώρο μνήμης τότε μπορούμε να αναπαραστήσουμε τους
αριθμούς με 16 bit συνολικά

– Μικρότερος αριθμός είναι το (0000000000000000)2 = (0)10

– Μεγαλύτερος αριθμός είναι το (1111111111111111)2 = (65535)10


Παραδείγματα αναπαράστασης
(σε H/Y με λέξη 1 byte):

– 1 byte = 8 bits

– o (20)10 = (10100)2. Επειδή ο αριθμός έχει πέντε ψηφία, προσθέτουμε τρία


μηδενικά στην αρχή του και αποθηκεύουμε στη μνήμη τον αριθμό 00010100.

– o (200)10 = (11001000)2. Επειδή ο αριθμός έχει οκτώ ψηφία, δε χρειάζεται να


προσθέσουμε τίποτα, οπότε απλά τον αποθηκεύουμε στη μνήμη: 11001000.

– o (400)10 = (110010000)2. Επειδή ο αριθμός έχει εννέα ψηφία, έχουμε


υπερχείλιση και δεν μπορεί να αποθηκευτεί στη μνήμη μας

Παράσταση Πραγματικών Αριθμών


– Παράσταση Σταθερής Υποδιαστολής
• Υπάρχει σταθερός αριθμός bit για το ακέραιο και για το κλασματικό μέρος
του αριθμού (π.χ. 24 και 8 bit για αποθήκευση σε 4 bytes)
• 4 bytes = 32 bits
Αποθήκευση Χαρακτήρων
• Πως αποθηκεύονται στη μνήμη του υπολογιστή οι αλφαριθμητικοί
χαρακτήρες (γράμματα, ψηφία και σύμβολα);

– ASCII (American Standard Code for Information Interchange)


• Πρότυπο που αντιστοιχεί κάθε χαρακτήρα με ένα ASCII κωδικό (7 ή 8 bit
δυαδικός αριθμός)
• a = 1100001 (ASCII κωδικός)
• το σύμβολο 1 = 0110001 (ASCII κωδικός)

– Unicode και USC (Universal Character Set, πρότυπο 10646 της


ISO/IEC). Στον κειμενοκώδικα Unicode, κάθε χαρακτήρας αποτελείται
από 16 bits (2 bytes) δεδομένων.

Κώδικας Χαρακτήρας
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)

– Τα ψηφιογραφικά συστήματα χωρίζουν την εικόνα σε εικονοστοιχεία ή pixels


(picture element).
Το χρώμα κάθε κουκίδας κωδικοποιείται σε RGB (24 bits/pixel).
Η εικόνα αναπαρίσταται σαν ένας χάρτης από bit (bitmap) που αναπαριστά τα
χρώματα όλων των pixel της εικόνας.

– Τα διανυσματικά συστήματα αναπαριστούν μια εικόνα σαν ένα σύνολο από


μαθηματικά διανύσματα, τα οποία αντιστοιχούν σε σημεία, γραμμές, καμπύλες
και πολύγωνα από τα οποία αποτελείται η εικόνα αυτή.
Οι συνηθέστερα χρησιμοποιούμενες διανυσματικές κωδικοποιήσεις είναι η CGM
και η SVG.
Zooming in on
a bitmapped line
Color printing typically uses ink of four colors: cyan, magenta, yellow, and key (black).
When CMY “primaries” are combined at full strength, the resulting “secondary”
mixtures are red, green, and blue.

Στο CMYK, το υπόβαθρο έχει συνήθως άσπρο χρώμα. Το μελάνι ουσιαστικά


αφαιρεί την ένταση από το άσπρο υπόβαθρο (subtractive model). Το μαύρο
προκύπτει από τον συνδυασμό των 3 χρωμάτων (ή από το ξεχωριστό μαύρο
μελάνι, προκειμένου να εξοικονομηθούν τα άλλα 3 μελάνια).
Χρήσιμο στην εκτύπωση εικόνων πάνω σε λευκό χαρτί.

Στο 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 και Λογικές
Συναρτήσεις

• Βασικές Λογικές Συναρτήσεις:


– Πράξη AND (Και - Σύζευξη)
– Πράξη OR (Είτε - Διάζευξη)
– Πράξη NOT (Όχι - Άρνηση)

Πράξη AND (Και - Σύζευξη)


Έστω οι μεταβλητές α και β:
• Η λογική παράσταση «α α β α AND β
AND β» παίρνει την τιμή
1 (true) , μόνο στην
περίπτωση που και το 0 0 0
α και το β έχουν τιμή 1
(true)
0 1 0

πίνακας αλήθειας
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=ψεύδος

Πράξη ΝΟΤ (Όχι - Άρνηση)


Έστω η μεταβλητή α *:
• Η λογική παράσταση «ΝΟΤ α»
παίρνει την τιμή 1 (true) , στην
περίπτωση που το α δεν έχει
τιμή 1 (true) α ΝΟΤ α

πίνακας αλήθειας

0 1

* Σε αντίθεση με τους AND και OR, όπου


χρειαζόμαστε 2 τελεστέους, για τον
τελεστή ΝΟΤ χρειαζόμαστε ένα μόνο 1 0
τελεστέο.
Λογικές Πύλες

Λογικές Πύλες
• είναι μικροσκοπικά ηλεκτρονικά (ψηφιακά) κυκλώματα

• επιτελούν δυαδικούς υπολογισμούς

• Στην πράξη, ένα τέτοιο κύκλωμα αποτελείται από τρανζίστορ


και πιθανά άλλα στοιχεία
Πύλη OR (Λογική διάζευξη)
• Η πύλη OR παίρνει δύο a b C
bits σαν input και εξάγει
0 0 0
ένα bit σαν output.
• Η τιμή εξόδου C 0 1 1
(output) είναι true (1) 1 0 1
εάν οποιαδήποτε τιμή
εισόδου (input) είναι 1 1 1
true (1).

a
Είσοδος
x
b
Α
Πύλη OR

Πηγή
Έξοδος
Ενέργειας

Είσοδος
Β

Πύλη AND (Λογική σύζευξη)


• Η πύλη AND δέχεται δύο A B C
bits σαν input και εξάγει
0 0 0
ένα bit σαν output.
• Η τιμή εξόδου C 0 1 0
(output) είναι true (1) 1 0 0
μόνο εάν όλες οι τιμές
εισόδου (input) είναι 1 1 1
true (1).

a
x
Πύλη AND
b
Πηγή
Έξοδος
Ενέργειας

Είσοδος Είσοδος
Α Β
Πύλη ΝΟΤ (Λογική άρνηση)
• Η πύλη αυτή παίρνει ένα
bit σαν είσοδο και εξάγει Α C
ένα bit της αντίθετης
αξίας από την αξία αυτού 0 1
που εισήγαμε.
• Η τιμή εξόδου C 1 0
(output) είναι true (1)
μόνο όταν η τιμή
εισόδου A (input) δεν
είναι true (1).
Έξοδος
Πύλη NOT
x y
Πηγή
Ενέργειας
Γείωση

Είσοδος

Άλλες Λογικές Πύλες


• NAND
• NOR
• XOR
• XNOR
Δευτερεύουσες Πύλες
• Oι πύλες ΧΝOR, ΧΟR κτλ ουσιαστικά
αποτελούν συνδυασμούς των τριών
βασικών πυλών (AND, OR και NOT).

Πύλη NAND

Πύλη NAND

• Το αντίθετο του AND. a b C


0 0 1
• Η πύλη NAND παίρνει δύο bits 0 1 1
σαν input και εξάγει ένα bit σαν 1 0 1
output.
1 1 0
• Η τιμή εξόδου C (output) είναι
true (1) εάν ένα από τα δύο
inputs είναι “1” ή κανένα από τα
δύο inputs δεν είναι“1”
Πύλη NOR

• Το αντίθετο του 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

• Η πύλη ΧOR παίρνει δύο bits σαν a b C


input και εξάγει ένα bit σαν
output. 0 0 0

• Η τιμή εξόδου C (output) είναι 0 1 1


true (1) εάν μόνο μία από τις 1 0 1
δύο τιμές εισόδου (input) είναι
true (1). 1 1 0
Πύλη XΝOR

• Η πύλη ΧΝOR παίρνει δύο bits


a b C
σαν input και εξάγει ένα bit σαν
output. 0 0 1
• Η τιμή εξόδου C (output) είναι 0 1 0
true (1) εάν και τα δύο inputs 1 0 0
έχουν την ίδια αξία (είτε είναι
και τα δύο “1”, είτε είναι και τα 1 1 1
δύο “0”) .

Εφαρμογή της λογικής Boole στην


αναζήτηση δεδομένων

Pubmed
Pubmed
• ΒΔ του NCBI. Ξεκίνησε τον Ιανουάριο του 1996.
• Καταχωρεί όλες τις δημοσιευμένες εργασίες που προέρχονται από τον ευρύτερο
χώρο της βιοϊατρικής
• ~20 εκατομύρια εργασίες καταχωρημένες (Ιούλιος 2010)
• Όταν μια εργασία γίνεται δεκτή από το περιοδικό, κατατίθεται και στην Pubmed
• H Pubmed δίνει ένα μοναδικό κωδικό εγγραφής (PMID) και λέξεις κλειδιά που
χαρακτηρίζουν το περιεχόμενο της εργασίας (MeSH terms).
• Από το 2007, το NIH απαιτεί όποιες ερευνητικές εργασίες έχουν χρηματοδοτηθεί από
αυτό, τα αποτελέσματά τους να γίνονται προσβάσιμα σε όλους, μέσω του Pubmed
Central (εντός 12 μηνών από την ημερομηνία δημοσίευσης). (~ 1 εκατομύριο
εργασίες)

Pubmed
Βάσεις Δεδομένων

Pubmed entry as a flat file

Βάσεις Δεδομένων

Pubmed
Pubmed Help

Pubmed help
Pubmed Help – Πεδία πληροφοριών

Pubmed & Boolean search


Εισαγωγή στην Πληροφορική
και στην διαχείριση
μεγάλου όγκου δεδομένων

Το λειτουργικό σύστημα
Το λειτουργικό σύστημα (operating system - OS) συντονίζει και ελέγχει τις
διάφορες διεργασίες σε έναν υπολογιστή και επίσης παίζει τον ρόλο του
ενδιάμεσου μεταξύ του χρήστη ή κάποιων προγραμμάτων (software) και των
μηχανικών μερών του υπολογιστή (hardware)
Τα πιο γνωστά λειτουργικά συστήματα:
• Unix
• Mac OS
• Linux
• Windows

Τα πρώτα λειτουργικά συστήματα γράφτηκαν στην γλώσσα προγραμματισμού


assembly και ήταν ειδικά για τον κάθε τύπο υπολογιστή.
Unix
Το Unix είναι ένα λειτουργικό σύστημα που αναπτύχθηκε το 1969 στα Bell labs της εταιρίας
AT & T, από τους Dennis Richie & Ken Thompson. Γράφτηκε στην γλώσσα
προγραμματισμού C και σχεδιάστηκε για να μπορεί να μεταφερθεί σε διάφορους τύπους
υπολογιστών.
Το 1974 έγινε διαθέσιμο σε κάποια μεγάλα πανεπιστήμια, όμως δεν ήταν ελεύθερο.
Αργότερα, μεγάλες εταιρίες άρχισαν να παίρνουν άδειες για να το χρησιμοποιήσουν.
Βασικά Χαρακτηριστκά:
Έχει ιεραρχικό σύστημα καταλόγων (file system) και αντιμετωπίζει τις διάφορες συσκευές
(π.χ. Terminal, εκτυπωτή) ως αρχεία από τα οποία διαβάζει ή γράφει δεδομένα.
Δεδομένα και configuration files αποθηκεύονται σε μορφή κειμένου που διαβάζεται από τον
άνθρωπο (plain text).
Πολλά μικρά προγράμματα μπορούν να ενωθούν/συνδυαστούν για να παράξουν κάτι.
Το Unix OS αποτελείται από πολλά μικρά προγράμματα που επιτελούν συγκεκριμένες
λειτουργίες και από ένα κεντρικό πρόγραμμα ελέγχου που ονομάζεται Kernel.
Επιτρέπει πολλούς χρήστες ταυτόχρονα.
Επιτρέπει πολλές λειτουργίες να γίνονται ταυτόχρονα.

Kernel

Το kernel είναι ουσιαστικά το


πρόγραμμα διαχειριστής του
λειτουργικού συστήματος. Είναι ο
πυρήνας του συστήματος.

Διαχειρίζεται τον τρόπο με τον οποίο τα


διάφορα άλλα προγράμματα θα
χρησιμοποιήσουν το hardware του
υπολογιστή, όπως τον επεξεργαστή, την
μνήμη, άλλες συσκευές εισόδου/εξόδου
κτλ.
Επικοινωνία του χρήστη με το λειτουργικό σύστημα

Ο χρήστης μπορεί να επικοινωνήσει με το λειτουργικό σύστημα μέσω ενός


γραφικού περιβάλλοντος (Graphical User Interface - GUI, π.χ. Windows), είτε
μέσω ενός τερματικού (terminal) μέσα στο οποίο γράφει εντολές που πρέπει
να εκτελέσει το λειτουργικό σύστημα.

Οι παραπάνω οδηγίες, είτε είναι clicks με το ποντίκι σε ένα γραφικό


περιβάλλον με παράθυρα είτε γράφονται στο terminal σε ανθρώπινη γλώσσα,
πρέπει να μεταφραστούν σε μιά άλλη γλώσσα που καταλαβαίνει ο
υπολογιστής. Αφού ο υπολογιστής εκτελέσει τις εντολές του, θα παράξει
κάποια αποτελέσματα. Αυτά πρέπει να παρουσιαστούν στον χρήστη με ένα
τρόπο που να τα καταλαβαίνει. Τον ρόλο αυτό του «διερμηνέα» μεταξύ των
ανθρώπων και του υπολογιστή τον αναλαμβάνει το «κέλυφος» (shell).

Επικοινωνία του χρήστη με το λειτουργικό σύστημα

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

To 1991, ένας Φινλανδός φοιτητής, ο Linus Torvalds ξεκίνησε την δημιουργία


ενός Kernel που βασίζεται στην αρχιτεκτονική του UNIX και είναι για
υπολογιστές που χρησιμοποιούν επεξεργαστές Intel.

Ζήτησε βοήθεια από άλλους προγραμματιστές και έτσι μαζεύτηκε μια μεγάλη
κοινότητα προγραμματιστών που δούλεψαν εθελοντικά για την δημιουργία
αυτού του UNIX-based kernel, το οποίο ονομάστηκε Linux kernel. Είναι
διαθέσιμο υπό την άδεια GPL. Ακόμα και σήμερα, ο Torvalds έχει τον τελευταίο
λόγο στο τι θα ενσωματωθεί στην τρέχουσα έκδοση του Linux kernel.

Το πρώτο Linux kernel κυκλοφόρησε το 1994 και είχε ~176.000 γραμμές


κώδικα.

Σήμερα έχει πάνω από 9.000.000 γραμμές κώδικα.


GNU system + Linux Kernel
=
GNU/Linux OS

Ο σκοπός του 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.

Οι πιο συνηθισμένες διανομές


• Ubuntu: Δωρεάν, από την Εταιρία Canonical
• Fedora
• Suse
• RedHat
• Android (για κινητά – λείπει το command line interface)
• Kali linux (έχει επιπλέον εξειδικευμένα προγράμματα για ασφάλεια και hacking)
• Biolinux (έχει επιπλέον εξειδικευμένα προγράμματα για βιοπληροφορική)
Εισαγωγή στο Ubuntu Linux 12.04

Πλεονεκτήματα του Ubuntu 12.04

l Δωρεάν

Πολλά προγράμματα βιοπληροφορικής τρέχουν μόνο στα linux.

Πολύ λίγοι ιοί για linux. Έχει πιο ασφαλή αρχιτεκτονική.


Επιπλέον τα κενά ασφαλείας διορθώνονται πιο γρήγορα.

• Πιο ελαφρύ λειτουργικό σύστημα σε σχέση με τα Windows


• τρέχει καλύτερα
• δεν κολλάει εύκολα.

l Ext4 file system δεν χρειάζεται defragmentation


Εγκατάσταση του Ubuntu Linux στον υπολογιστή σας

Αρχικά πρέπει να δημιουργηθεί Live-CD, από όπου γίνεται boot του λειτουργικού
συστήματος.

Οδηγίες για δημιουργία Live-CD μπορείτε να βρείτε στο :


[Link]

Σε αυτή την φάση πρέπει να δημιουργήσετε ένα .iso image στο CD/DVD/USB-stick.

Αφού δημιουργήσετε το Live-CD, ακολουθείστε τις οδηγίες εγκατάστασης.


[Link]

Κάνετε επανεκίνηση του υπολογιστή με το live-CD ή USB-Stick.


Κατά τη διάρκεια του boot, πρέπει να πατήσετε κάποιο ειδικό κουμπί (F12 συνήθως) με το
οποίο επιλέγετε από που θα φορτωθεί το λειτουργικό σύστημα.
Επιλέγετε το CD/DVD/USB, ανάλογα.

Αν έχετε ήδη φορτωμένα τα Windows και θέλετε να βάλετε και το Ubuntu, τότε πρέπει να
κάνετε partition τον σκληρό δίσκο, δηλαδή να τον χωρίσετε και να ορίσετε από πού έως
πού θα χρησιμοποιείται ο χώρος για τα Windows και από πού έως πού θα χρησιμοποιείται
ο χώρος για το Linux.

Εγκατάσταση του Ubuntu Linux στον υπολογιστή σας


To partition χρειάζεται να γίνει γιατί τα Windows και το Linux χρησιμοποιούν
διαφορετικά File Systems.

Τo Linux περιέχει ένα πρόγραμμα που κάνει partition, το GParted.


[Link]

Πριν κάνετε partition τον χώρο που κατείχαν τα Windows, σώστε όλα τα προσωπικά
σας αρχεία, σε περίπτωση απώλειας, κατά την διαδικασία του partition.

Τα βασικά File Systems είναι τα:


• NTFS (Windows)
• FAT32 (χρησιμοποιείται από σχεδόν όλα τα λειτουργικά συστήματα).
• Υποστηρίζει αρχεία μέχρι 4GB μέγεθος.
• Το όνομα ενός αρχείου δεν μπορεί να υπερβαίνει τους 8 χαρακτήρες (+3 για το file
extension).
• Ext2/Ext3/Ext4
• Το ext4 υποστηρίζει πολύ μεγάλους σκληρούς δίσκους και πολύ μεγάλα αρχεία.
• Επιτρέπει έναν άπειρο αριθμό υποκαταλόγων για ένα κατάλογο (κάτι που δεν ίσχυε
πριν)
• Linux-swap (partition για swapping μεταξύ RAM και σκληρού δίσκου στην Virtual
Memory)
Η μπάρα (Launcher) στα Ubuntu 12.04

l Dash

l Folders

l Firefox

l Libre office writer (Word)

l Libre office calc (Excel)

l Libre office impress (Powerpoint)

l Ubuntu Software center

l Ubuntu One

l System Settings

l Workspace switcher

l Trash

Εισαγωγή προγραμμάτων στην μπάρα


(Launcher)
l Επιλέγω το Dash

lΑπό το Dash πληκτρολογώ το πρόγραμμα που με ενδιαφέρει (π.χ. Terminal).


lΕμφανίζεται το εικονίδιο με το πρόγραμμα.
lΤο ξεκινάω πατώντας το, ή μπορώ να το επιλέξω και να το σύρω στην μπάρα (πλέον εμφανίζεται μόνιμα στην μπάρα)

lΠολύ συχνά θα χρειάζεστε τα System Settings & System Monitor, οπότε εισάγετέ τα από την αρχή στην μπάρα.

lΓια να βγάλετε ένα πρόγραμμα από την μπάρα κάνετε πάνω στο εικονίδιό του (στην μπάρα)

lδεξί Click → Unlock from Launcher


Ubuntu Software Center

Από την μπάρα επιλέγω το


Ubuntu Software Center.

Εδώ μπορώ να δω τι
προγράμματα είναι διαθέσιμα
όπως επίσης και τι
προγράμματα έχω
εγκατεστημένα.

System Settings
lΑπό την μπάρα επιλέγω το System Settings
lΑπό εκεί μπορούμε να αλλάξουμε πολλές διαμορφώσεις του συστήματος.
Εισαγωγή ελληνικής γραμματοσειράς
στο πληκτρολόγιο

lΑπό το System Settings επιλέγω Keyboard layout.


lΣτο νέο παράθυρο πατάω το + κάτω αριστερά

lΕμφανίζεται το παράθυρο Choose a Layout και από εκεί επιλέγω την γλώσσα και μετά πατάω add.

Πλέον, όταν θέλω να αλλάξω την γλώσσα στο πληκτρολόγιο πάω στην μαύρη μπάρα
που εμφανίζεται στο επάνω μέρος της οθόνης.
Επιλέγω το εικονίδιο με το πληκτρολόγιο και από εκεί αλλάζω την γλώσσα.

Αλλαγή γραμματοσειράς στο πληκτρολόγιο


Πλέον, όταν θέλω να αλλάξω την γλώσσα στο πληκτρολόγιο πάω στη μαύρη μπάρα
που εμφανίζεται στο επάνω μέρος της οθόνης.
Επιλέγω το εικονίδιο με το πληκτρολόγιο και από εκεί αλλάζω την γλώσσα.

Μπορώ επίσης να αλλάξω την γλώσσα πατώντας ένα συνδυασμό πλήκτρων (shortcut keys)
Τον συνδυασμό πλήκτρων των ορίζω ως εξής:
System Settings → Keyboard layout → Options → Keys to change Layout.
Επιλέγω τον συνδυασμό Ctrl+Shift. → Close
Αλλαγή γραμματοσειράς
στο πληκτρολόγιο

Βασικές συντομεύσεις στο πληκτρολόγιο


Επιλογή όλων (Select All) Ctrl+A
Αντιγραφή (Copy) Ctrl+C
Αποκοπή (Cut) Ctrl+X
Επικόλληση (Paste) Ctrl+V
Ακύρωση προηγούμενης ενέργειας (Undo) Ctrl+Z
Εύρεση (Find) Ctrl+F
Για να δείτε τι συντομεύσεις υπάρχουν γενικά, από το System Settings → Keyboard → Shortcuts
Στην παρακάτω εικόνα φαίνονται οι διάφορες συντομεύσεις για να σώζουμε την εικόνα
ὸπως εμφανίζεται στην επιφάνεια εργασίας (Screen capture: Shift+ PrintScreen button)
Χρήσιμα προγράμματα

Screen Casting

Από το Select Window μπορούμε να επιλέξουμε ποιά περιοχή της οθόνης θα καταγράφεται στο video.
Αφού πατήσουμε το Select Window, πάμε το mouse μέσα στη μικρή οθόνη του παράθυρου
RecordMyDesktop και σύρρωντας το mouse επιλέγουμε την περιοχή καταγραφής.
Στη συνέχεια πατάμε Record και όταν θέλουμε να σταματήσουμε πάμε το mouse στο κόκκινο εικονίδιο
στην πάνω μπάρα και κάνουμε την ανάλογη επιλογή.
VLC media player

Έλεγχος χωρητικότητας: δίσκων/


Λογαριασμών/καταλόγων.
Από το Dash πληκτρολογώ το πρόγραμμα που με ενδιαφέρει
(Disk Usage Analyzer).
Παρακολούθηση φόρτου εργασίας του συστήματος (System Monitor)

Από το Dash πληκτρολογώ το πρόγραμμα που με ενδιαφέρει


(System Monitor).

Παρακολούθηση φόρτου εργασίας του συστήματος (System Monitor)


Αλλαγή εμφάνισης (Appearance) της επιφάνειας εργασίας από το
System Settings

Από την μπάρα


επιλέγω System
Settings & μετά
Appearance

Αλλαγή εμφάνισης (Appearance) της επιφάνειας εργασίας από το


System Settings
Ένταση φωτεινότητας οθόνης / Screen Saver / κλείδωμα οθόνης

Από την μπάρα


επιλέγω System
Settings & μετά
Brightness and
Lock

Ρυθμίσεις ποντικιού
Δημιουργία νέου λογαριασμού στο σύστημα

Για να μπορούμε να δημιουργήσουμε ένα νέο λογαριασμό πρέπει να έχουμε


δικαιώματα administrator στον λογαριασμό μας.
Ο νεός λογαριασμός που θα δημιουργήσουμε θα έχει είτε δικαιώματα administrator
είτε δικαιώματα standard
Πρώτα πρέπει να ξεκλειδώσουμε τον διάλογο για να μπορέσουν να γίνουν αλλαγές.
Θα χρειαστούμε το password του λογαριασμού μας.
Αφού το ξεκλειδώσουμε μπορούμε είτε να σβήσουμε κάποιο λογαριασμό με το –
είτε να δημιουργήσουμε νέο, με το +

Δημιουργία νέου λογαριασμού στο σύστημα

Δίνουμε ένα όνομα στο νέο λογαριασμό, πατάμε create και στη συνέχεια μπορούμε να του
δώσουμε password, πατώντας το Account disabled
Δημιουργία νέου λογαριασμού στο σύστημα

Ρυθμίσεις Δικτύου

Από την μπάρα επιλέγω


System Settings & μετά
Network

Hardware Address = MAC Address


IP Address
Subnet Mask
Default Route
DNS

Automatic DHCP

Manual IP
Media Access Control (MAC) Address

Hardware Address = MAC Address

Κάθε κάρτα δικτύου έχει μια μοναδική ταυτότητα, το MAC address.


Αποτελείται από μια σειρά 12 δεκαεξαδικών αριθμών. Είναι της μορφής:

MM:MM:MM:SS:SS:SS:SS
π.χ.
[Link]

Το πρώτο μισό είναι η ταυτότητα του κατασκευαστή της κάρτας δικτύου.


Στο παραπάνω παράδειγμα, το [Link] αντιστοιχεί στον κατασκευαστή Intel.

Το δεύτερο μισό είναι ο σειριακός αριθμός της συγκεριμμένης κάρτας δικτύου


για την συγκεκριμμένη εταιρία-κατασκευαστή.

Το πρωτόκολλο δικτύωσης TCP/IP υιοθετεί το μοντέλο OSI.


Εδώ υπάρχουν δύο στρώματα δικτύωσης (layers)
MAC address @ data link layer (layer 2 στο OSI model)
Σε αυτό το χαμηλό στρώμμα ο κάθε υπολογιστής (δηλαδή η κάρτα δικτύου του) έχει
μια μοναδική ταυτότητα στο δίκτυο. Όπου και να μεταφέρουμε τον υπολογιστή,
το MAC address δεν αλλάζει.

Internet Protocol (IP) Address


Είναι το κυρίως πρωτόκολλο σύνδεσης στο Internet.
Πολύ συχνά χρησιμοποιείται με το Transport Control Protocol (TCP) και γι`αυτό
αναφερόμαστε σε αυτά ως TCP/IP.

To IP δίνει μοναδικές διευθύνσεις σε υπολογιστές σε ένα δίκτυο.


Τα περισσότερα δίκτυα χρησιμοποιούνε το πρωτόκολλο Interner protocol version 4 (IPv4)

Στο 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 πρωτόκολλα μπορούν να αντιστοιχήσουν διευθύνεις μεταξύ τους.

Π.χ. Η διεύθυνση IP [Link] του IPv4 γίνεται


[Link]
ή
[Link]
στο IPv6.
Internet Protocol (IP) Address

Τα δεδομένα σε ένα δίκτυο που χρησιμοποιεί IP οργανώνονται σε πακέτα.


Το κάθε πακέτο έχει “ταχυδρομικά” στοιχεία, όπως διεύθυνση αποστολέα και παραλήπτη
και άλλα κάποια άλλα στοιχεία, ενώ ακολουθούν τα ίδια τα δεδομένα που μεταφέρει το πακέτο.

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)

Internet Protocol (IP) Address –


Dynamic Host Configuration Protocol (DHCP)
Αν ο υπολογιστής χρησιμοποιεί δυναμικό IP address, τότε κάθε φορά μια συσκευή του δικτύου
δίνει στον υπολογιστή ένα διαφορετικό (συνήθως) IP address, συνήθως μέσω του πρωτοκόλλου DHCP .

Κάποια συσκευή του δικτύου τρέχει έναν DHCP server ο οποίος είναι υπεύθυνος για να
μοιράζει IP addresses, δυναμικά.
Όταν συνδεόμαστε στο δίκτυο, τρέχουμε έναν DHCP client που ζητάει
από τον DHCP server μια σειρά από πληροφορίες για να αποκτήσει IP address,
subnet mask, network gateway, name server addresses.
Αυτά γίνονται αυτόματα από τον DHCP server, χωρίς να χρειάζεται η παρέμβαση του
Network administrator.

DNS: Domain name System. Αντιστοιχεί IP addresses με domain names.


Π.χ. Η διεύθυνση [Link] είναι το domain name. Έχει IP address [Link].

Όταν ζητάμε μια ιστοσελίδα, συνήθως γράφουμε το όνομά της (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.

Αν χρησιμοποιήσουμε anonymous proxy server, τότε επικοινωνούμε με αυτόν (proxy)


χρησιμοποιώντας το δικό μας IP address και στη συνέχεια του ζητάμε να επικοινωνήσει αυτός
με τον Server-X χρησιμοποιώντας τα δικά του στοιχεία.
Έτσι ο Server-X βλέπει μόνο τον anonymous proxy και όχι εμάς.

Διευθύνσεις στο Internet

.Uniform Resource Locator (URL):


Η παγκόσμια διεύθυνση αρχείων και άλλων δεδομένων στο διαδίκτυο (World Wide Web).

Το πρώτο μέρος του URL περιγράφει το πρωτόκολλο επικοινωνίας. Π.χ.:


Http, https, ftp …
Το δεύτερο μέρος έχει την διεύθυνση.
Π.χ με το παρακάτω URL θα κατευάσουμε το εκτελέσιμο αρχείο [Link]
από το domain name [Link] με το πρωτόκολλο http.

[Link]
Εισαγωγή στην Πληροφορική
και στην διαχείριση
μεγάλου όγκου δεδομένων

Εισαγωγή στο Linux/Unix


Πώς είναι οργανωμένο το σύστημα

Δομή αρχείων/καταλόγων στο Linux

/ root

home bin dev etc usr ... ...

Το σύστημα έχει δομή ιεραρχική. Ένας


κατάλογος μπορεί να έχει 1 ή
περισσότερους υπο-καταλόγους.
PC1 PC2 PC3 Όχι το αντίθετο.
Κάθε κατάλογος/αρχείο έχει μια
διεύθυνση. Η διεύθυνση αρχίζει από το
root και ακολουθούμε την κατάλληλη
πορεία μέχρι να καταλήξουμε εκεί που
θέλουμε.

dir1 dir2 dir1 dir2


Δομή αρχείων/καταλόγων στο Linux
/ root

home bin dev etc usr ... ...

Π.χ. ο κατάλογος home έχει διεύθυνση:


/home
Π.χ. ο κατάλογος PC3 έχει διεύθυνση:
/home/PC3
PC1 PC2 PC3 Π.χ. o κατάλογος dir1 που βρίσκεται
μέσα στο PC3 έχει διεύθυνση:
/home/PC3/dir1

Ο κατάλογος dir1 που βρίσκεται μέσα


στο PC1 και ο κατάλογος dir1 που
βρίσκεται μέσα στο PC3 είναι
dir1 dir2 dir1 dir2 διαφορετικοί και έχουν διευθύνσεις:
/home/PC1/dir1
/home/PC3/dir1

Δομή αρχείων/καταλόγων στο Linux


/ root

home bin dev etc usr ... ...

Οι κατάλογοι/αρχεία του κάθε χρήστη


PC1 PC2 PC3
βρίσκονται στο /home
Οι υπόλοιποι κατάλογοι ανήκουν στο
σύστημα

dir1 dir2 dir1 dir2


Home directory
/ root

home bin dev etc usr ... ...

Όταν κάνω loggin ως χρήστης PC1,


PC1 PC2 PC3
ξεκινάω από το home directory που είναι
το /home/PC1

Εάν έκανα loggin ως χρήστης PC3,


ξεκινάω από το home directory που είναι
το /home/PC3
dir1 dir2 dir1 dir2
Το home directory συμβολίζεται με το: ~

Δομή αρχείων/καταλόγων στο Linux


/ root

home bin dev etc usr ... ...

• Μέσα στο /home βρίσκονται οι λογαριασμοί των χρηστών


• Μέσα στο /bin βρίσκονται προγράμματα (συνήθως σε δυαδική μορφή - binary)
• Μέσα στο /sbin βρίσκονται προγράμματα (συνήθως σε δυαδική μορφή - binary) που
χρησιμοποιεί ο superuser
• Μέσα στο /tmp γράφονται παροδικά αρχεία που σβήνονται όταν κλείσει ο υπολογιστής.
• Μέσα στο /lib βρίσκονται βιβλιοθήκες που χρησιμοποιούνται από διάφορα προγράμματα.
• Μέσα στο /etc βρίσκονται configuration files του συστήματος
• Στο /mnt συνδέονται διάφορες εξωτερικές συσκευές, π.χ. Memory sticks, εξωτερικοί σκληροί
δίσκοι, cd-roms κτλ.
Βασικές εντολές

• Κατηγορίες εντολών για


– Πλοήγηση στο σύστημα
– Διαχείριση αρχείων και καταλόγων

Συνήθως τα ονόματα των εντολών είναι συντομογραφίες κάποιων


ρημάτων.
Π.χ. :
List -> ls
Change directory -> cd
Make directory -> mkdir
Copy -> cp
Remove -> rm
Move -> mv

Σύνταξη εντολών (i)

• Οι εντολές γράφονται στο τερματικό (terminal).

• Γράφουμε πρώτα το όνομα της εντολής που θέλουμε να εκτελέσουμε, στη


συνέχεια κάποιες παραμέτρους (αν χρειάζεται) και μετά (αν χρειάζεται) τα
ονόματα αρχείων ή καταλόγων με τα οποία θα δουλέψει η εντολή. Μεταξύ
όλων των παραπάνω μεσολαβούν κενά. Κατόπιν πατούμε ENTER για να
εκτελεστεί η εντολή. Σε μια εντολή μπορούμε να δώσουμε ταυτόχρονα
περισσότερες από μία ειδικές παραμέτρους.

• Στο παρακάτω παράδειγμα ζητάμε να εκτελεστεί η εντολή ls με τις δύο


παραμέτρους –l και –a.
• ls –l –a
• Το ίδιο μπορεί να γραφεί και ως:
• ls –al
Σύνταξη εντολών (ii)

• Αν γράψουμε μόνο το όνομα του αρχείου ή καταλόγου χωρίς την πλήρη


διεύθυνσή του, τότε η εντολή ψάχνει να το βρει (αρχείο ή κατάλογο) μέσα
στον ενεργό κατάλογο, δηλαδή εκεί που βρισκόμαστε.

• Μια εντολή μπορεί να δουλέψει και με αρχεία/καταλόγους που δεν


βρίσκονται στον ενεργό κατάλογο (δηλαδή εκεί που βρισκόμαστε εκείνη την
στιγμή), αρκεί να δώσουμε την κατάλληλη διεύθυνση, για να τα βρει η
εντολή.

• Τα αποτελέσματα μιας εντολής συνήθως εκτυπώνονται στο terminal, εκτός


και εάν τα στείλουμε σε κάποιο αρχείο. Με το σύμβολο > τα αποτελέσματα
γράφονται στο αρχείο που αναγράφεται δεξιά του >. Αν το αρχείο δεν
υπήρχε πριν, δημιουργείται. Αν υπήρχε, τα νέα αποτελέσματα αντικαθιστούν
το παλιό περιεχόμενο (overwrite). Με το >> τα νέα αποτελέσματα
προσθέτονται στο τέλος των παλιών περιεχομένων του αρχείου (append).

Σύνταξη εντολών (iii)


Στην ίδια γραμμή μπορώ να γράψω και δύο ή περισσότερες εντολές, που θα
εκτελεστούν η μία μετά το πέρας της άλλης. Για να γίνει αυτό πρέπει τις εντολές
να τις χωρίσω μεταξύ τους με το ;
Π.χ.: Εντολή1 ; Εντολή2 ; Εντολή3

Επίσης, τα αποτελέσματα μιας εντολής μπορώ να τα καναλιζάρω ως


εισερχόμενα δεδομένα σε μια άλλη εντολή με το | (pipe)
Π.χ.
Εντολή1 | Εντολή2 > results
Στο παραπάνω παράδειγμα η Εντολή1 παρήγαγε κάποια αποτελέσματα που
αντί να εκτυπωθούν στο terminal πήγαν ως εισερχόμενα δεδομένα στην
Εντολή2 η οποία με τη σειρά της παρήγαγε νέα αποτελέσματα τα οποία αντί να
εκτυπωθούν στο terminal γράφτηκαν στο αρχείο results.
Σύνταξη εντολών (iv)
Με το πλήκτρο tab γίνεται αυτόματη συμπλήρωση των δεδομένων σε μια
γραμμή εντολής.

Π.χ. Βρίσκομαι στον κατάλογο /home/User1/ και από κάτω υπάρχουν οι


υποκατάλογοι Desktop, Dir1, Dir2 και Games.

Για να μετακινηθώ στον υποκατάλογο Games πρέπει να πληκτρολογήσω:


cd Games
ή μπορώ να πληκτρολογήσω cd G και μετά να πατήσω το πλήκτρο Tab. To
Linux καταλαβαίνει ότι θέλω το Games και το συμπληρώνει αυτόματα.

Αν θέλω να πάω στο Desktop (από το /home/User1/), αρκεί να πληκτρολογήσω


cd De και μετά να πατήσω το πλήκτρο Tab. Θα συμπληρωθεί αυτόματα η λέξη
Desktop. Αν όμως πληκτρολογούσα μόνο cd D και μετά πατούσα το Tab, το
Linux δεν θα ήξερε αν θέλω να πάω στο Desktop, Dir1 ή Dir2. Θα
παραπονιώταν με ένα ήχο. Αν ξαναπατήσω το Tab αμέσως, θα μου δείξει τις 3
επιλογές που υπάρχουν, δηλαδή τα Desktop, Dir1, Dir2.

Σύνταξη εντολών (v)


Μπορούμε να δούμε ποιές εντολές εκτελέσαμε πιο πριν πληκτρολογώντας την
εντολή history.

Επίσης, πατώντας στο πληκτρολόγιο το βέλος προς τα επάνω, εμφανίζεται στο


terminal η προηγούμενη εντολή. Αν θέλω να πάω 3 εντολές προς τα πίσω,
πατάω το βέλος προς τα επάνω 3 φορές. Αν μετά θέλω να πάω 2 εντολές προς
τα εμπρός, πατάω το βέλος προς τα κάτω 2 φορές.

Τα βέλη είναι πολύ χρήσιμα όταν εκτελούμε μια πολύ μεγάλη και περίπλοκη
εντολή και πρέπει μετά από λίγο να την ξαναπληκτρολογήσουμε. Έτσι, και
γλιτώνουμε χρόνο και αποφεύγουμε λάθη κατά την πληκτρολόγηση.
Σύνταξη εντολών (vi)
Κατά την σύνταξη μιας εντολής μπορώ να χρησιμοποιήσω wild cards, δηλαδή
σύμβολα που μπορούν να σημαίνουν οποιοδήποτε χαρακτήρα ή χαρακτήρες.
Το σύμβολο για το wild card είναι ο αστερίσκος *

Π.χ. Βρίσκομαι σε ένα directory που έχει 15 αρχεία, τα file1 έως file15 και το
doc1.
Θέλω να σβήσω τα αρχεία file1 – file15, αλλά όχι το doc1.
Αντί να εκτελέσω την εντολή για το κάθε ένα αρχείο ξεχωριστά, μπορώ να του
πω να σβήσει όλα εκείνα τα αρχεία που ξεκινούν με τους χαρακτήρες “file”

rm file*

Οδηγίες χρήσης μιας εντολής


Η εντολή man μας δίνει πληροφορίες για μια εντολή.
Πληκτρολογούμε man και μετά την εντολή.
Π.χ.: man ls

Οι οδηγίες είναι δομημένες σε διάφορες ενότητες:


NAME
SYNOPSIS
DESCRIPTION: Εκεί υπάρχουν και τα διαθέσιμα options για την εντολή που τις
δίνουν επιπλέον ειδικές λειτουργίες.
EXAMPLES
SEE ALSO: άλλες διαθέσιμες εντολές που σχετίζονται με την παρούσα.

Το man έχει μια πληθώρα πληροφοριών για την εντολή που συνήθως
κουράζουν τον αναγνώστη. Μια καλή πηγή πληροφοριών για εντολές συνήθως
συναντάται σε προσωπικές ιστοσελίδες στο διαδίκτυο (να ναι καλά το Google
search!!!). Το man συνήθως είναι καλή πηγή για να μας θυμίσει τι κάνουν
κάποιες ειδικές παράμετροι μιας εντολής.
Βασικές εντολές για πλοήγηση μέσα στο σύστημα

Ο ενεργός κατάλογος είναι αυτός στον οποίο βρισκόμαστε. Μπορούμε να


μετακινηθούμε.

• ls από το list. Παρουσίαση αρχείων/καταλόγων εντός του ενεργού


καταλόγου
• cd από το change directory. Αλλαγή του ενεργού καταλόγου.
• pwd από το print working directory. Δείχνει που βρισκόμαστε.

Βασικές εντολές πλοήγησης


Βρίσκομαι στο directory PC1.
Η πλήρης διεύθυνσή του είναι /home/PC1

PC1 Μέσα στο PC1 έχω ένα αρχείο fileX και 2


fileΧ υποκαταλόγους dir1 & dir2. Μέσα στον
dir1 έχω ένα αρχείο file1. Μέσα στο dir2
έχω υποκατάλογο dir3.
Εφόσον ο ενεργός κατάλογος είναι ο PC1
(εκεί βρίσκομαι), αν εκτελέσω την εντολή
pwd, θα μου δώσει την διεύθυνση:
/home/PC1
dir1 dir2
file1
Αν θέλω να δω τι υπάρχει μέσα στο PC1
(αρχεία και υποκατάλογοι) εκτελώ την
εντολή ls
Θα μου δείξει ότι μέσα στον PC1 υπάρχει
ένα αρχείο fileX και 2 υποκατάλογοι dir1
dir3
& dir2. Δεν θα δω το file1 & dir3.
Βασικές εντολές πλοήγησης - ls
Αν θέλω να δω τι υπάρχει μέσα στο PC1
(αρχεία και υποκατάλογοι) εκτελώ την
εντολή ls
Θα μου δείξει ότι μέσα στον PC1 υπάρχει
PC1 ένα αρχείο fileX και 2 υποκατάλογοι dir1
fileΧ
& dir2.
Αν θέλω να δω τι υπάρχει στον dir3 ενώ
ακόμα βρίσκομαι στο PC1, πρέπει να
δώσω την διεύθυνση του directory dir3
στην εντολή ls.

ls /home/PC1/dir2/dir3
dir1 dir2
file1
ls –l
To –l αλλάζει την μορφοποίηση των
αποτελεσμάτων.

ls –a
dir3 μας δείχνει ακόμα και κρυφά
αρχεία/directories (το όνομά τους αρχίζει
με την τελεία .)

Πλοήγηση στο Linux - cd

/ root

home bin dev etc usr ... ...

PC1 PC2 PC3 Βρίσκομαι στο root και θέλω να πάω


στο directory dir1 του PC3. Πώς θα
πάω;

dir1 dir2 dir1 dir2


Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

Πρώτα πάω στο home.


• Εκτελώ:
cd home
ή
PC1 PC2 PC3
cd ./home

• Εκτελώ ls για να δω τα sub-


directories & files του home. Ποιά
είναι;
dir1 dir2 dir1 dir2 • Εκτελώ pwd για να δω το πλήρες
μονοπάτι του directory στο οποίο
βρίσκομαι τώρα. Ποιό είναι;

Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

Μετά πάω στο PC3.


• Εκτελώ:
cd PC3
PC1 PC2 PC3 ή
cd ./PC3
• Εκτελώ ls για να δω τα sub-
directories & files του PC3.
Ποιά είναι;
• Εκτελώ pwd για να δω το
dir1 dir2 dir1 dir2 πλήρες μονοπάτι του directory
στο οποίο βρίσκομαι τώρα.
Ποιό είναι;
Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

Μετά πάω στο dir1


• Εκτελώ:
cd dir1
PC1 PC2 PC3 ή
cd ./dir1
• Εκτελώ ls για να δω τα sub-
directories & files του dir1.
Ποιά είναι;
• Εκτελώ pwd για να δω το
dir1 dir2 dir1 dir2 πλήρες μονοπάτι του directory
στο οποίο βρίσκομαι τώρα.
Ποιό είναι;

Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

Αν βρίσκομαι στο root, πως μπορώ


με μια μόνο εντολή να πάω στο dir1
του PC3;
PC1 PC2 PC3

dir1 dir2 dir1 dir2


Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

Δίνω το πλήρες
PC1 PC2 PC3 μονοπάτι:
cd /home/PC3/dir1
Ή
Δίνω το μονοπάτι από
την θέση που βρίσκομαι:
cd ./home/PC3/dir1
dir1 dir2 dir1 dir2 Το ./ σημαίνει από εδώ
που βρίσκομαι.

Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

Αν βρίσκομαι στο home, πώς


μπορώ με μια μόνο εντολή να πάω
στο dir1 του PC3;
PC1 PC2 PC3

dir1 dir2 dir1 dir2


Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

• Δίνω το πλήρες μονοπάτι:


cd /home/PC3/dir1
Ή
PC1 PC2 PC3 • Δίνω το μονοπάτι από την θέση
που βρίσκομαι:
cd ./PC3/dir1
• Θα δουλέψει η παρακάτω εντολή
αν βρίσκομαι στο home; Γιατί;
cd /PC3/dir1
dir1 dir2 dir1 dir2

Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

• Βρίσκομαι στο /usr και θέλω να


πάω στο dir1 του PC3.
PC1 PC2 PC3
• Πώς θα πάω βήμα-βήμα;
• Πώς θα πάω με μία μόνο
εντολή;

dir1 dir2 dir1 dir2


Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

• Βρίσκομαι στο /usr και θέλω να


πάω στο dir1 του PC3.
PC1 PC2 PC3
• Πώς θα πάω βήμα-βήμα;
• cd ../ Πάω ένα επίπεδο
επάνω
• cd home
• cd PC3
dir1 dir2 dir1 dir2 • cd dir1

Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

• Βρίσκομαι στο /usr και θέλω να


πάω στο dir1 του PC3.
PC1 PC2 PC3
• Πώς θα πάω με μία μόνο
εντολή;
• cd ../home/PC3/dir1
• ή
• cd /home/PC3/dir1
dir1 dir2 dir1 dir2
Άσκηση 6: Δομή αρχείων/καταλόγων στο Linux

/ root

home bin dev etc usr ... ...

• Βρίσκομαι στο dir1 του PC1.


• Πώς θα πάω με μία μόνο
PC1 PC2 PC3
εντολή στο dir1 του PC3;

dir1 dir2 dir1 dir2

Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

• Βρίσκομαι στο dir1 του PC1.


• Πώς θα πάω με μία μόνο
εντολή στο dir1 του PC3;
• cd ../../PC3/dir1
PC1 PC2 PC3
• Ή χρησιμοποιώντας το πλήρες
μονοπάτι:
• cd /home/PC3/dir1

dir1 dir2 dir1 dir2 Για να επιστρέψω στο


προηγούμενο directory, εκτελώ:
cd -
Βασικές εντολές διαχείρισης αρχείων/καταλόγων

• mkdir testdir1 - από το make directory. Δημιουργεί ένα κατάλογο (subdirectory)


με όνομα testdir1 μέσα στον κατάλογο όπου βρισκόμαστε.

• rm – r testdir1 - από το remove. Σβήνει τον κατάλογο testdir1 και τα περιεχόμενά


του.

• rm testfile1 - Σβήνει το αρχείο testfile1

• cp testfile1 testfile2 - από το copy. Αντιγράφει ένα αρχείο testfile1 και το


ονομάζει testfile2

• cp –r testdir1 testdir2 – Αντιγράφει τον κατάλογο testdir1 και τα περιεχόμενά του


στον κατάλογο testdir2.

• mv testfile1 testfile3 - από το move. Μετονομάζει το αρχείο testfile1 σε testfile3

Παράδειγμα - ls
Αν θέλω να δω τι υπάρχει μέσα στο PC1
(αρχεία και υποκατάλογοι) εκτελώ την
εντολή ls
PC1 Θα μου δείξει ότι μέσα στον PC1 υπάρχει
fileΧ ένα αρχείο fileX και 2 υποκατάλογοι dir1
& dir2.
Αν θέλω να δω τι υπάρχει στον dir3 ενώ
ακόμα βρίσκομαι στο PC1, πρέπει να
δώσω την διεύθυνση του directory dir3
στην εντολή ls.

dir1 dir2 ls /home/PC1/dir2/dir3


file1
ή
ls ./dir2/dir3

Τι θα μου δείξει η εντολή?

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

Δημιουργία αρχείου με την εντολή cat

PC1
• Βρίσκομαι στο dir1 του PC1.

• Πώς θα δημιουργήσω ένα αρχείο με το


όνομα file1 που μέσα του γράφει το όνομα
μου (xρησιμοποιώ την εντολή cat – σημαίνει
dir1 dir2 concatenate)
Δημιουργία αρχείου με την εντολή cat
• Βρίσκομαι στο dir1 του PC1.

• Πώς θα δημιουργήσω ένα αρχείο με το


όνομα file1 που μέσα του γράφει το
PC1 όνομά μου (xρησιμοποιώ την εντολή
cat)

• cat > file1


• blablabla
• Control D (πατάω ταυτόχρονα τα 2
πλήκτρα)
dir1 dir2 • Το βελάκι > σημαίνει ότι τα
file1
περιεχόμενα που θα
πληκτρολογήσουμε θα πάνε μέσα στο
αρχείο file1.
• Επειδή χρησιμοποιώ το > αυτό
σημαίνει ότι οποιδήποτε περιεχόμενο
file1 υπήρχε πριν μέσα στο file1 θα
διαγραφεί και θα μείνει μόνο το όνομα
blablabla που γράψαμε.

Δημιουργία αρχείου με την εντολή cat

• Το βελάκι > σημαίνει ότι τα


περιεχόμενα που θα
πληκτρολογήσουμε θα πάνε μέσα στο
PC1 αρχείο file1.
• Επειδή χρησιμοποιώ το > αυτό
σημαίνει ότι οποιδήποτε περιεχόμενο
υπήρχε πριν μέσα στο file1 θα
διαγραφεί και θα μείνει μόνο το όνομα
που γράψαμε.
• Αν χρησιμοποιήσω τα 2 βελάκια μαζί
>> τότε το παλιό περιεχόμενο
dir1 dir2 παραμένει ενώ το νέο περιεχόμενο
file1
γράφεται κάτω από το παλιό.

file1

blablabla
Δημιουργία αρχείου με την εντολή cat
Έχω το file1 που μέσα του γράψαμε blablabla
Αν εκτελέσω την παρακάτω εντολή τι θα έχει ως
περιεχόμενο το file1?

PC1 cat > file1


xxxx
Control D

Αν στη συνέχεια εκτελέσω την παρακάτω εντολή τι


θα έχει ως περιεχόμενο πλέον το file1?

cat >> file1


yyyy
dir1 dir2 Control D
file1

file1 file1 file1


xxxx
blablabla xxxx yyyy

Ένωση αρχείων με την εντολή cat


Έχω το file1 που μέσα του γράψαμε xxxx
Και το file 2 που μέσα του γράψαμε yyyy
Θέλω να ενώσω το περιεχόμενό τους σε ένα τρίτο
αρχείο file3
PC1
cat file1 file2 > file3

Με την εντολή cat μπορώ να ενώσω τα


περιεχόμενα από περισσότερους των 2 αρχείων.
Η ένωση θα γίνει με βάση την σειρά με την οποία
αναφέρω στην εντολή τα αρχεία προς ένωση.

dir1 dir2
file1 file2

file1 file2 file3


xxxx
xxxx yyyy yyyy
Εισαγωγή στην Πληροφορική
και στην διαχείριση
μεγάλου όγκου δεδομένων

Εισαγωγή στο Linux/Unix


Οι εντολές more, head, tail

Για να δω τι περιέχει το file1 εκτελώ: more file1

Για να δω τι περιέχει η πρώτη γραμμή του file1


Desktop εκτελώ: head –n 1 file1
Ή
file1
head -1 file

Για να δω τι περιέχουν οι πρώτες 2 γραμμές του


file1 εκτελώ: head –n 2 file1

Για να δω τι περιέχει η τελευταία γραμμή του file1


εκτελώ: tail –n 1 file1

Για να δω τι περιέχουν οι τελευταίες 2 γραμμές


του file1 εκτελώ: tail –n 2 file1

Εντοπισμός/εκτύπωση συγκεκριμένης γραμμής σε ένα


αρχείο:
συνδυασμός εντολών head & tail
Π.χ. Στο file1 έχω 100 γραμμές και θέλω να δω μόνο την 4η. Εκτελώ:

head –n 4 file1 | tail –n 1

Το πρώτο κομμάτι της εντολής κρατάει τις 4 πρώτες γραμμές.


Το pipe (|) καναλιζάρει τις 4 αυτές γραμμές στην δεύτερη εντολή, την tail.
Η δεύτερη εντολή tail παίρνει ως εισερχόμενα τις 4 γραμμές από την προηγούμενη εντολή και
κρατάει μόνο την τελευταία από αυτές.

Άσκηση: Με ποιά εντολή θα δω την 3η & 4η γραμμή του file1;

file1
Line1
Line2
Line3 head –n 4 Line1 tail –n 1
Line4 Line2 Line4
Line5 Line3
… Line4

Δημιουργεία καταλόγου με το mkdir – Μετακίνηση
αρχείων με το mv

Βρισκόμαστε στο Desktop και έχουμε 3 αρχεία, τα


file1, file2, file3.

Θέλουμε να δημιουργήσουμε ένα κατάλογο


Desktop (subdirectory) με το όνομα filesdir και στη συνέχεια
να μεταφέρουμε τα 3 αρχεία (file1, file2, file3) μέσα
σε αυτό τον υποκατάλογο.

Για να δημιουργήσουμε τον υποκατάλογο


εκτελούμε:
file1
mkdir filesdir
filesdir
file2 file3
Στη συνέχεια, για να μετακινήσουμε το αρχείο file1
μέσα στο filesdir εκτελούμε:
mv file1 ./filesdir/

Μετακινήστε και τα υπόλοιπα 2 αρχεία στο filesdir.

Δημιουργεία καταλόγου με το mkdir – Μετακίνηση


αρχείων με το mv

file1 file1

mkdir filesdir mv file1 ./filesdir/


Desktop Desktop Desktop
file2 file3 file2 file3
file2 file3

file1

filesdir filesdir
Μετονομασία αρχείων με το mv
Βρισκόμαστε στο Desktop και έχουμε πλέον 3
αρχεία, τα file1, file2, file3 μέσα στον υποκατάλογο
filesdir.

Θέλουμε να μετονομάσουμε το αρχείο file1 σε file1r


ενώ όμως συνεχίζουμε να βρισκόμαστε στο
Desktop (χωρίς να μετακινηθούμε μέσα στο
Desktop filesdir).

Αν εκτελούσαμε:
mv file1 file1r
Η εντολή δεν θα λειτουργούσε, γιατί η εντολή θα
file1 έψαχνε το file1 μέσα στον κατάλογο που
r βρισκόμαστε τώρα, δηλαδή μέσα στο Desktop.
filesdir Επειδή όμως το file1 βρίσκεται σε άλλο κατάλογο,
file2 file3 πρέπει να δώσουμε είτε την πλήρη είτε την σχετική
r r
διεύθυνση του file1, για να δουλέψει η εντολή mv.

Μετονομασία αρχείων με το mv
Η πλήρης διεύθυνση του file1 είναι:
/home/PC1/Desktop/filesdir/file1

Η σχετική διεύθυνση του file1 είναι:


./filesdir1/file1

./ σημαίνει: από εδώ που βρίσκομαι.


Desktop
Άρα, η σωστή εντολή για να μετονομάσω το file1 σε
file1r (που βρίσκεται μέσα στο filesdir) ενώ
βρίσκομαι στο Desktop είναι:
mv ./filesdir/file1 ./filesdir/file1r
file1
r Κάντε την αντίστοιχη μετατροπή και για τα
filesdir υπόλοιπα δύο αρχεία.
file2 file3
r r
Μετονομασία/μετακίνηση αρχείων με το mv

Βρισκόμαστε στο Desktop και έχουμε ήδη


μετονομάσει τα 3 αρχεία που βρίσκονται στον
υποκατάλογο filesdir.

Θέλουμε να μεταφέρουμε το αρχείο file1r από τον


υποκατάλογο filesdir στον κατάλογο Desktop, όπου
Desktop βρισκόμαστε. Εκτελούμε:
file1 file2 mv ./filesdir/file1r ./file1r
r x

Μπορούμε ταυτόχρονα να μετακινήσουμε ένα


αρχείο και να το μετονομάσουμε. Θέλουμε το
αρχείο file2r (που βρίσκεται στον υποκατάλογο
filesdir) να το μετακινήσουμε στον κατάλογο
filesdir
Desktop (που βρισκόμαστε) και ταυτόχρονα να το
file3
r μετονομάσουμε σε file2x. Εκτελούμε:
mv ./filesdir/file2r ./file2x

Μετονομασία/μετακίνηση αρχείων με το mv

Desktop Desktop Desktop


file1 file1 file2
r r x

mv ./filesdir/file1r ./file1r mv ./filesdir/file2r ./file2x


file1
r

filesdir filesdir filesdir


file3 file3 file3
file2r file2r r
r r
Διαγραφή καταλόγου με το rm -r
Βρισκόμαστε στο Desktop και έχουμε ήδη μεταφέρει εδώ το αρχείο file1r ενώ το
file2r το μεταφέραμε και το μετονομάσαμε σε file2x.
Τώρα θέλουμε να διαγράψουμε τον υποκατάλογο filesdir μαζί με τα περιεχόμενά
του. Εκτελούμε:
rm –r filesdir
Στη συνέχεια θέλουμε να δούμε αν συνεχίζει να υπάρχει ο υποκατάλογος filesdir
μέσα στον Desktop. Τι εντολή θα εκτελέσουμε για να δούμε τι υπάρχει μέσα στον
Desktop?

Desktop Desktop
file1 file2 file1 file2
r x r x
rm –r filesdir

filesdir
file3
r

Δικαιώματα αρχείων και καταλόγων


Ένα αρχείο μπορούμε να το:
• Διαβάσουμε (read)
• Τροποποιήσουμε (write)
• Εκτελέσουμε, αν είναι πρόγραμμα (execute)

• Ένα αρχείο μπορεί να είναι προσβάσιμο μόνο για μια από τις παραπάνω τρεις
ενέργειες (διάβασμα, τροποποίηση, εκτέλεση), ή για οποιoδήποτε συνδυασμό
τους.

• Στο Linux, υπάρχει ο χρήστης (user), η ομάδα (group), οι υπόλοιποι (others).


• Ένα αρχείο μπορεί να είναι προσβάσιμο για συγκεκριμένες ενέργειες από τον
χρήστη και προσβάσιμο για συγκεκριμένες ενέργειες από την ομάδα ή από τους
υπόλοιπους. Με αυτό τον τρόπο ελέγχουμε τα δικαιώματα που έχει ο καθένας στο
συγκεκριμένο αρχείο.

• Με την εντολή ls –l μπορούμε να δούμε τι δικαιώματα έχει ο καθένας πάνω στα


αρχεία ενός καταλόγου.
• Πρώτα φαίνονται τα δικαιώματα του χρήστη, μετά της ομάδας, μετά των
υπολοίπων. Τα δικαιώματα για τον καθένα εμφανίζονται με την σειρά
read/write/execute, χρησιμοποιώντας τα σύμβολα r w x αντίστοιχα.
Δικαιώματα αρχείων και καταλόγων
Παρακάτω φαίνονται τα δικαιώματα ενός αρχείου στο οποίο όλοι έχουν
πρόσβαση και για ανάγνωση και για τροποποίηση και για εκτέλεση.
rwxrwxrwx
Στο παρακάτω αρχείο μόνο ο χρήστης (user) έχει πρόσβαση για ανάγνωση,
τροποποίηση, εκτέλεση, ενώ οι υπόλοιποι (group & others) έχουν πρόσβαση
μόνο για ανάγνωση
rwxr--r--
Στο παρακάτω αρχείο μόνο ο χρήστης (user) έχει πρόσβαση για ανάγνωση,
εκτέλεση, ενώ οι υπόλοιποι (group & others) δεν έχουν πρόσβαση για τίποτα.
r-x------
Στο παρακάτω αρχείο, τι προσβάσεις υπάρχουν για user/group/other?
r-x-w---x

Δικαιώματα αρχείων και καταλόγων - chmod


Με την εντολή chmod μπορούμε να τροποποιήσουμε τα δικαιώματα σε ένα αρχείο.

Στην εντολή chmod:


το read συμβολίζεται με το 4
Το write συμβολίζεται με το 2
To execute συμβολίζεται με το 1.

Ο συνδυασμός read-write συμβολίζεται με το 6 (4+2)


Ο συνδυασμός read-execute συμβολίζεται με το 5 (4+1)
Ο συνδυασμός write-execute συμβολίζεται με το ... ????

Ο συνδυασμός read-write-execute συμβολίζεται με το 7 (4+2+1)

Άρα 3 νούμερα αρκούν για τα δικαιώματα του χρήστη, του group, των υπολοίπων.
Το νούμερο 777 σημαίνει ότι και οι τρεις (user/group/other) έχουν όλα τα δικαιώματα
(read-write-execute )
Δικαιώματα αρχείων και καταλόγων - chmod
Με την εντολή chmod μπορούμε να τροποποιήσουμε τα δικαιώματα σε ένα αρχείο.

Θέλουμε το αρχείο file1r να είναι προσβάσιμο μόνο για ανάγνωση μόνο σε εμάς ως
χρήστη.
r--------
Οπότε, εκτελούμε:
chmod 400 file1r

Προσπαθήστε τώρα να γράψετε κάποιο όνομα μέσα στο file1r με την εντολή cat,
όπως κάνατε πριν.
Σας το επιτρέπει το σύστημα?

Αλλάξτε τα δικαιώματα του file1r σε:


rw-------
Ποιό νούμερο χρειάζεστε στο chmod?
Αφού αλλάξατε τα δικαιώματα, μπορείτε να γράψετε κάποιο όνομα μέσα στο file1r με
την εντολή cat?

Η εντολή wc (word count)

Με την εντολή wc (word count) μπορούμε να μετρήσουμε τον αριθμό των γραμμών ή
των λέξεων ή των χαρακτήρων σε ένα αρχείο

Για να μετρήσουμε τις γραμμές, λέξεις, χαρακτήρες του αρχείου file1r ταυτόχρονα
εκτελούμε:
wc file1r

Για να μετρήσουμε μόνο τις γραμμές (lines) του αρχείου file1r εκτελούμε:
wc –l file1r

Για να μετρήσουμε μόνο τις λέξεις (words) του αρχείου file1r εκτελούμε:
wc –w file1r

Για να μετρήσουμε μόνο τους χαρακτήρες (characters) του αρχείου file1r εκτελούμε:
wc –c file1r
du: Υπολογισμός μεγέθους αρχείων/καταλόγων

Με την εντολή du που σημαίνει disk usage μπορούμε να μετρήσουμε το


μέγεθος αρχείων ή καταλόγων μαζί με τους υποκατάλογούς τους.

Για να γίνει η μέτρηση σε megabytes χρησιμοποιούμε την παράμετρο –m

Με την παρακάτω εντολή μετρούμε πόσο χώρο (σε megabytes) καταλαμβάνει ο


κατάλογος Desktop μαζί με τους υποκαταλόγους του.

du –m Desktop

Η εντολή sort

Με την εντολή sort μπορούμε να τακτοποιήσουμε τις γραμμές ενός αρχείου


αλφαβητικά.
sort file1 > file1_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
Η εντολή 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

sort –n & sort -r


Η εντολή sort κατά σύμβαση ταξινομεί τα νούμερα ως χαρακτήρες με βάση τον πίνακα ASCII ή to UTF.
Αν θέλουμε να ταξινομηθούν ως αριθμοί, πρέπει να χρησιμοποιήσουμε την παράμετρο –n. Αν
θέλουμε την αντίστροφη ταξινόμηση, χρησιμοποιούμε και την παράμετρο -r

file1

3 eleni sort file1 1 maria


1 maria 11 anna
2 giannis 2 giannis
11 anna 3 eleni

file1

3 eleni sort –n file1 1 maria


1 maria 2 giannis
2 giannis 3 eleni
11 anna 11 anna

file1

3 eleni sort –nr file1 11 anna


1 maria 3 eleni
2 giannis 2 giannis
11 anna 1 maria
sort –k : ταξινόμηση συγκεκριμένης στήλης
Με την παράμετρο –k μπορούμε να ζητήσουμε να γίνει η ταξινόμηση από μια
συγκεκριμένη στήλη και μετά, ή για συγκεκριμένη στήλη, ή για συγκεκριμένες στήλες, η
κάθε μια με τον δικό της τρόπο. Πρέπει επίσης να ορίσουμε τον διαχωριστή για την κάθε
στήλη.

Για να ορίσω την ταξινόμηση σε συγκεκριμένες στήλες, π.χ. πρώτα την 2η (ως αριθμούς)
και μετά την 1η, με διαχωριστή το tab \t εκτελώ:
sort –t $‘\t’ –k2n,2 –k1,1 file1

Chrom1 1 0.9 Chrom1 1 0.9


Chrom1 2 0.9 Chrom2 1 0.8
Chrom1 3 1 Chrom1 2 0.9
Chrom1 4 2 Chrom2 2 0.9
Chrom1 5 11 Chrom1 3 1
Chrom2 1 0.8 Chrom2 3 1
Chrom2 2 0.9 Chrom1 4 2
Chrom2 3 1 Chrom2 4 2
Chrom2 4 2 Chrom1 5 11
Chrom2 5 12 Chrom2 5 12

sort –k : ταξινόμηση συγκεκριμένης στήλης


Με την παράμετρο –k μπορούμε να ζητήσουμε να γίνει η ταξινόμηση από μια
συγκεκριμένη στήλη και μετά, ή για συγκεκριμένη στήλη, ή για συγκεκριμένες στήλες, η
κάθε μια με τον δικό της τρόπο. Πρέπει επίσης να ορίσουμε τον διαχωριστή για την κάθε
στήλη.

Για να ορίσω την ταξινόμηση σε συγκεκριμένες στήλες, π.χ. πρώτα την 2η (ως αριθμούς)
αντίστροφα και μετά την 1η, με διαχωριστή το tab \t εκτελώ:
sort –t $’\t’ –k2nr,2 –k1,1 file1

Chrom1 1 0.9 Chrom1 5 11


Chrom1 2 0.9 Chrom2 5 12
Chrom1 3 1 Chrom1 4 2
Chrom1 4 2 Chrom2 4 2
Chrom1 5 11 Chrom1 3 1
Chrom2 1 0.8 Chrom2 3 1
Chrom2 2 0.9 Chrom1 2 0.9
Chrom2 3 1 Chrom2 2 0.9
Chrom2 4 2 Chrom1 1 0.9
Chrom2 5 12 Chrom2 1 0.8
Η εντολή uniq

Με την εντολή uniq μπορούμε να διαγράψουμε επαναλαμβανόμενες γραμμές μέσα


σε ένα αρχείο. Πρέπει όμως να έχει προηγηθεί sort του αρχείου.

Στο αρχείο file_unsorted είχαμε 6 γραμμές, με μία επανάληψη (1 maria) στις γραμμές
2 & 6.

Εκτελέστε:
uniq file_unsorted
Διαγράφηκε η επαναλαμβανόμενη γραμμή?

Εκτελέστε:
uniq file_sorted
Διαγράφηκε τώρα η επαναλαμβανόμενη γραμμή?

Αν θέλουμε να σώσουμε τα αποτελέσματα του uniq, πρέπει να τα κατευθύνουμε σε


κάποιο φάκελο.
Εκτελέστε:
uniq file_sorted > file_uniq

Η εντολή 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

Αν θέλουμε να σώσουμε τα αποτελέσματα του uniq, πρέπει να τα κατευθύνουμε σε


κάποιο φάκελο.
Εκτελέστε:
uniq file_sorted > file_uniq

Η χρήση των pipes |

Στο προηγούμενο παράδειγμα θέλαμε να διαγράψουμε όποιες επαναλαμβανόμενες


γραμμές υπήρχαν στο αρχείο file_unsorted.

Αυτό έγινε με δύο εντολές.


Πρώτα κάναμε sort στο αρχείο file_unsorted και σώσαμε τα αποτελέσματα σε ένα
άλλο αρχείο file_sorted.
Μετά χρησιμοποιήσαμε ως input το file_sorted στην εντολή uniq και τα αποτελέσματα
σώθηκαν στο αρχείο file_uniq.
Δηλαδή, εκτελέσαμε:
sort file_unsorted > file_sorted
uniq file_sorted > file_uniq

Με την χρήση των pipes (|) μπορούμε να καναλιζάρουμε τα αποτελέσματα (output)


μιας εντολής ως input σε μια άλλη εντολή. Έτσι, αντί για τις παραπάνω 2 εντολές και
την δημιουργία του ενδιάμεσου αρχείου file_sorted μπορούμε να κάνουμε το ίδιο με
μια εντολή ως εξής:
sort file_unsorted | uniq > file_uniq
vi editor

vi editor
• Για να γράψουμε κάτι μέσα στο αρχείο ή
να τροποποιήσουμε το κείμενο, πρέπει
να βρισκόμαστε στο INSERT MODE.

• Για να τροποποιήσουμε κάτι στο κείμενο


ή να κινηθούμε σε κάποια γραμμή,
πρέπει να βρισκόμαστε στο COMMAND
MODE.

• Για να σώσουμε ή όχι το κείμενο, πρέπει


να βρισκόμαστε στο LAST LINE MODE.

• Μετακινούμαστε από το ένα MODE στο


άλλο μέσω του
• ENTER,
• ESC,
• SHIFT :
• A, a, I, I, O, o
vi editor
Άσκηση 1: Δημιουργία ενός νέου αρχείου
• Από το τερματικό, που βρίσκομαι στο directory Desktop, δημιουργώ το
αρχείο test1
– vi test1 (και πατώ ENTER)
– Εμφανίζεται ένα άδειο αρχείο.
• Μπαίνω στο INSERT MODE πατώντας το πλήκτρο i.
• Τώρα μπορώ να γράψω ότι θέλω. Πάω σε καινούργια σειρά με το ENTER.
Γράφω πάλι κάτι.
• Τώρα θέλω να σώσω αυτό που έγραψα στο αρχείο test1 και να τερματίσω
το vi.
– Μπαίνω στο LAST LINE MODE με SHIFT :
– Πληκτρολογώ wq (που σημαίνει write quit) και πατώ ENTER.

vi editor
Άσκηση 2: Διαγραφή δεδομένων ενός αρχείου μέσω του
INSERT MODE
• Ανοίγω πάλι το προηγούμενο αρχείο (test1) με το vi editor.
• vi test1
• Θέλω να σβήσω ότι δεδομένα έχει το test1.
• Μπορώ να σβήσω τα προηγούμενα δεδομένα είτε μέσα από το COMMAND
MODE είτε μέσα από το INSERT MODE.

• Αν μπω στο INSERT MODE σβήνω τα δεδομένα με το DELETE. Πάω τον


κέρσορα στο τέλος της τελευταίας γραμμής (με τα βελάκια στο
πληκτρολόγιο) και αρχίζω να σβήνω. Εκτελέστε το.

• Όταν σβήσετε όλα τα δεδομένα, τερματίστε το vi χωρίς όμως να έχετε


αποθηκεύσει τις αλλαγές που κάνατε, γιατί θα τις επαναλάβετε στη συνέχεια
μέσα από το COMMAND MODE. Για να τερματιστεί το vi χωρίς να έχουν
αποθηκευθεί οι αλλαγές, πάτε στο LAST LINE MODE και πληκτρολογείτε q!,
που σημαίνει quit without saving.
vi editor
Άσκηση 2: Διαγραφή δεδομένων ενός αρχείου μέσω του
COMMAND MODE
• Τροποίηση του προηγούμενου αρχείου μέσω του COMMAND MODE
• Ανοίξτε πάλι το test1 με το vi. Βρίσκεστε στο COMMAND MODE.
• Πάτε τον κέρσορα σε κάποια γραμμή και πληκτρολογείτε dd
• Μόλις σβήσατε μια γραμμή.
• Αν θέλετε να σβήσετε Χ γραμμές από εκεί που βρίσκεται ο κέρσορας,
πληκτρολογείτε πρώτα τον αριθμό X και αμέσως μετά πατάτε dd.
• Αν θέλετε να ακυρώσετε την προηγούμενη εντολή που δώσατε,
πληκτρολογείτε u (είναι το undo).
• Αν θέλετε να ακυρώσετε και την πιο προηγούμενη εντολή που δώσατε, ξανά
πληκτρολογείτε u.
• Τερματίστε το vi χωρίς να αποθηκεύσετε τις αλλαγές που κάνατε.

vi editor
Άσκηση 3: Μετακίνηση εντός αρχείου μέσω του
COMMAND MODE
• Ανοίξτε πάλι το test1 με το vi. Βρίσκεστε στο COMMAND MODE.
• Για να δείτε την αρίθμηση της κάθε σειράς πάτε στο LAST LINE MODE και
πληκτρολογήστε set number. Αν θέλετε να σταματήσετε αυτή την απεικόνιση,
πάτε πάλι στο LAST LINE MODE και πληκτρολογήστε set number!

• Για να μετακινήσετε τον κέρσορα στη δεύτερη γραμμή, πληκτρολογείτε τον


αριθμό της γραμμής 2 και αμέσως μετά πληκτρολογείτε ταυτόχρονα SHIFT g

• Για να μετακινήσετε τον κέρσορα στην τελευταία γραμμή, χωρίς να ξέρετε τον
αριθμό της, πληκτρολογείτε μόνο SHIFT g

• Σβήστε την τελευταία γραμμή με το SHIFT G & dd και στην συνέχεια


αποθηκεύστε τις αλλαγές χωρίς να τερματίσετε το vi, πηγαίνοντας στο LAST
LINE MODE και πληκτρολογώντας μόνο w (& ENTER).

• Σβήστε τη νέα τελευταία γραμμή με το SHIFT G & dd και στην συνέχεια


αποθηκεύστε τις αλλαγές, τερματίζοντας ταυτόχρονα το vi.
vi editor
Άσκηση 4:
• Ανοίξτε πάλι το test1 με το vi. Βρίσκεστε στο COMMAND MODE.

• Θέλετε να σβήσετε ότι δεδομένα έχει το test1 και να τα αντικαταστήσετε με τα


ονόματα 5 φίλων και πληροφορίες τους όπως από ποιά πόλη είναι. Σε κάθε γραμμή
βάζετε τα στοιχεία ενός ατόμου, ξεκινώντας από το όνομα και μετά την πόλη και μετά
τον αύξοντα αριθμό του ατόμου. Μεταξύ των στοιχείων σε μια σειρά υπάρχουν tab.

• Θέλετε να πάει αυτόματα ο κερσόρας στην γραμμή και θέση εκείνη που έχει το όνομα
ενός συγκεκριμένου ατόμου. Για να γίνει αυτό, πρέπει να βρίσκεστε στο COMMAND
MODE. Πληκτρολογείτε / και στη συνέχεια βλέπετε τον κέρσορα να πηγαίνει στην
τελευταία γραμμή του terminal. Πληκτρολογείτε το όνομα του ατόμου, πατάτε ENTER
και ο κέρσορας πηγαίνει στην θέση που βρίσκεται το όνομα.

• Αν το όνομα υπάρχει περισσότερες από μια φορές στο file, τότε κάθε φορά που
πατάτε / & ENTER, ο κέρσορας μετακινείται στην επόμενη θέση.

• Δοκιμάστε το ίδιο όπως παραπάνω, ψάχνοντας μέσα στο file για ένα συγκεκριμένο
γράμμα του αλφάβητου αντί για ένα ολόκληρο όνομα.

• Αποθηκεύστε τις αλλαγές χωρίς να τερματίσετε το vi.

vi editor
Άσκηση 5:
• Σε συνέχεια της προηγούμενης άσκησης, βρίσκεστε στο COMMAND
MODE.

• Θέλετε να αντικαταστήσετε την τιμή 5 με την λέξη final.

• Πάτε στο LAST LINE MODE και πληκτρολογείτε:


• %s/5/final/g

• Το s σημαίνει substitute. Μεταξύ της πρώτης και δεύτερης / εισάγετε τον


ή τους χαρακτήρες που θέλετε να αντικατασταθούν, ενώ μεταξύ της
δεύτερης και τρίτης / εισάγετε τον ή τους χαρακτήρες που θέλετε να
αντικαταστήσουν τους πρώτους.
• το % σημαίνει αντικατάσταση σε όλες τις γραμμές
• Το g σημαίνει global, δηλαδή αντικατάσταση περισσότερες από μια
φορές στην ίδια γραμμή, εφόσον υπάρχει.
• Τερματίστε το vi δίχως να αποθηκεύσετε τις αλλαγές.
vi editor
Άσκηση 6:
• Δημιουργείστε ένα νέο file με το δικό σας περιεχόμενο και χρησιμοποιήστε
όλες τις προηγούμενες εντολές που μάθατε για το vi.

Awk: Επιλογή στήλης από ένα αρχείο


• Βρίσκεστε στο ίδιο directory με το test1, μέσα στο οποίο έχετε τις πληροφορίες
για 5 φίλους σας.
• Θέλετε να δείτε μόνο τα ονόματα που υπάρχουν μέσα στο test1.
• Από το terminal, πληκτρολογείτε:
• awk ‘{print $1}’ test1
• To $1 σημαίνει ότι θέλετε να κάνετε print μόνο την πρώτη στήλη του test1.
• Αν θέλατε να κάνετε print μόνο την δεύτερη στήλη, θα χρησιμοποιούσατε το $2.
• Εκτελέστε μια εντολή που να κάνει print στο terminal τις δύο πρώτες στήλες.
• Θέλετε να βάλετε μόνο τα ονόματα (πρώτη στήλη) σε ένα άλλο file με το όνομα
[Link]
• Πληκτρολογείτε:
• awk ‘{print $1}’ test1 > [Link]
• Το σύμβολο > σημαίνει ότι το output από μια εντολή, αντί να εμφανιστεί στο
terminal, οδηγείται μέσα σε ένα file που μπορεί ήδη να υπάρχει, ή να μην
υπάρχει και να δημιουργείται τώρα. Αν ο φάκελος [Link] ήδη υπήρχε πριν
την εντολή, το σύμβολο > θα έκανε overwrite τα περιεχόμενα του [Link]
• Δείτε τα περιεχόμενα του [Link] με το vi
• Επαναλάβετε την προηγούμενη εντολή χρησιμοποιώντας όμως το σύμβολο >>
αντί για >
• Δείτε πάλι τα περιεχόμενα του [Link] με το vi. Τι συνέβη τώρα; Τι γίνεται όταν
χρησιμοποιώ το >>
Awk: Επιλογή στήλης από ένα αρχείο
test1 test2
A1 B1
A2 B2 awk ‘{print $1}’ test1 > test2 A1
A3 B3 A2
A3
B4

test1 test2
A1 B1
Β1
A2 B2
awk ‘{print $2}’ test1 > test2 Β2
A3 B3
Β3
Β4
B4

Awk: Επιλογή στήλης από ένα αρχείο


• Βρίσκεστε στο ίδιο directory με το test1, μέσα στο οποίο έχετε τις
πληροφορίες για 5 φίλους σας.
• Θέλετε να δείτε (στο terminal) μόνο τις πόλεις (δεύτερη στήλη) που
υπάρχουν μέσα στο test1.
• Από το terminal, τι εντολή πληκτρολογείτε;
• Θέλετε να βάλετε μόνο τις πόλεις (δεύτερη στήλη) που υπάρχουν μέσα στο
test1 σε ένα άλλο file με το όνομα [Link]
• Τι πληκτρολογείτε;
cut: Επιλογή στήλης από ένα αρχείο
Μπορείτε να επιλέξετε δεδομένα από συγκεκριμμένες θέσεις σε μια γραμμή, με την
εντολή cut.
To –c σημαίνει : character

Π.χ., για να πάρετε τον 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. Με ποιά
εντολή θα κόψετε την ακολουθία του γονιδίου που σας ενδιαφέρει να μελετήσετε;

cut: Επιλογή στήλης από ένα αρχείο


Μπορείτε να επιλέξετε δεδομένα από συγκεκριμμένες θέσεις σε μια γραμμή, με
την εντολή cut.

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 αρχεία μαζί.

[Link] [Link] pasted_file.txt

B1 A1 B1
A1 paste [Link] [Link] > pasted_file.txt 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 όταν έχουν το ίδιο κλειδί.

A1 Nasia A1 Salonica A1 Nasia Salonica


A2 Christos A2 Elasona A2 Christos Elasona
A3 Giannis A3 Larisa A3 Giannis Larisa
Join: Ένωση αρχείων με βάση μοναδικά κλειδιά
• join f1 f2 > f3

A0 XXX A1 Salonica A1 Nasia Salonica


A1 Nasia A2 Elasona A2 Christos Elasona
A2 Christos A3 Larisa A3 Giannis Salonica
A3 Giannis A4 XXX

A1 Nasia A1 Salonica A1 Nasia Salonica


A3 Giannis A2 Elasona A3 Giannis Larisa
A2 Christos A3 Larisa

Εισαγωγή στην Πληροφορική


και στην διαχείριση
μεγάλου όγκου δεδομένων
Εισαγωγή στο Linux/Unix

seq: Δημιουργία ακολουθίας αριθμών


Με την εντολή seq δημιουργούμε μια ακολουθία αριθμών από το x έως το y με
προσαύξηση κατά z. Αν δεν ορίσουμε την τιμή της προσαύξησης, τότε
χρησιμοποιείται η τιμή 1.
Μπορούμε να ορίσουμε τι διαχωρίζει το ένα νούμερο από το άλλο με την
παράμετρο –s. Αν δεν ορίσουμε το διαχωριστή, τότε χρησιμοποιείται το \n (νέα
γραμμή).
Επίσης, με την παράμετρο –w μπορούμε να ζητήσουμε όλα τα νούμερα να
έχουν τον ίδιο αριθμό ψηφίων, με την χρήση μηδενικών όποτε χρειαστεί
μπροστά από ένα νούμερο.

Παράδειγμα:
Θέλετε να δημιουργήσετε μια ακολουθία αριθμών, τον ένα δίπλα από τον άλλο
που να διαχωρίζονται με : από το 1 μέχρι το 101, όπου ο κάθε αριθμός θα
αυξάνει κατά 10. Επίσης, όλα τα νούμερα θα πρέπει να έχουν τον ίδιο αριθμό
ψηφίων. Εκτελείτε την παρακάτω εντολή:
seq –s “:” -w 1 10 101

Άσκηση: Με ποιά εντολή θα δημιουργήσετε μια ακολουθία αριθμών τον ένα


κάτω από τον άλλο, από το 101 έως το 1 με μείωση κατά 10, όπου τα νούμερα
δεν θα έχουν τον ίδιο αριθμό ψηφίων;
Συνδυαστική άσκηση
Έχετε ένα αρχείο file1 με τα ονόματα γονιδίων, ένα μοναδικό γονίδιο σε κάθε
γραμμή.
Δεν γνωρίζετε πόσα είναι τα γονίδια.
Θέλετε να δημιουργήσετε ένα νέο αρχείο file2 και να προσθέσετε τον αύξοντα
αριθμό στην αρχή της κάθε γραμμής.
Οι αύξοντες αριθμοί θα πρέπει να έχουν τον ίδιο αριθμό ψηφίων.
Ποιές εντολές θα εκτελέσετε;

file1 file2

Gene1 001 Gene1


Gene2 002 Gene2
Gene3 003 Gene3
… …
Gene500 500 Gene500

Συνδυαστική άσκηση – Λύση


Αρχικά πρέπει να μάθουμε τον αριθμό των γονιδίων:
wc –l file1
Έστω ότι το αρχείο file1 έχει 500 γονίδια.
Μετά πρέπει να δημιουργήσουμε ένα αρχείο [Link] που έχει τους αύξοντες
αριθμούς, με τον ίδιο αριθμό ψηφίων:
seq –w 1 500 > [Link]
Μετά πρέπει να ενώσουμε τα δύο αρχεία, [Link] & file1 γραμμή προς γραμμή
στο νέο αρχείο file2:
paste [Link] file1 > file2

[Link] file1 file2

001 Gene1 001 Gene1


002 Gene2 002 Gene2
003 Gene3 003 Gene3
… … …
500 Gene500 500 Gene500
comm: Σύγκριση 2 αρχείων
Με την εντολή comm μπορούμε να συγκρίνουμε 2 αρχεία, στα οποία όμως έχει
γίνει πρώτα sort.
Το αποτέλεσμα είναι είναι η εμφάνιση 3 στηλών (χωρίζονται με tab).
Στην στήλη 1 εμφανίζονται οι γραμμές που είναι μοναδικές στο 1ο αρχείο.
Στην στήλη 2 εμφανίζονται οι γραμμές που είναι μοναδικές στο 2ο αρχείο.
Στην στήλη 3 εμφανίζονται οι γραμμές που είναι κοινές στα 2 αρχεία.

Με τις παραμέτρους -1 -2 -3, ή με συνδυασμούς τους καταστέλουμε την


εμφάνιση της αντίστοιχης στήλης ή του συνδυασμού.

Με την εντολή comm μπορούμε εύκολα να συγκρίνουμε 2 λίστες από ονόματα,


γονίδια κτλ.

Παρόμοια εντολή με την comm είναι η diff.

comm: Σύγκριση 2 αρχείων


Π.χ. Έχουμε τα παρακάτω 2 αρχεία file1 & file2. Η σύγκριση με την παρακάτω
εντολή θα δώσει:
comm file1 file2
file1 file2
Gene1
Gene1 Gene2 Gene2
Gene2 Gene3 Gene3
Gene3 Gene4 Gene4
Gene5 Gene5

Π.χ. Έχουμε τα παρακάτω 2 αρχεία file1 & file2. Η σύγκριση με την παρακάτω
εντολή θα δώσει:
comm -12 file1 file2
Gene1 Gene2
Gene2 Gene3 Gene2
Gene3 Gene4 Gene3
Gene5

Με ποιά εντολή θα βρούμε τα γονίδια που συναντώνται μόνο στο file2;


Συνδυαστική Άσκηση
• Σας δίνεται ένα αρχείο (BioGrid_interactions.txt) που περιέχει πρωτεϊνικές
και γενετικές αλληλεπιδράσεις από τον πολύ καλά μελετημένο οργανισμό
μοντέλο S. cerevisiae (ζυμομύκητας).

• Στην μία στήλη αναγράφεται το όνομα του ενός γονιδίου/πρωτεΐνης και στην
δεύτερη στήλη το όνομα του άλλου γονιδίου/πρωτεΐνης. Ένα
γονίδιο/πρωτεΐνη είναι δυνατόν να έχει περισσότερες από μια
αλληλεπιδράσεις. Στην τρίτη στήλη αναγράφεται η πειραματική μέθοδος
εντοπισμού. Στην τέταρτη στήλη το είδος της αλληλεπίδραση
(γενετική/φυσική). Είναι δυνατόν μια αλληλεπίδραση να έχει εντοπιστεί με
περισσότερες από μια μεθόδους.

Gene_name1 Gene_name2 Experim_method genetic/physical_interaction


Gene_1 Gene_2 Y2H physical
Gene_1 Gene_2 immuniprecipitation physical
Gene_1 Gene_3 Y2H physical
Gene_3 Gene_4 synthetic_lethal genetic
Gene_1 Gene_4 synthetic_lethal genetic

Συνδυαστική Άσκηση

Gene_name1 Gene_name2 Experim_method genetic/physical_interaction


Gene_1 Gene_2 Y2H physical
Gene_1 Gene_2 immuniprecipitation physical
Gene_1 Gene_3 Y2H physical
Gene_3 Gene_4 synthetic_lethal genetic
Gene_1 Gene_4 synthetic_lethal genetic

Με ποιές εντολές μπορείτε να βρείτε:


• πόσες αλληλεπιδράσεις υπάρχουν συνολικά στο αρχείο.
• πόσες μοναδικές αλληλεπιδράσεις (ασχέτως πειραματικής μεθόδου)
υπάρχουν συνολικά στο αρχείο
• πόσα μοναδικά γονίδια/πρωτεΐνες υπάρχουν στο αρχείο.
• πόσες διαφορετικές πειραματικές μέθοδοι εντοπισμού αναγράφονται στο
αρχείο.
Η εντολή grep

Η εντολή 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 στο file_out?

Η εντολή grep

Με την παρακάτω εντολή θα εντοπιστούν οι γραμμές 4 & 5


Εκτελέστε:
grep ‘na’ file1
file1 terminal
1 eleni larisa
2 maria larisa 4 giannis athina
3 giorgos larisa 5 anna xanthi
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, με την παρακάτω εντολή θα εντοπιστούν η 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

Όσα αρχεία θέλουμε να ψάξουμε τα γράφουμε στη σειρά, το ένα μετά το άλλο.

file1 file2 terminal

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

Βρισκόμαστε στο Desktop και τα 2 αρχεία που μας


ενδιαφέρουν (file1, file2) βρίσκονται στον
υποκατάλογο filesdir.

Τι εντολή θα δώσουμε για να δούμε στο terminal τις


Desktop
γραμμές που περιέχουν το όνομα ‘giorgos’ στα δύο
αυτά αρχεία?

grep 'giorgos' ./filesdir/file1 ./filesdir/file2

Η παράμετρος –r μας επιτρέπει να ψάξουμε όλα τα


filesdir
αρχεία ενός καταλόγου και των υποκαταλόγων του.
file1 file2 Έτσι, αν θέλαμε να ψάξουμε όλα τα αρχεία του
καταλόγου filesdir από το Desktop, εκτελούμε:

grep –r ‘giorgos’ ./filesdir/


grep -c

Με την παράμετρο –c εμφανίζεται και ο συνολικός αριθμός των γραμμών στις οποίες
εντοπίστηκε η λέξη/χαρακτήρες από το grep.

Στο file1, με την παρακάτω εντολή θα εντοπιστούν 2 γραμμές, η 3η και 6η που


περιέχουν τους χαρακτήρες ‘giorgos’ και στο terminal θα εμφανιστεί το νούμερο 2.
grep -c ‘giorgos’ file1

file1 terminal
eleni larisa
maria larisa 2
giorgos larisa
giannis athina
anna xanthi
giorgos2 volos

grep -v

Με την παράμετρο –v εντοπίζονται οι γραμμές που ΔΕΝ περιέχουν την


λέξη/χαρακτήρες που δώσαμε στο grep.

Στο 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, οι χαρακτήρες ‘giorgos’ υπάρχουν στην 3η γραμμή, ενώ οι χαρακτήρες


‘Giorgos’ στην 6η γραμμή. Η παρακάτω εντολή θα μας δώσει μόνο την 3η γραμμή.
grep ‘giorgos’ file1

Ενώ η παρακάτω εντολή θα μας δώσει την 3η και 6η γραμμή.


grep -i ‘giorgos’ file1

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, οι χαρακτήρες ‘giorgos’ υπάρχουν στην 3η γραμμή και θα εμφανιστούν με


κόκκινο χρώμα.
grep –color=auto ‘giorgos’ file1

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 ?

Egrep: Αναζήτηση με περισσότερα από ένα μοτίβα


• Ποιά είναι η εντολή για να βρω γραμμές που περιέχουν τα ονόματα ‘giannis’
‘eleni’ ‘giorgos’ ?
• egrep ‘giannis|eleni|giorgos’ file1

• Αν θέλω η αναζήτηση να μην είναι ευαίσθητη σε κεφαλαία/μικρά γράμματα, πώς


θα τροποποιήσω την εντολή?
• egrep -i ‘giannis|eleni|giorgos’ file1

• Τι θα έκανα αν ήθελα να εκτελέσω το ίδιο πράγμα με την grep –f ?


• Θα έπρεπε να γράψω τα τρία ονόματα σε ένα άλλο αρχείο (3 γραμμές) π.χ. file2
και μετά εκτελώ:
• grep –f file2 file1
file1

eleni larisa file2


maria larisa
giannis
giorgos larisa
eleni
giannis athina
giorgos
anna xanthi
Giorgos volos
Egrep: Αναζήτηση πιο γενικών μοτίβων με regular
expressions
Πολλές φορές δεν αναζητούμε μια συγκεκριμένη λέξη ή σειρά χαρακτήρων, αλλά
ένα πιο γενικό μοτίβο χαρακτήρων.

Π.χ. Μπορεί να αναζητάμε:


• Κάποιους χαρακτήρες που βρίσκονται στην αρχή μιας σειράς.
• Κάποιους χαρακτήρες που βρίσκονται στο τέλος μιας σειράς.
• Κάποιες λέξεις που σε μια συγκεκριμένη θέση τους μπορεί να υπάρχουν
εναλλακτικά μια σειρά από κάποιους χαρακτήρες/νούμερα/σύμβολα.

Για αυτό το λόγο κάνουμε χρήση των regular expressions.

Egrep: μοτίβα που βρίσκονται στην αρχή μιας σειράς

Για να δηλώσουμε ότι το συγκεκριμένο μοτίβο πρέπει να βρίσκεται στην αρχή μιας
σειράς χρησιμοποιούμε το σύμβολο ^ πριν το μοτίβο.

Η παρακάτω εντολή βρίσκει γραμμές όπου η λέξη ‘eleni’ βρίσκεται μόνο στην αρχή
της γραμμής

egrep ‘^eleni’ file1

file1 terminal

eleni larisa
giannis athina eleni larisa
anna xanthi
Giorgos eleni
Egrep: μοτίβα που βρίσκονται στο τέλος μιας σειράς

Για να δηλώσουμε ότι το συγκεκριμένο μοτίβο πρέπει να βρίσκεται στο τέλος μιας
σειράς χρησιμοποιούμε το σύμβολο $ μετά το μοτίβο.

Η παρακάτω εντολή βρίσκει γραμμές όπου η λέξη ‘eleni’ βρίσκεται μόνο στο τέλος
της γραμμής

egrep ‘eleni$’ file1

file1 terminal

eleni larisa
giannis athina Giorgos eleni
anna xanthi
Giorgos eleni

Με ποιά εντολή θα βρούμε γραμμές που στην αρχή τους έχουν τη λέξη ‘eleni’ ή
στο τέλος έχουν τη λέξη ‘athina’ ?

Egrep: μοτίβα που βρίσκονται στο τέλος μιας σειράς

Με ποιά εντολή θα βρούμε γραμμές που στην αρχή τους έχουν τη λέξη ‘eleni’ ή
στο τέλος έχουν τη λέξη ‘athina’ ?

egrep ‘^eleni|athina$’ file1


Egrep: λέξεις που σε μια συγκεκριμένη θέση τους μπορεί
να υπάρχουν εναλλακτικά μια σειρά από κάποιους
χαρακτήρες/νούμερα/σύμβολα.

Για να δηλώσουμε μια σειρά από εναλλακτικούς χαρακτήρες/νούμερα σε μια


συγκεκριμένη θέση του μοτίβου χρησιμοποιούμε:
[a-z] για γράμματα από το a ως το z.
[1-9] για νούμερα από το 1 έως και το 9.
[ab89] σημαίνει ότι στη συγκεκριμένη θέση μπορεί να βρίσκεται οποιοσδήποτε από
τους χαρακτήρες/νούμερα (a, b, 8, 9) που συναντάμε μέσα στις αγκύλες.
[^ab89] το ^ μέσα στην αγκύλη, στην αρχή της σημαίνει ότι στη συγκεκριμένη θέση
μπορεί να υπάρχει οποιοσδήποτε χαρακτήρας εκτός από αυτούς που συναντάμε
μέσα στην αγκύλη.

Egrep: λέξεις που σε μια συγκεκριμένη θέση τους μπορεί


να υπάρχουν εναλλακτικά μια σειρά από κάποιους
χαρακτήρες/νούμερα/σύμβολα.
Για να δηλώσουμε μια σειρά από εναλλακτικούς χαρακτήρες/νούμερα σε μια
συγκεκριμένη θέση του μοτίβου χρησιμοποιούμε:
[a-z] για γράμματα από το a ως το z.
[A-Z] για κεφαλαία γράμματα από το a ως το z.

Θέλω να εντοπίσω τις γραμμές που ο κωδικός (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 θέλουμε να επαναλαμβάνεται περισσότερες από μία
φορές. Για να δηλώσουμε πόσες φορές θέλουμε να επαναλαμβάνεται, χρησιμοποιούμε:
{Χ}, αμέσως μετά από το υπο-μοτίβο, όπου Χ το νούμερο/φορές που θέλουμε να
επαναλαμβάνεται.
{Χ,Υ}, αμέσως μετά από το υπο-μοτίβο, όπου Χ& Υ το νούμερο/φορές που θέλουμε να
επαναλαμβάνεται από Χ έως Υ φορές.

? αμέσως μετά από το υπο-μοτίβο, για επανάληψη 0-1 φορές


* αμέσως μετά από το υπο-μοτίβο, για επανάληψη 0 ή περισσότερες φορές
+ αμέσως μετά από το υπο-μοτίβο, για επανάληψη 1 ή περισσότερες φορές

Το tab δηλώνεται με [^I]

Το κενό δηλώνεται με [[:space:]]

To οποιδήποτε γράμμα ή αριθμός δηλώνεται με \w


Το \w είναι το ίδιο με [A-Za-z0-9]

Το οποιοδήποτε σύμβολο δηλώνεται με την τελεία .

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).

• Στην 1η στήλη αναγράφεται το όνομα του μεταγραφικού παράγοντα


• Στην 2η στήλη αναγράφεται το όνομα του γονιδίου στο οποίο συνδέεται ο μεταγραφικός
παράγοντας.
• Στην 3η στήλη αναγράφεται το είδος της ρύθμισης, δηλαδή αν η σύνδεση του μεταγραφικού
παράγονται προάγει ή καταστέλει την έκφραση του γονιδίου
• Στην 4η στήλη αναγράφεται ο ιστός στον οποίο παρατηρήθηκε αυτή η ρυθμιστική
αλληλεπίδραση.

• Είναι δυνατόν μια ρυθμιστική αλληλεπίδραση να έχει εντοπιστεί σε περισσότερους από


έναν ιστούς.

TF_name target_name regulation_type tissue


Gene_1 Gene_2 activate liver
Gene_1 Gene_2 activate brain
Gene_1 Gene_3 activate muscle
Gene_3 Gene_4 suppress muscle
Gene_1 Gene_4 activate liver
Συνδυαστική Άσκηση
Βρείτε στο αρχείο [Link]:
• Πόσοι και ποιοί μεταγραφικοί παράγοντες υπάρχουν.
• Πόσα και ποιά γονίδια στόχοι ρυθμίζονται από μεταγραφικούς παράγοντες.
• Για πόσους και ποιούς ιστούς υπάρχουν δεδομένα.
• Πόσα και ποιά γονίδια ρυθμίζει ο μεταγραφικός παράγοντας Gene_1.
• Πόσες αλληλεπιδράσεις έχουν βρεθεί για το συκώτι (liver).
• Πόσοι και ποιοί μεταγραφικοί παράγοντες είναι προαγωγείς έκφρασης.
• Πόσοι και ποιοί μεταγραφικοί παράγοντες αναστέλουν την έκφραση.
• Πόσοι και ποιοί μεταγραφικοί παράγοντες έχουν βρεθεί και ως γονίδια
στόχοι.

TF_name target_name regulation_type tissue


Gene_1 Gene_2 activate liver
Gene_1 Gene_2 activate brain
Gene_1 Gene_3 activate muscle
Gene_3 Gene_4 suppress muscle
Gene_1 Gene_4 activate liver
Gene_5 Gene_1 activate liver

Εισαγωγή στην Πληροφορική


και στην διαχείριση
μεγάλου όγκου δεδομένων
Εισαγωγή στο Linux/Unix

Χειρισμός κειμένου
tr: αντικατάσταση χαρακτήρων
Με την εντολή tr (που σημαίνει translate ή transliterate) μπορούμε να αντικαταστήσουμε ένα σετ
χαρακτήρων με ένα άλλο σετ αντίστοιχων χαρακτήρων.
Επίσης με αυτή την εντολή μπορούμε να διαγράψουμε μία ακολουθία χαρακτήρων (string),
χρησιμοποιώντας την παράμετρο –d.

Π.χ. Με την παρακάτω εντολή παίρνουμε τα δεδομένα από το αρχείο file1 και αντικαθιστούμε το
γράμμα a με το γράμμα Α, το b με το B και σώζουμε το αποτέλεσμα στο αρχείο file2.

tr “ab” “AB” <file1> file2

Για να αντικαταστήσουμε όλα τα μικρά με τα αντίστοιχα κεφαλαία τους γράμματα εκτελούμε:

tr “a-z” “A-Z” <file1> file2

Για να διαγράψουμε τους χαρακτήρες m,o,u,s,e από το αρχείο file1 εκτελούμε:

tr –d “mouse“ <file1

Η παραπάνω εντολή θα διαγράψει οποιονδήποτε από τους 5 χαρακτήρες βρει και όχι μόνο την
λέξη mouse

tr: αντικατάσταση χαρακτήρων


Για την αντικατάσταση/διαγραφή κάποιων ειδικών χαρακτήρων χρειάζεται να
προσθέσουμε το backslash \ πριν από τον χαρακτήρα.
Π.χ. Για να διαγράψουμε τους χαρακτήρες !,@,# από το αρχείο file1 εκτελούμε:
tr –d “\!\@\#” <file1

Κάποιοι άλλοι ειδικοί χαρακτήρες όπως το newline, carriage return, tab


συμβολίζονται με \n, \r, \t αντίστοιχα.
Κωδικοποίηση ASCII

Στους υπολογιστές, όλα αποθηκεύονται ως νούμερα.


Σε ένα σύστημα που το κάθε byte χρησιμοποιεί 8-bits, μπορούμε να έχουμε
256 διαφορετικά bytes, που το καθένα να κωδικοποιεί ένα διαφορετικό control-
character/σύμβολο/αριθμό/γράμμα.

Το ASCII είναι ένα τέτοιο σύστημα κωδικοποίησης χαρακτήρων.


Στο σύστημα αυτό, τα δεκαδικά νούμερα από το 0-31 χρησιμοποιούνται για
control characters. Τα δεκαδικά νούμερα 32 – 127 χρησιμοποιούνται για
ειδικούς χαρακτήρες, νούμερα, λατινικά γράμματα . Το σύνολο αυτών των
χαρακτήρων μπορεί να κωδικοποιηθεί σε 7-bits.
Οι υπολογιστές παλιά χρησιμοποιούσαν bytes των 8-bits. Άρα, 1 byte είναι
αρκετό για να κωδικοποιήσει όλους τους ASCII χαρακτήρες. Επιπλέον,
περισσεύαν και αρκετά bytes. Όχι όμως αρκετά για να κωδικοποιηθούν όλα τα
σύμβολα/γράμματα όλων των γλωσσών που υπάρχουν.

Unicode standard 7.0


Κωδοποίηση ειδικών χαρακτήρων, γραμμάτων,
αριθμών, συμβόλων (π.χ. Μαθηματικών).

Το Unicode 7 κωδικοποιεί συνολικά 112956


διαφορετικούς χαρακτήρες.

[Link]

[Link]

Η αρίθμηση εμφανίζεται στο 16δικό σύστημα.

0000 - 001F: C0 controls.


0020 - 002F: ASCII χαρακτήρες για σύμβολα και
τονισμό.
0030 – 0039: ASCII ψηφία.
Κτλ.

Π.χ. Το αγγλικό γράμμα Α συμβολίζεται με:


U+0041
^M: Carriage return στο τέλος μιας γραμμής
Στο Unix/Linux, σε ένα text file, το τέλος μιας γραμμής συμβολίζεται με το new line
character, δηλαδή το \n ή LF (Line Feed) που αντιστοιχεί στον 10ο στη σειρά
χαρακτήρα του πίνακα ASCII.
Στα Windows όμως, το τέλος μια γραμμής συμβολίζεται με δύο διαδοχικούς
χαρακτήρες, το carriage return character, δηλαδή το \r ή CR που αντιστοιχεί στον
13ο στη σειρά χαρακτήρα του πίνακα ASCII και μετά το new line character.
Στα Macintosh το text file μπορεί να έχει στο τέλος κάθε γραμμής new line character
ή carriage return.

Τα παραπάνω έχουν ως συνέπεια, όταν ανοίγουμε σε έναν 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

Αν θέλουμε με το grep να βρούμε το μοτίβο tissue στο τέλος της γραμμής, ο


χαρακτήρας ^Μ δημιουργεί πρόβλημα. Αυτούς τους χαρακτήρες πρέπει να τους
απαλείψουμε με μια από τις παραπάνω εντολές.

sed: stream editor - Εισαγωγή


Το sed είναι ένα πολύ ισχυρό πρόγραμμα/εργαλείο του Unix & Linux που μας
επιτρέπει να χειριστούμε ποικιλοτρόπως το περιεχόμενο αρχείων. Εδώ θα
αναφερθούμε σε κάποιες από τις πιο κοινές εφαρμογές του.
Το sed μπορεί να αναγνωρίσει μοτίβα χαρακτήρων (regular expressions) όπως
και η εντολή egrep ή να εκτελέσει μια πράξη σε συγκεκριμένες γραμμές ενός
αρχείου.
Π.χ.:
• Μπορεί να αντικαταστήσει μια λέξη ή ένα μοτίβο με ένα άλλο, οποτεδήποτε
το συναντά, ή εντός ενός συγκεκριμένου εύρους γραμμών.
• Μπορεί να εκτυπώσει ή να διαγράψει συγκεκριμένες γραμμές ενός αρχείου,
αρκεί να ορίσουμε το εύρος τιμών των γραμμών, ή το μοτίβο που πρέπει να
συναντάται στις προς εκτύπωση/διαγραφή γραμμές.
• Μπορεί να μας πει σε ποιές γραμμές συναντάται ένα συγκεκριμένο μοτίβο
χαρακτήρων.

Οι βασικές εντολές εντός sed, όπως substitute, transliterate, print, delete


συμβολίζονται με τα γράμματα s, y, p, d.
sed: stream editor – Παράδειγμα 1
Κατά σύμβαση, το 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
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

sed: stream editor – Παράδειγμα 1

Θέλουμε να εκτυπώσουμε τις γραμμές 6 έως το τέλος του αρχείου file1 στο
terminal. Εκτελούμε:
sed -n ‘6,$ p’ file1

Το $ σημαίνει έως το τέλος.


sed: stream editor – Παράδειγμα 2
Θέλουμε να πάρουμε τις γραμμές του αρχείου file1 και μετά να διαγράψουμε τις
γραμμές 6 έως το τέλος και το υπόλοιπο να εμφανιστεί στο terminal. Εκτελούμε:
sed ‘6,$ d’ file1

Για διαγραφή δεν χρειάζεται η παράμετρος -n.


Με την παραπάνω εντολή ΔΕΝ τροποποιείται το file1, αλλά τα περιεχόμενα που
φορτώθηκαν στην εντολή.

sed: stream editor – Παράδειγμα 3


Θέλουμε να πάρουμε το περιεχόμενο του file1 και να αντικαταστήσουμε την λέξη
word1 με την λέξη word2 σε όλες τις γραμμές και στη συνέχεια το τροποποιημένο
περιεχόμενο να εμφανιστεί στο terminal. Εκτελούμε:
sed ‘s/word1/word2/’ file1

Η αντικατάσταση γίνεται με την εντολή substitute που συμβολίζεται με το s.


Τα 3 / είναι οι διαχωριστές μέσα στους οποίους τοποθετούνται τα 2 μοτίβα προς
τροποποίηση, πρώτα το μοτίβο στόχος και μετά το τελικό μοτίβο.
Με την παραπάνω εντολή ΔΕΝ τροποποιείται το file1, αλλά τα περιεχόμενα που
φορτώθηκαν στην εντολή και μετά την τροποποίηση εμφανίζονται στο terminal.
Αν θέλουμε να εμφανιστούν μόνο οι γραμμές που υπέστησαν τροποποίηση,
χρησιμοποιούμε τα –n και p όπως παρακάτω:
sed -n ‘s/word1/word2/ p’ file1

Αν το μοτίβο word1 εμφανίζεται περισσότερες από μία φορές σε μια γραμμή, η


παραπάνω εντολή θα τροποποιήσει μόνο την πρώτη εμφάνιση του μοτίβου. Αν
θέλουμε να τροποποιηθούν όλες οι εμφανίσεις του μοτίβου, πρέπει να
χρησιμοποιήσουμε το g που σημαίνει global, όπως παρακάτω:
sed -n ‘s/word1/word2/g p’ file1

Αν το μοτίβο word1 εμφανίζεται περισσότερες από μία φορές σε μια γραμμή και
θέλω να τροποποιήσω μόνο την δεύτερη εμφάνιση του μοτίβου, εκτελώ:
sed -n ‘s/word1/word2/2 p’ file1
sed: stream editor – Παράδειγμα 4 =
Θέλουμε να εκτυπώσουμε τα νούμερα των γραμμών στις οποίες εμφανίζεται το
μοτίβο word1, στο αρχείο file1. Εκτελούμε:
sed -n ‘/word1/ =’ file1

Το = το χρησιμοποιούμε για να εκτυπωθεί ο αριθμός της γραμμής στην οποία


βρέθηκε το μοτίβο word1. Επίσης, δεν χρησιμοποιήθηκε το s γιατί δεν
επιθυμούμε να κάνουμε αντικατάσταση.

Παρόμοια εντολή είναι το:


grep –n “word1” file1

Εισαγωγή στην Πληροφορική


και στην διαχείριση
μεγάλου όγκου δεδομένων
Awk

Βασική σύνταξη του awk


awk ‘{ΕΝΤΟΛH1;ΕΝΤΟΛΗ2}’ INPUT_FILE > OUTPUT_FILE

• Οι εντολές χωρίζονται η μία από την άλλη με το ;


• Μέσα στις αγκύλες περιέχονται οι εντολές που πρέπει να εκτελεστούν για
κάθε φορά που το awk παίρνει μια γραμμή από ένα file που ορίζουμε εμείς.

• Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο terminal, αν το


input_test έχει 4 γραμμές, με τα νούμερα 1-4;
awk '{print "awk just took a line from input file called input_test"}' input_test

• Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο terminal;


awk '{print "awk just took a line from input file called input_test"; print "this is the
second print command for the same input line"}' input_test
Βασική σύνταξη του awk
• Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο terminal, αν το
input_test έχει 4 γραμμές, με τα νούμερα 1-4;
awk '{print "awk just took a line from input file called input_test"}' input_test

• awk just took a line from input file called input_test


• awk just took a line from input file called input_test
• awk just took a line from input file called input_test
• awk just took a line from input file called input_test

• Δεν του λέμε πουθενά να εκτυπώσει περιεχόμενα από τις 4 γραμμές που
πήρε από το input_test!

Βασική σύνταξη του awk

• Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο terminal;


awk '{print "awk just took a line from input file called input_test"; print "this
is the second print command for the same input line"}' input_test

awk just took a line from input file called input_test


this is the second print command for the same input line
awk just took a line from input file called input_test
this is the second print command for the same input line
awk just took a line from input file called input_test
this is the second print command for the same input line
awk just took a line from input file called input_test
this is the second print command for the same input line
Βασική σύνταξη
• Αν θέλουμε το awk να εκτελέσει κάποιες εντολές πριν αρχίσει να παίρνει
γραμμές από κάποιο file, τότε χρησιμοποιούμε το BEGIN και μέσα στις
αγκύλες που ακολουθούν βάζουμε τις εντολές αυτές.
• Αντίστοιχα, αν θέλουμε το awk να κάνει κάτι μετά την τελευταία γραμμή
από κάποιο file, τότε χρησιμοποιούμε το END.

• Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο 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"}' 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

this is the beginning


awk just took a line from input file called input_test
awk just took a line from input file called input_test
awk just took a line from input file called input_test
awk just took a line from input file called input_test
this is the end
Βασική σύνταξη

• Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο


terminal, αν το input_test έχει 4 γραμμές, με τα νούμερα 1-4;
awk 'BEGIN {print "this is the beginning"}' input_test

this is the beginning

Βασική σύνταξη
Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο 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

Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο 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
Βασική σύνταξη
Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο 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

this is the beginning


awk just took a line from input file called input_test
awk just took a line from input file called input_test
awk just took a line from input file called input_test
awk just took a line from input file called input_test
is this the end?
no, this is the end

Βασική σύνταξη
Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο 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

this is the beginning


awk just took a line from input file called input_test
content of this line is $1
awk just took a line from input file called input_test
content of this line is $1
awk just took a line from input file called input_test
content of this line is $1
awk just took a line from input file called input_test
content of this line is $1
is this the end?
no, this is the end
Βασική σύνταξη
Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί στο 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

this is the beginning


awk just took a line from input file called input_test
content of this line is 1
awk just took a line from input file called input_test
content of this line is 2
awk just took a line from input file called input_test
content of this line is 3
awk just took a line from input file called input_test
content of this line is 4
is this the end?
no, this is the end

Βασική σύνταξη
Πού υπάρχει λάθος στην παρακάτω εντολή;
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}'

Αν θέλω να πολλαπλασιάσω την τιμή του Χ επί 2;


X=X*2;
ή
X*=2;
Π.χ. Στην παρακάτω εντολή, τι περιμένετε ότι θα εκτυπωθεί;
awk 'BEGIN {x=2; x*=3; print x}'

Αν σε μια γραμμή εντολής έχουμε ένα μείγμα από πράξεις


πρόσθεσης/αφαίρεσης και πολλαπλασιασμού/διαίρεσης, τότε ή σειρά με
την οποία γίνονται οι πράξεις ακολουθούν το αλγεβραϊκό πρότυπο.
Π.χ. Στην παρακάτω γραμμή, τι περιμένετε ότι θα εκτυπωθεί;
awk 'BEGIN {x=1; y=x+2*3; print y}'

Πράξεις
int(x): μετατρέπει τον αριθμό x σε ακέραιο, χωρίς στρογγυλοποίηση.
Τι θα εκτυπωθεί από την παρακάτω εντολή;
awk 'BEGIN {x=1.8; print int(x)}'
Η τιμή 1.

Αν θέλουμε να κάνουμε στρογγυλοποίηση, προσθέτουμε 0.5 στην τιμή


Τι θα εκτυπωθεί από την παρακάτω εντολή;
awk 'BEGIN {x=1.8; print int(x+0.5)}'

log(x): δίνει τον φυσικό λογάριθμο του x

exp: e x -> exp(x)

sqrt(x): ρίζα του x


Χειρισμός συμβολοσειρών
Αποθήκευση συμβολοσειράς σε μεταβλητή:
x=“This is a string of characters”;

Μήκος συμβολοσειράς: length(X);


Τι θα εκτυπωθεί στην παρακάτω γραμμή;
awk 'BEGIN {x="abc"; y=length(x); print y}'
H παρακάτω εντολή δίνει το ίδιο αποτέλεσμα με την παρακάτω:
awk 'BEGIN {x="abc"; print length(x)}'

Θέση μιας σειράς χαρακτήρων σε μια συμβολοσειρά: index(string, search);


Τι θα εκτυπωθεί στην παρακάτω γραμμή;
awk 'BEGIN {x="abc"; print index(x, "b")}'

Τι θα εκτυπωθεί στην παρακάτω γραμμή;


awk 'BEGIN {x="abcbba"; print index(x, "b")}’
Μόνο η θέση που εμφανίζεται το μοτίβο αναζήτησης για πρώτη φορά.

Χειρισμός συμβολοσειρών
Αποκοπή περιοχής μιας συμβολοσειράς (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}’

Με ποιά άλλη εντολή του Linux μπορούμε να κάνουμε το ίδιο;


Π.χ.:
cut –c2-3 file1
Χειρισμός συμβολοσειρών
Επικόλληση 2 ή περισσότερων συμβολοσειρών:

x=“first string”;
y=“second string”;
z=x y;
To z τώρα περιέχει την συμβολοσειρά: “first stringsecond string”

Τι θα εκτυπωθεί από την παρακάτω γραμμή;


awk 'BEGIN {x="abc";y="def"; z="ghi"; a=x y z; print a}'

Τι θα εκτυπωθεί από την παρακάτω γραμμή;


awk 'BEGIN {x="abc"; y="def"; a=x ":" y; print a}'

Συστοιχίες – Πίνακες (arrays)


• Μεταβλητές και πίνακες στο ίδιο πρόγραμμα δεν μπορούν να έχουν
το ίδιο όνομα.
• Το awk προσφέρει τη δυνατότητα να αποθηκεύσουμε δεδομένα σε
συστοιχίες-πίνακες.
• Δεν χρειάζεται να ορίσουμε στην αρχή το μέγεθος του πίνακα, όπως
σε άλλες γλώσσες προγραμματισμού.
• Κάθε στοιχείο του πίνακα μπορούμε να το ανακτήσουμε
χρησιμοποιώντας έναν μοναδικό δείκτη που του αντιστοιχεί.
• Ως δείκτης μπορεί να λειτουργήσει είτε ένας ακέραιος αριθμός είτε
μια σειρά χαρακτήρων (π.χ. μια λέξη).

1 2 3 4 Δείκτες
A 9 @ D5 Στοιχεία
Συστοιχίες – Πίνακες (arrays)
Ο πίνακας test_array έχει 4 στοιχεία, όπως φαίνεται παρακάτω.
Πρόσβαση στα στοιχεία του πίνακα test_array:
• 1ο στοιχείο: test_array[1]
• 2ο στοιχείο: test_array[2]
Κτλ...

Τι θα εκτυπωθεί με την παρακάτω γραμμή;


awk 'BEGIN {test_array[1]="A"; test_array[2]=9; test_array[3]="@";
test_array[4]="D5";print test_array[3]}'

1 2 3 4 Δείκτες
A 9 @ D5 Στοιχεία

Χειρισμός συμβολοσειρών - split


To split χρησιμοποιείται για τεμαχισμό συμβολοσειράς (string) με βάση
κάποιο πρότυπο (separator) και αποθήκευση των τεμαχίων σε συστοιχία
(array). Επίσης, το split επιστρέφει σε πόσα κομμάτια τεμαχίστηκε η
συμβολοσειρά:
n=split(string, array, separator)

Τι θα εκτυπωθεί στο παρακάτω παράδειγμα;


awk 'BEGIN {
test_string="[Link]";
test_separator=":";
number_items=split(test_string, test_array, test_separator);
print number_items;
print test_array[1];
print test_array[2];
print test_array[3];
print test_array[4];
}'
Χειρισμός συμβολοσειρών - split
n=split(string, array, separator)

Τι θα αποθηκευθεί στο test_array του παρακάτω παραδείγματος;


Πόσα νουκλεοτίδια έχει η παρακάτω ακολουθία;
awk 'BEGIN {
test_string="AGCATGCTGC";
test_separator="";
number_items=split(test_string, test_array, test_separator);
print number_items;
}'

Άσκηση 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η. Επίσης,
ορίστε τις κατάλληλες μεταβλητές για τους αριθμούς της πρώτης
στήλης και τις κατάλληλες μεταβλητές για τους αριθμούς της δεύτερης
στήλης.

Συνολικά, πόσες μεταβλητές θα χρειαστείτε;


Άσκηση 2 - Λύση
awk 'BEGIN {counter=0;sum1=0; sum2=0}
{sum1=sum1+$1; sum2=sum2+$2; counter++}
END {print sum1, sum2, sum1/counter, sum2/counter, counter}’ file1

• NR number of records (αριθμός γραμμών)


• NF number of fields (αριθμός πεδίων σε μια
γραμμή)
• FS field separator
Εισαγωγή στην Πληροφορική
και στην διαχείριση
μεγάλου όγκου δεδομένων

Εισαγωγή στο awk


Awk - if

Το 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

genes regulations transcription

Βρισκόμαστε στο 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 και μεταφέρετε εκεί όλα τα
προηγούμενα αρχεία και μετά διαγράψτε τους άδειους υποκαταλόγους.

1) Στο αρχείο [Link] έχουμε πληροφορίες για όλα τα ανθρώπινα γονίδια.


• Πόσα είναι τα ανθρώπινα γονίδια;
• Πόσα είναι τα ανθρώπινα χρωμοσώματα;
• Ποιό χρωμόσωμα έχει τα περισσότερα γονίδια;

1) Για πόσα ανθρώπινα γονίδια γνωρίζουμε ότι είναι μεταγραφικοί παράγοντες;


2) Πόσοι μεταγραφικοί παράγοντες
• ενεργοποιούν τη μεταγραφή γονιδίων στόχων;
• καταστέλλουν τη μεταγραφή γονιδίων στόχων;
3) Ποιός μεταγραφικός παράγοντας ρυθμίζει τα περισσότερα γονίδια;
4) Ποιός μεταγραφικός παράγοντας καταστέλλει τα περισσότερα γονίδια;

Ασκήσεις
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
…… ……. ……. …… …….

gene_identifier Cancer Heart Diabetes


ENSG0001 2 1 1
ENSG0002 0.8 3 4.5
ENSG0003 1.2 0.1 1.5
…… ……. ……. …..
Ασκήσεις

8) Ποιά γονίδια
• εμφανίζονται να υπερ-εκφράζονται στον καρκίνο (έκφραση > 2);
• Ποιά είναι τα 10 γονίδια με την πιο έντονη υπερ-έκφραση στον καρκίνο; Σε ποιά
χρωμοσώματα εντοπίζονται;

9) Ποιά γονίδια εμφανίζονται να υπο-εκφράζονται στον καρκίνο (έκφραση < 0.5);

10) Ποιά γονίδια εμφανίζονται να μην έχουν σημαντική μεταβολή της έκφρασής τους
(υπερ-έκφραση ή υπο-έκφραση) στον καρκίνο (0.5 < μεταβολή έκφρασης < 2);

11) Ποιά γονίδια εμφανίζονται να υπερ-εκφράζονται και στον καρκίνο και στον διαβήτη;

Λύσεις

1) Δημιουργείστε κάτω από το Desktop τον υποκατάλογο data και μεταφέρετε εκεί όλα τα
προηγούμενα αρχεία και μετά διαγράψτε τους άδειους υποκαταλόγους.

Βρισκόμαστε στο Desktop

mkdir data
mv ./genes/[Link] ./data/
mv ./transcription/transcription* ./data/
mv ./regulations/[Link] ./data/

rm –r ./genes/
rm –r ./transcription/
rm –r ./regulations/

Στη συνέχεια μετακινούμαστε μέσα στο data

cd ./data
Λύσεις
2) Στο αρχείο [Link] έχουμε πληροφορίες για όλα τα ανθρώπινα γονίδια.
• Πόσα είναι τα ανθρώπινα γονίδια;
• Πόσα είναι τα ανθρώπινα χρωμοσώματα;
• Ποιό χρωμόσωμα έχει τα περισσότερα γονίδια;

Βρισκόμαστε στοn κατάλογο data, όπου βρίσκονται πλέον όλα τα αρχεία που μας ενδιαφέρουν.

Πόσα είναι τα ανθρώπινα γονίδια;

sort [Link] | uniq | wc –l

Πόσα είναι τα ανθρώπινα χρωμοσώματα;

awk ‘{print $3}’ [Link] > chroms


sort chroms | uniq –c | sort –n > chroms_count
wc –l chroms_count

Παραπάνω, χρησιμοποιήσαμε την εντολή sort –n για να κάνουμε sorting με βάση αριθμητικές
τιμές.
Ποιό χρωμόσωμα έχει τα περισσότερα γονίδια;

tail –n 1 chroms_count

Λύσεις
3) Για πόσα ανθρώπινα γονίδια γνωρίζουμε ότι είναι μεταγραφικοί παράγοντες;
awk ‘{print $1}’ [Link] > [Link]
sort [Link] | uniq | wc -l

4) Πόσοι μεταγραφικοί παράγοντες


• ενεργοποιούν τη μεταγραφή γονιδίων στόχων;

grep “activate” [Link] > [Link]


awk ‘{print $1}’ [Link] | sort | uniq | wc -l

Το ίδιο με τις παρακάτω εντολές:


awk ‘{if($3 == “activate”) print $1}’ [Link] | sort | uniq | wc –l

• καταστέλλουν τη μεταγραφή γονιδίων στόχων;

grep “suppress” [Link] > [Link]


awk ‘{print $1}’ [Link] | sort | uniq | wc –l

Το ίδιο με τις παρακάτω εντολές:


awk ‘{if($3 == “suppress”) print $1}’ [Link] | sort | uniq | wc -l
Λύσεις
5) Ποιός μεταγραφικός παράγοντας ρυθμίζει τα περισσότερα γονίδια;
awk ‘{print $1}’ [Link] > [Link]
sort [Link] | uniq –c | sort -n | tail –n 1

6) Ποιός μεταγραφικός παράγοντας καταστέλλει τα περισσότερα γονίδια;


grep “suppress” [Link] > [Link]
awk ‘{print $1}’ [Link] | sort | uniq –c | sort –n | tail –n 1

7) Ενώστε τα αρχεία [Link] & [Link] σε ένα αρχείο όπου σε


κάθε γραμμή να υπάρχουν οι πληροφορίες σχετικής μεταβολής της έκφρασης
ενός γονιδίου σε όλες τις συνθήκες που ελέγχθηκε. Θεωρούμε ότι οι μετρήσεις στο
καθένα από τα 2 αρχεία [Link] & [Link] γίνονται για το
σύνολο των ανθρώπινων γονιδίων, δεν είναι απαραίτητο όμως να είναι γραμμένα
με αλφαβητική σειρά.

sort [Link] > transcription1_sorted.txt


sort [Link] > transcription2_sorted.txt
join transcription1_sorted.txt transcription2_sorted.txt > transcription3_joined.txt

Λύσεις
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

grep –f top10_list [Link] > cancer_up10_chroms.txt


awk ‘{print $3}’ cancer_up_chroms.txt | sort | uniq

9) Ποιά γονίδια εμφανίζονται να υπο-εκφράζονται στον καρκίνο (έκφραση < 0.5);


Λύσεις
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
…… ……. ……. …..

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

Εντολές Διαχείρισης
Εγκατάσταση προγραμμάτων

Advanced Packaging Tool:


Apt
Το Apt αυτοματοποιεί τη διαδικασία απόκτησης, εγκατάστασης, επικαιροποίησης και
απεγκατάστασης πακέτων προγραμμάτων και βιβλιοθηκών για συστήματα Linux,
που είναι διαθέσιμα από το Debian project.
Επίσης αντιλαμβάνεται τις εξαρτήσεις ενός πακέτου προγραμμάτων/βιβλιοθηκών
από άλλα πακέτα. Π.χ., για να εγκατασταθεί το πακέτο2 μπορεί να απαιτείται
προηγούμενη εγκατάσταση του πακέτου1.

Η εγκατάσταση γίνεται με την εντολή (στο τερματικό):


sudo apt-get install packet
Η απεγκατάσταση γίνεται με την εντολή (στο τερματικό):
sudo apt-get remove packet

Όπου packet το όνομα του συγκεκριμένου πακέτου που θέλουμε να εγκαταστήσουμε,


ενώ χρησιμοποιούμε το sudo για να μπορέσουμε να κάνουμε την εγκατάσταση του
πακέτου με δικαιώματα administrator.

Περισσότερες πληροφορίες στο:


[Link]
tar: πακετάρισμα
αρχείων/καταλόγων
Με την εντολή tar μπορούμε να πακετάρουμε πολλά αρχεία και καταλόγους μέσα σε ένα αρχείο
που συνήθως του δίνουμε την κατάληξη .tar. Άρα, η μεταφορά γίνεται πιο εύκολη.

Π.χ. για την δημιουργία του πακέτου [Link] που περιέχει μέσα του τρία αρχεία file1 file2 &
file3, χρησιμοποιούμε την εντολή:

tar –cvf [Link] file1 file2 file3

Για να ξεπακετάρουμε, εκτελούμε:

tar –xvf [Link]


• –c σημαίνει create archive
• –x σημαίνει extract from archive
• -v σημαίνει verbose, δηλαδή εμφανίζονται στο terminal τα αρχεία και κατάλογοι που
ξε/πακετάρονται.
• -f σημαίνει δημιουργία ή ξεπακετάρισμα του archive από το αρχείο που ορίζουμε.
• -z χρησιμοποιείται μόνο όταν πακετάρουμε (μαζί με το -c) και ταυτόχρονα θέλουμε να
συμπιέσουμε το πακέτο με το πρόγραμμα gzip.

gzip: συμπίεση
αρχείων
Με το πρόγραμμα gzip μπορούμε να συμπιέσουμε ένα αρχείο, όπως με το zip
στα windows. Άρα, η μεταφορά του συμπιεσμένου αρχείου μέσω διαδικτύου
γίνεται πιο εύκολη.

Π.χ. για την συμπίεση ενός αρχείου file1, χρησιμοποιούμε την εντολή:
gzip file1
Πλέον το file1 είναι συμπιεσμένο και εμφανίζεται ως [Link]
Η κατάληξη .gz σημαίνει ότι το αρχείο έχει συμπιεστεί με το πρόγραμμα gzip

Για να αποσυμπιέσουμε το αρχείο, εκτελούμε:


gunzip [Link]
Και πλεόν το αρχείο εμφανίζεται ως file1.

Μπορούμε να συμπιέσουμε και ένα .tar πακέτο αρχείων, οπότε αυτά θα


εμφανίζονται πλέον ως .[Link]
Τι είναι ο compiler
Στις γλώσσες προγραμματισμού (π.χ. C), ο κώδικας (source code) που γράφουμε είναι
κατανοητός από τους ανθρώπους, όχι όμως και από τον υπολογιστή. Επομένως, ο
κώδικας αυτός πρέπει να μεταγλωτιστεί σε γλώσσα μηχανής (machine code), την οποία
καταλαβαίνει ο συγκεκριμένος υπολογιστής και λειτουργικό σύστημα. Την δουλειά αυτή
την κάνει ο compiler.

Αν μεταγλωτίσουμε τον κώδικα για ένα συγκεκριμένο υπολογιστή και λειτουργικό


σύστημα, μπορεί να μην είναι δυνατόν να χρησιμοποιήσουμε αυτό τον μεταγλωτισμένο
κώδικα για ένα άλλο τύπο υπολογιστή ή άλλο λειτουργικό σύστημα. Επομένως, η
συνήθης πρακτική είναι να κάνουμε διαθέσιμο τον κώδικα (source code) και στη συνέχεια
ο καθένας να τον μεταγλωτίζει σε γλώσσα μηχανής (machine code) στον δικό του
υπολογιστή και λειτουργικό σύστημα, με τον κατάλληλο compiler.

Εγκατάσταση προγράμματος με το
configure & make
Συνήθως όταν κατευάζουμε ένα πρόγραμμα (από το δίκτυο) που θέλουμε να το
εγκαταστήσουμε στο σύστημα, αυτό είναι συμπιεσμένο στη μορφή: [Link]
Επομένως πρέπει πρώτα να το αποσυμπιέσουμε.
Στη συνέχεια, μέσα στον κατάλογο που δημιουργείται υπάρχει ένα αρχείο
README ή INSTALL που εξηγεί ποιά βήματα πρέπει να ακολουθήσουμε για να
εγκαταστήσουμε το πρόγραμμα.
Συνήθως πρέπει πρώτα να εκτελέσουμε το script που ονομάζεται configure με
την παρακάτω εντολή:
./configure
Μετά εκτελούμε την εντολή:
make
Και μετά εκτελούμε την εντολή:
make install
Τί κάνει το configure
Συνήθως, πρώτα εκτελούμε το script που ονομάζεται configure με την παρακάτω εντολή :
./configure

Το script αυτό παίρνει πληροφορίες για:


• κάποιες βασικές παραμέτρους του συγκεκριμένου λειτουργικού συστήματος που
έχουμε στον υπολογιστή μας,
• του λογαριασμού μας και
• επίσης κοιτάει αν είναι εγκατεστημένα κάποια άλλα πακέτα που μπορεί να
απαιτούνται.

Αν τα απαιτούμενα πακέτα δεν υπάρχουν στο σύστημα, το configure τερματίζει και μας
ενημερώνει για το τί λείπει.

Αν τα απαιτούμενα πακέτα υπάρχουν, τότε με βάση όλες τις παραπάνω πληροφορίες


που μάζεψε, αλλά και τις οδηγίες που υπάρχουν σε ένα αρχείο που ονομάζεται
[Link] ετοιμάζει ένα νέο αρχείο που ονομάζεται makefile. Αυτό το αρχείο που μόλις
δημιούργησε περιέχει τώρα τις πλήρεις οδηγίες για την δημιουργία του προγράμματος.

Εγκατάσταση προγράμματος με το make


Στη συνέχεια, η εντολή make χρησιμοποιείται για να δημιουργηθεί το εκτελέσιμο
πρόγραμμα από κάποια αρχεία που περιέχουν τον κώδικα. Η εντολή αυτή κοιτάει για
οδηγίες μέσα στο αρχείο που ονομάζεται makefile (αυτό το αρχείο βρίσκεται στον ίδιο
κατάλογο με τα αρχεία που θα δημιουργήσουν το πρόγραμμα).

Τέλος, ή εντολή make install κάνει εγκατάσταση του εκτελέσιμου προγράμματος που
δημιουργήθηκε από την προηγούμενη εντολή μέσα σε κάποιο άλλο κατάλογο του
συστήματος, π.χ. στο /usr/local/bin από όπου πλέον όλοι οι χρήστες του συστήματος θα
μπορούν να χρησιμοποιήσουν αυτό το πρόγραμμα. Επιπλέον, ο αρχικός κατάλογος μέσα
στον οποίο δημιουργήσαμε το πρόγραμμα με τις 3 παραπάνω εντολές δεν χρειάζεται
άλλο.

Για περισσότερες λεπτομέρειες δείτε:


[Link]
[Link]
find: Εύρεση αρχείων/καταλόγων
Με την εντολή find μπορούμε να ψάξουμε ένα κατάλογο και τους υποκαταλόγους του για
κάποιο/α αρχείο/α ή κατάλογο/ους. Στην εντολή πρέπει να ορίσουμε τον κατάλογο μέσα στον
οποίο θα ψάξουμε, τον τύπο της αναζήτησης (αρχείο ή κατάλογο), το όνομα που ψάχνουμε.

Με την παρακάτω εντολή αναζητούμε το αρχείο file1 στον κατάλογο Desktop (ή σε κάποιον από
τους υποκαταλόγους του) του χρήστη user1.

find /home/user1/Desktop –type f –name file1


Με την παράμετρο –type ορίζουμε αν αναζητούμε αρχείο (f) ή κατάλογο (d).
Με την παράμετρο –name ορίζουμε το όνομα του αρχείου/καταλόγου που αναζητούμε. Στην
αναζήτηση του ονόματος μπορούμε να χρησιμοποιήσουμε και wild cards. Π.χ. με την
παρακάτω εντολή αναζητούμε όλα τα pdf αρχεία που βρίσκονται στον κατάλογο Desktop (ή σε
κάποιον από τους υποκαταλόγους του) του χρήστη user1. Προσέξτε την χρήση του \ πριν το
wild card *.

find /home/user1/Desktop –type f –name \*.pdf

• Με ποιά εντολή θα αναζητούσαμε τον υποκατάλογο dir1 μέσα στον κατάλογο Desktop (ή σε
κάποιον από τους υποκαταλόγους του) του χρήστη user1;
• Με ποιά εντολή θα αναζητούσαμε το αρχείο file1 μέσα σε όλο το σύστημα;

Μία παρόμοια εντολή με τη find είναι και η locate, αλλά προϋποθέτει την προηγούμενη
δημιουργία ενός ευρετηρίου (index)

ssh: secure shell


Το ssh είναι ένα κρυπτογραφημένο πρωτόκολο για ασφαλή σύνδεση σε κάποιο λογαριασμό
ενός άλλου υπολογιστή. Αυτό προϋποθέτει ότι ο δικός μας υπολογιστής τρέχει ένα ssh-client
και ο υπολογιστής που θέλουμε να συνδεθούμε τρέχει ένα ssh-server. Η σύνδεση γίνεται μέσω
κάποιας θύρας που oνομάζεται port και έχει ένα νούμερο. Συνήθως, το port για ssh είναι το
νούμερο 22.
Επομένως, χρειάζεται να γνωρίζουμε το όνομα του λογαριασμού και το όνομα ή IP address του
υπολογιστή. Η σύνδεση γίνεται από το terminal με την εντολή ssh και επίσης μας ζητείται να
δώσουμε το password του λογαριασμού στον οποίο θέλουμε να συνδεθούμε.
Π.χ. Θέλουμε να συνδεθούμε στον υπολογιστή με IP address [Link], στον λογαριασμό
user1, που έχει password: Pswd1.
Εκτελούμε:

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):

scp file1 user1@[Link]:/home/user1/Desktop/dir1/


ή
scp file1 user1@[Link]:/home/user1/Desktop/dir1/file1
Στη συνέχεια θα μας ζητηθεί το password του χρήστη user1 στον άλλο υπολογιστή.

Έστω ότι στον άλλο υπολογιστή ([Link]), στο /home/user1/Desktop/dir2 βρίσκεται ένα
αρχείο file2.
Το αρχείο αυτό θέλουμε να το αντιγράψουμε στον δικό μας υπολογιστή, στο Desktop.
Ενώ βρισκόμαστε στο Desktop, εκτελούμε:

scp user1@[Link]:/home/user1/Desktop/dir2/file2 ./file2

wget: ανάκτηση αρχείων/ιστοσελίδων από


το διαδίκτυο
Στην εντολή wget δίνουμε ένα url ή μια λίστα με urls και ανακτούμε το αρχείο ή
την ιστοσελίδα από το διαδίκτυο.
Π.χ. Για να ανακτήσουμε το αρχείο [Link] από τον ιστότοπο
[Link] εκτελούμε:

wget [Link]

Αν θέλουμε να ανακτήσουμε μία λίστα από αρχεία/διευθύνεις, τα σώzουμε σε


ένα αρχείο (π.χ. download_list.txt) και εκτελούμε:
wget -i download_list.txt
split: σπάσιμο αρχείου σε μικρότερα

Με την εντολή split μπορούμε να σπάσουμε ένα μεγάλο αρχείο σε μικρότερα


αρχεία. Το αρχείο μπορούμε να το σπάσουμε είτε σε μικρότερα αρχεία με
συγκεκριμένο αριθμό γραμμών ή σε συγκεκριμένο μέγεθος (bytes) το καθένα.
Κατά συνθήκη, το spit σπάει ένα αρχείο σε μικρότερα των 1000 γραμμών το
καθένα.
Π.χ. Στην παρακάτω εντολή, το αρχείο file1, με 2700 γραμμές θα σπάσει σε
τρία αρχεία, xaa, xab, xac των 1000, 1000 και 700 γραμμών το καθένα
αντίστοιχα.
split file1

Η παρακάτω εντολή θα σπάσει το αρχείο file1 (με 2700 γραμμές) σε 3 αρχεία


seg-aa, seg-ab, seg-ac των 900 γραμμών το καθένα.
split –l 900 file seg-

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 περιμένει για
αυτό το χρονικό διάστημα.

Π.χ. Αν εκτελέσουμε τις παρακάτω 3 εντολές μαζί:


date; sleep 10; date

θα δούμε στο terminal μια ημερομηνία, μετά θα υπάρξει παύση για 10 δευτερόλεπτα
και μετά θα δούμε τη νέα ημερομηνία.
Το sleep είναι χρήσιμο όταν θέλουμε να εκτελεστούν στη σειρά κάποιες εντολές και
μεταξύ τους να μεσολαβεί συγκεκριμένο χρονικό διάστημα. Π.χ. Όταν με την εντολή
wget ανακτούμε δεδομένα από πολλά αρχεία από μια ιστοσελίδα και θέλουμε να
μεσολαβεί κάποιο χρονικό διάστημα μεταξύ των ανακτήσεων, για να μην
καταλάβουμε όλο το internet bandwindth της ιστοσελίδας. Σε ορισμένες περιπτώσεις
αλόγιστη χρήση του wget χωρίς sleep μπορεί να ερμηνευθεί και ως Denial of
Service (DoS) attack.
Επίσης, με την εντολή at μπορούμε να ζητήσουμε να εκτελεστεί μια εντολή, σειρά
εντολών ή πρόγραμμα σε μια συγκεκριμένη χρονική στιγμή.

alias: ψευδώνυμο

Με την εντολή alias μπορούμε να ορίσουμε ένα σύντομο ψευδώνυμο για μια
(συνήθως περίπλοκη) εντολή με πολλές παραμέτρους.
Π.χ. Αντί να εκτελούμε την εντολή ls –al μπορούμε να ορίσουμε ένα
ψευδώνυμο, το ll και να καλούμε αυτό. Φυσικά, για ομαλή λειτουργία του
συστήματος το ψευδώνυμο δεν πρέπει να έχει το ίδιο όνομα με κάποια άλλη
εντολή του συστήματος. Ο ορισμός του ψευδώνυμου γίνεται με την παρακάτω
εντολή, αλλά είναι προσωρινός, για όσο λειτουργεί το συγκεκριμένο κέλυφος.
alias ll = ‘ls –al’

Αν επιθυμούμε μόνιμο ορισμό ενός ψευδώνυμου, πρέπει να τροποποιήσουμε


το .bashrc αρχείο στον κατάλογο εκκίνησης.

Αν θέλουμε να δούμε όλα τα οριζόμενα ψευδώνυμα του κελύφους, εκτελούμε:


alias
1η Εργαστηριακή Άσκηση

Εισαγωγή στο Ubuntu Linux 12.04

Θ
Δομή αρχείων/καταλόγων στο Linux

/ root

home bin dev etc usr ... ...

Το σύστημα έχει δομή ιεραρχική. Ένας


κατάλογος μπορεί να έχει 1 ή
περισσότερους υπο-καταλόγους.
PC1 PC2 PC3 Όχι το αντίθετο.
Κάθε κατάλογος/αρχείο έχει μια
διεύθυνση. Η διεύθυνση αρχίζει από το
root και ακολουθούμε την κατάλληλη
πορεία μέχρι να καταλήξουμε εκεί που
θέλουμε.

dir1 dir2 dir1 dir2


Θ
Δομή αρχείων/καταλόγων στο Linux
/ root

home bin dev etc usr ... ...

Π.χ. ο κατάλογος home έχει διεύθυνση:


/home
Π.χ. ο κατάλογος PC3 έχει διεύθυνση:
/home/PC3
PC1 PC2 PC3 Π.χ. o κατάλογος dir1 που βρίσκεται
μέσα στο PC3 έχει διεύθυνση:
/home/PC3/dir1

Ο κατάλογος dir1 που βρίσκεται μέσα


στο PC1 και ο κατάλογος dir1 που
βρίσκεται μέσα στο PC3 είναι
dir1 dir2 dir1 dir2 διαφορετικοί και έχουν διευθύνσεις:
/home/PC1/dir1
/home/PC3/dir1

Θ
Δομή αρχείων/καταλόγων στο Linux
/ root

home bin dev etc usr ... ...

Οι κατάλογοι/αρχεία του κάθε χρήστη


PC1 PC2 PC3
βρίσκονται στο /home
Οι υπόλοιποι κατάλογοι ανήκουν στο
σύστημα

dir1 dir2 dir1 dir2


Θ
Home directory
/ root

home bin dev etc usr ... ...

Όταν κάνω loggin ως χρήστης PC1,


PC1 PC2 PC3
ξεκινάω από το home directory που είναι
το /home/PC1

Εάν έκανα loggin ως χρήστης PC3,


ξεκινάω από το home directory που είναι
το /home/PC3
dir1 dir2 dir1 dir2
Το home directory συμβολίζεται με το: ~

Θ
Δομή αρχείων/καταλόγων στο Linux
/ root

home bin dev etc usr ... ...

• Μέσα στο /home βρίσκονται οι λογαριασμοί των χρηστών


• Μέσα στο /bin βρίσκονται προγράμματα (συνήθως σε δυαδική μορφή - binary)
• Μέσα στο /sbin βρίσκονται προγράμματα (συνήθως σε δυαδική μορφή - binary) που
χρησιμοποιεί ο superuser
• Μέσα στο /tmp γράφονται παροδικά αρχεία που σβήνονται όταν κλείσει ο υπολογιστής.
• Μέσα στο /lib βρίσκονται βιβλιοθήκες που χρησιμοποιούνται από διάφορα προγράμματα.
• Μέσα στο /etc βρίσκονται configuration files του συστήματος
• Στο /mnt συνδέονται διάφορες εξωτερικές συσκευές, π.χ. Memory sticks, εξωτερικοί σκληροί
δίσκοι, cd-roms κτλ.
Θ

Βασικές εντολές

• Κατηγορίες εντολών για


– Πλοήγηση στο σύστημα
– Διαχείριση αρχείων και καταλόγων

Συνήθως τα ονόματα των εντολών είναι συντομογραφίες κάποιων


ρημάτων.
Π.χ. :
List -> ls
Change directory -> cd
Make directory -> mkdir
Copy -> cp
Remove -> rm
Move -> mv

Θ
Σύνταξη εντολών (i)

• Οι εντολές γράφονται στο τερματικό (terminal).

• Γράφουμε πρώτα το όνομα της εντολής που θέλουμε να εκτελέσουμε, στη


συνέχεια κάποιες παραμέτρους (αν χρειάζεται) και μετά (αν χρειάζεται) τα
ονόματα αρχείων ή καταλόγων με τα οποία θα δουλέψει η εντολή. Μεταξύ
όλων των παραπάνω μεσολαβούν κενά. Κατόπιν πατούμε ENTER για να
εκτελεστεί η εντολή. Σε μια εντολή μπορούμε να δώσουμε ταυτόχρονα
περισσότερες από μία ειδικές παραμέτρους.

• Στο παρακάτω παράδειγμα ζητάμε να εκτελεστεί η εντολή ls με τις δύο


παραμέτρους –l και –a.
• ls –l –a
• Το ίδιο μπορεί να γραφεί και ως:
• ls –al
Θ
Σύνταξη εντολών (ii)

• Αν γράψουμε μόνο το όνομα του αρχείου ή καταλόγου χωρίς την πλήρη


διεύθυνσή του, τότε η εντολή ψάχνει να το βρει (αρχείο ή κατάλογο) μέσα
στον ενεργό κατάλογο, δηλαδή εκεί που βρισκόμαστε.

• Μια εντολή μπορεί να δουλέψει και με αρχεία/καταλόγους που δεν


βρίσκονται στον ενεργό κατάλογο (δηλαδή εκεί που βρισκόμαστε εκείνη την
στιγμή), αρκεί να δώσουμε την κατάλληλη διεύθυνση, για να τα βρει η
εντολή.

• Τα αποτελέσματα μιας εντολής συνήθως εκτυπώνονται στο terminal, εκτός


και εάν τα στείλουμε σε κάποιο αρχείο. Με το σύμβολο > τα αποτελέσματα
γράφονται στο αρχείο που αναγράφεται δεξιά του >. Αν το αρχείο δεν
υπήρχε πριν, δημιουργείται. Αν υπήρχε, τα νέα αποτελέσματα αντικαθιστούν
το παλιό περιεχόμενο (overwrite). Με το >> τα νέα αποτελέσματα
προσθέτονται στο τέλος των παλιών περιεχομένων του αρχείου (append).

Θ
Σύνταξη εντολών (iii)
Στην ίδια γραμμή μπορώ να γράψω και δύο ή περισσότερες εντολές, που θα
εκτελεστούν η μία μετά το πέρας της άλλης. Για να γίνει αυτό πρέπει τις εντολές
να τις χωρίσω μεταξύ τους με το ;
Π.χ.: Εντολή1 ; Εντολή2 ; Εντολή3

Επίσης, τα αποτελέσματα μιας εντολής μπορώ να τα καναλιζάρω ως


εισερχόμενα δεδομένα σε μια άλλη εντολή με το | (pipe)
Π.χ.
Εντολή1 | Εντολή2 > results
Στο παραπάνω παράδειγμα η Εντολή1 παρήγαγε κάποια αποτελέσματα που
αντί να εκτυπωθούν στο terminal πήγαν ως εισερχόμενα δεδομένα στην
Εντολή2 η οποία με τη σειρά της παρήγαγε νέα αποτελέσματα τα οποία αντί να
εκτυπωθούν στο terminal γράφτηκαν στο αρχείο results.
Θ
Σύνταξη εντολών (iv)
Με το πλήκτρο tab γίνεται αυτόματη συμπλήρωση των δεδομένων σε μια
γραμμή εντολής.

Π.χ. Βρίσκομαι στον κατάλογο /home/User1/ και από κάτω υπάρχουν οι


υποκατάλογοι Desktop, Dir1, Dir2 και Games.

Για να μετακινηθώ στον υποκατάλογο Games πρέπει να πληκτρολογήσω:


cd Games
ή μπορώ να πληκτρολογήσω cd G και μετά να πατήσω το πλήκτρο Tab. To
Linux καταλαβαίνει ότι θέλω το Games και το συμπληρώνει αυτόματα.

Αν θέλω να πάω στο Desktop (από το /home/User1/), αρκεί να πληκτρολογήσω


cd De και μετά να πατήσω το πλήκτρο Tab. Θα συμπληρωθεί αυτόματα η λέξη
Desktop. Αν όμως πληκτρολογούσα μόνο cd D και μετά πατούσα το Tab, το
Linux δεν θα ήξερε αν θέλω να πάω στο Desktop, Dir1 ή Dir2. Θα
παραπονιώταν με ένα ήχο. Αν ξαναπατήσω το Tab αμέσως, θα μου δείξει τις 3
επιλογές που υπάρχουν, δηλαδή τα Desktop, Dir1, Dir2.

Θ
Σύνταξη εντολών (v)
Μπορούμε να δούμε ποιές εντολές εκτελέσαμε πιο πριν πληκτρολογώντας την
εντολή history.

Επίσης, πατώντας στο πληκτρολόγιο το βέλος προς τα επάνω, εμφανίζεται στο


terminal η προηγούμενη εντολή. Αν θέλω να πάω 3 εντολές προς τα πίσω,
πατάω το βέλος προς τα επάνω 3 φορές. Αν μετά θέλω να πάω 2 εντολές προς
τα εμπρός, πατάω το βέλος προς τα κάτω 2 φορές.

Τα βέλη είναι πολύ χρήσιμα όταν εκτελούμε μια πολύ μεγάλη και περίπλοκη
εντολή και πρέπει μετά από λίγο να την ξαναπληκτρολογήσουμε. Έτσι, και
γλιτώνουμε χρόνο και αποφεύγουμε λάθη κατά την πληκτρολόγηση.
Θ
Σύνταξη εντολών (vi)
Κατά την σύνταξη μιας εντολής μπορώ να χρησιμοποιήσω wild cards, δηλαδή
σύμβολα που μπορούν να σημαίνουν οποιοδήποτε χαρακτήρα ή χαρακτήρες.
Το σύμβολο για το wild card είναι ο αστερίσκος *

Π.χ. Βρίσκομαι σε ένα directory που έχει 15 αρχεία, τα file1 έως file15 και το
doc1.
Θέλω να σβήσω τα αρχεία file1 – file15, αλλά όχι το doc1.
Αντί να εκτελέσω την εντολή για το κάθε ένα αρχείο ξεχωριστά, μπορώ να του
πω να σβήσει όλα εκείνα τα αρχεία που ξεκινούν με τους χαρακτήρες “file”

rm file*

Α
Οδηγίες χρήσης μιας εντολής
Η εντολή man μας δίνει πληροφορίες για μια εντολή.
Πληκτρολογούμε man και μετά την εντολή ls:
man ls

Οι οδηγίες είναι δομημένες σε διάφορες ενότητες:


NAME
SYNOPSIS
DESCRIPTION: Εκεί υπάρχουν και τα διαθέσιμα options για την εντολή που τις
δίνουν επιπλέον ειδικές λειτουργίες.
EXAMPLES
SEE ALSO: άλλες διαθέσιμες εντολές που σχετίζονται με την παρούσα.

Το man έχει μια πληθώρα πληροφοριών για την εντολή που συνήθως
κουράζουν τον αναγνώστη. Μια καλή πηγή πληροφοριών για εντολές συνήθως
συναντάται σε προσωπικές ιστοσελίδες στο διαδίκτυο (να ναι καλά το Google
search!!!). Το man συνήθως είναι καλή πηγή για να μας θυμίσει τι κάνουν
κάποιες ειδικές παράμετροι μιας εντολής.
Θ

Βασικές εντολές για πλοήγηση μέσα στο σύστημα

Ο ενεργός κατάλογος είναι αυτός στον οποίο βρισκόμαστε. Μπορούμε να


μετακινηθούμε.

• ls από το list. Παρουσίαση αρχείων/καταλόγων εντός του ενεργού καταλόγου

• cd από το change directory. Αλλαγή του ενεργού καταλόγου.


– Για να ανέβουμε ένα επίπεδο πληκτρολογούμε cd ..
– Για να κατεύουμε ένα επίπεδο, π.χ. στο sub-directory dirA, πληκτρολογούμε cd και
μετά το όνομα του sub-directory στο οποίο θέλουμε να κατευούμε. Π.χ. cd dirA
– Αν πληκτρολογήσουμε μόνο cd θα πάμε στο home directory που είμαστε users.
Επίσης, όταν κλείνω ένα terminal & και το ξανανοίγω, αρχίζω πάλι από το home
directory.
– Αν εκτελέσω cd – πηγαίνω στο προηγούμενο directory.

• pwd από το present working directory. Δείχνει την πλήρη διεύθυνση του
καταλόγου μέσα στον οποίο βρισκόμαστε.

Θ
Βασικές εντολές πλοήγησης
Βρίσκομαι στο directory PC1.
Η πλήρης διεύθυνσή του είναι /home/PC1

PC1 Μέσα στο PC1 έχω ένα αρχείο fileX και 2


fileΧ υποκαταλόγους dir1 & dir2. Μέσα στον
dir1 έχω ένα αρχείο file1. Μέσα στο dir2
έχω υποκατάλογο dir3.
Εφόσον ο ενεργός κατάλογος είναι ο PC1
(εκεί βρίσκομαι), αν εκτελέσω την εντολή
pwd, θα μου δώσει την διεύθυνση:
/home/PC1
dir1 dir2
file1
Αν θέλω να δω τι υπάρχει μέσα στο PC1
(αρχεία και υποκατάλογοι) εκτελώ την
εντολή ls
Θα μου δείξει ότι μέσα στον PC1 υπάρχει
ένα αρχείο fileX και 2 υποκατάλογοι dir1
dir3
& dir2. Δεν θα δω το file1 & dir3.
Θ
Βασικές εντολές πλοήγησης - ls
Αν θέλω να δω τι υπάρχει μέσα στο PC1
(αρχεία και υποκατάλογοι) εκτελώ την
εντολή ls
Θα μου δείξει ότι μέσα στον PC1 υπάρχει
PC1 ένα αρχείο fileX και 2 υποκατάλογοι dir1
fileΧ
& dir2.
Αν θέλω να δω τι υπάρχει στον dir3 ενώ
ακόμα βρίσκομαι στο PC1, πρέπει να
δώσω την διεύθυνση του directory dir3
στην εντολή ls.

ls /home/PC1/dir2/dir3
dir1 dir2
file1
ls –l
To –l αλλάζει την μορφοποίηση των
αποτελεσμάτων.

ls –a
dir3 μας δείχνει ακόμα και κρυφά
αρχεία/directories (το όνομά τους αρχίζει
με την τελεία .)

Θ
Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

Αν βρίσκομαι στο home, πώς


μπορώ με μια μόνο εντολή να πάω
στο dir1 του PC3;
PC1 PC2 PC3

dir1 dir2 dir1 dir2


Θ
Πλοήγηση στο Linux

/ root

home bin dev etc usr ... ...

• Δίνω το πλήρες μονοπάτι:


cd /home/PC3/dir1
Ή
PC1 PC2 PC3 • Δίνω το μονοπάτι από την θέση
που βρίσκομαι:
cd ./PC3/dir1
• Θα δουλέψει η παρακάτω εντολή
αν βρίσκομαι στο home; Γιατί;
cd /PC3/dir1
dir1 dir2 dir1 dir2

A
Login ως guest

/ root

home bin dev etc usr tmp ...

guest-
xxx

Desktop Downloads Documents Music Pictures Public Templates Videos

Επειδή έκανα login as guest, δημιουργείται ένας προσωρινός λογαριασμός στο /tmp που
ονομάζεται guest-xxx, όπου xxx είναι τυχαία γράμματα και νούμερα που αλλάζουν κάθε φορά.
Οτιδήποτε δημιουργήσω σε αυτό τον λογαριασμό καταστρέφεται με το logout.
A
Login ως guest - pwd

/ root

home bin dev etc usr tmp ...

guest-
xxx

Desktop Downloads Documents Music Pictures Public Templates Videos

Με το που κάνω login as guest, ξεκινάω από την κορυφή των directories που ανήκουν στον
guest. Για να δω που βρίσκομαι, εκτελώ:
pwd
Το terminal δείχνει: /tmp/guest-xxx

A
Login ως guest - ls

/ root

home bin dev etc usr tmp ...

guest-
xxx

Desktop Downloads Documents Music Pictures Public Templates Videos

Για να δω τι directories & files υπάρχουν στο directory /tmp/guest-xxx εκτελώ


ls
Εκτελέστε επίσης την εντολή ls –l και μετά την ls –a και μετά την ls –al
Τι παρατηρήσατε?
A

Clear
Πληκτρολογήστε την εντολή clear για να σβήσει ότι υπήρχε
γραμμένο στο terminal.

A
Μετακίνηση με το cd
/ root

home bin dev etc usr tmp ...

guest-
xxx

Desktop Downloads Documents Music Pictures Public Templates Videos

Μετακινηθείτε στο directory Desktop εκτελώντας: cd Desktop


Για να βεβαιωθείτε ότι βρίσκεστε εκεί εκτελέστε: pwd. Ποιά είναι η διεύθυνση του Desktop?
Για να δείτε τι υπάρχει στο Desktop εκτελέστε: ls
Υπάρχει κάτι?
Αν θέλετε να επιστρέψετε ένα επίπεδο παραπάνω, δηλαδή στο /tmp/guest-xxx εκτελέστε: cd ..
Μετά επιστρέψτε πάλι στο Desktop.
A
Δημιουργία αρχείου με την εντολή cat
Βρίσκομαι στο Desktop.
Θέλω να δημιουργήσω ένα αρχείο με το όνομα
file1 που μέσα του να γράφει 2 ονόματα σε 2
διαφορετικές γραμμές (xρησιμοποιώ την εντολή
cat – σημαίνει concatenate). Εκτελώ:
cat > file1 (πατάω ENTER)
Giannis (πατάω ENTER)
Desktop Maria (πατάω ENTER)
(Control D - πατάω ταυτόχρονα τα 2 πλήκτρα)
file1

Το βελάκι > σημαίνει ότι τα περιεχόμενα που θα


πληκτρολογήσουμε θα πάνε μέσα στο αρχείο
file1.
Επειδή χρησιμοποιώ το > αυτό σημαίνει ότι
οποιοδήποτε περιεχόμενο (αν) υπήρχε πριν μέσα
στο file1 θα διαγραφεί και θα μείνει μόνο το όνομα
που γράψαμε.
Αν χρησιμοποιούσα το >> τότε αυτά που γράφω
θα προστεθούν κάτω από τα όποια υπάρχοντα
δεδομένα.

A
Οι εντολές more, head, tail

Για να δω τι περιέχει το file1 εκτελώ: more file1

Για να δω τι περιέχει η πρώτη γραμμή του file1


Desktop εκτελώ: head –n 1 file1
file1
Για να δω τι περιέχουν οι πρώτες 2 γραμμές του
file1 εκτελώ: head –n 2 file1

Για να δω τι περιέχει η τελευταία γραμμή του file1


εκτελώ: tail –n 1 file1

Για να δω τι περιέχουν οι τελευταίες 2 γραμμές


του file1 εκτελώ: tail –n 2 file1
A
H διαφορά μεταξύ > & >>
Στη συνέχεια εκτελώ:
cat > file1
panos
anna
Control D
Τι συνέβη μέσα στο file1? Με ποιά εντολή θα δω
τα περιεχόμενα του file1?
Desktop
Στη συνέχεια εκτελώ (προσοχή! >>):
file1
cat >> file1
Mixalis
Control D
Τι συνέβη τώρα στο file1?
Ποιά είναι η διαφορά όταν χρησιμοποιούμε >
Και όταν χρησιμοποιούμε >>
?

A
Ένωση αρχείων με το cat
Έχουμε το file1 που μέσα του γράψαμε 3 ονόματα.
Θέλουμε να δημιουργήσουμε ένα δεύτερο αρχείο
file2 που να έχει μέσα του το όνομα eleni.

Δημιουργήστε το με τις εντολές που μάθατε.

Στη συνέχεια θέλουμε να ενώσουμε τα περιεχόμενα


Desktop των δύο αρχείων file1 & file2 σε ένα τρίτο αρχείο
file3. Εκτελούμε:
file1
cat file1 file2 > file3
Δείτε τα περιεχόμενα του file3

Αν εκτελούσατε:
cat file2 file1 > file3
Τι θα βλέπατε μέσα στο file3?

Αν εκτελούσατε:
cat file2 file1 file2 > file3
Τι θα βλέπατε μέσα στο file3?

file1 file2 file3


Θ

Βασικές εντολές διαχείρισης αρχείων/καταλόγων

• mkdir testdir1 - από το make directory. Δημιουργεί ένα κατάλογο (subdirectory)


με όνομα testdir1 μέσα στον κατάλογο όπου βρισκόμαστε.

• rm – r testdir1 - από το remove. Σβήνει τον κατάλογο testdir1 και τα περιεχόμενά


του.

• rm testfile1 - Σβήνει το αρχείο testfile1

• cp testfile1 testfile2 - από το copy. Αντιγράφει ένα αρχείο testfile1 και το


ονομάζει testfile2

• cp –r testdir1 testdir2 – Αντιγράφει τον κατάλογο testdir1 και τα περιεχόμενά του


στον κατάλογο testdir2.

• mv testfile1 testfile3 - από το move. Μετονομάζει το αρχείο testfile1 σε testfile3

A
Αντιγραφή αρχείου με το cp

Βρισκόμαστε στο Desktop και έχουμε ήδη


δημιουργήσει 3 αρχεία, τα file1 file2 & file3
file1
Θέλουμε να αντιγράψουμε τα περιεχόμενα του file3
Desktop στο file3c. Εκτελούμε:
file2 file3 cp file3 file3c

Με ποιά εντολή θα δούμε τα περιεχόμενα του


file3c?

Θέλουμε να αντιγράψουμε τα περιεχόμενα του file1


στο file1c. Πληκτρολογήστε την κατάλληλη εντολή.
A
Διαγραφή αρχείου με το rm

Βρισκόμαστε στο Desktop και έχουμε ήδη


δημιουργήσει 5 αρχεία, τα file1, file1c, file2, file3,
file3c
file1

Desktop Θέλουμε να διαγράψουμε τα αρχεία file1c & file3c.


file2 file3
Εκτελούμε:
rm file1c
Στη συνέχεια εκτελούμε:
rm file3c

‘H μπορούμε να διαγράψουμε 2 ή περισσότερα


αρχεία ταυτόχρονα με μία εντολή rm, όπως
παρακάτω:
rm file1c file3c

Ή μπορούμε να χρησιμοποιήσουμε wildcards:


rm file*c

A
Δημιουργία καταλόγου με το mkdir – Μετακίνηση
αρχείων με το mv

Βρισκόμαστε στο Desktop και έχουμε 3 αρχεία, τα


file1, file2, file3.

Θέλουμε να δημιουργήσουμε ένα κατάλογο


Desktop (subdirectory) με το όνομα filesdir και στη συνέχεια
να μεταφέρουμε τα 3 αρχεία (file1, file2, file3) μέσα
σε αυτόν τον υποκατάλογο.

Για να δημιουργήσουμε τον υποκατάλογο


εκτελούμε:
file1
mkdir filesdir
filesdir
file2 file3
Στη συνέχεια, για να μετακινήσουμε το αρχείο file1
μέσα στο filesdir εκτελούμε:
mv file1 ./filesdir/

Μετακινήστε και τα υπόλοιπα 2 αρχεία στο filesdir.


A
Μετονομασία αρχείων με το mv
Βρισκόμαστε στο Desktop και έχουμε πλέον 3
αρχεία, τα file1, file2, file3 μέσα στον υποκατάλογο
filesdir.

Θέλουμε να μετονομάσουμε το αρχείο file1 σε file1r


ενώ όμως συνεχίζουμε να βρισκόμαστε στο
Desktop (χωρίς να μετακινηθούμε μέσα στο
Desktop filesdir).

Αν εκτελούσαμε:
mv file1 file1r
Η εντολή δεν θα λειτουργούσε, γιατί η εντολή θα
file1 έψαχνε το file1 μέσα στον κατάλογο που
r βρισκόμαστε τώρα, δηλαδή μέσα στο Desktop.
filesdir Επειδή όμως το file1 βρίσκεται σε άλλο κατάλογο,
file2 file3 πρέπει να δώσουμε είτε την πλήρη είτε την σχετική
r r
διεύθυνση του file1, για να δουλέψει η εντολή mv.

A
Μετονομασία αρχείων με το mv
Η πλήρης διεύθυνση του file1 είναι:
/tmp/guest-xxx/Desktop/filesdir/file1

Η σχετική διεύθυνση του file1 είναι:


./filesdir1/file1

./ σημαίνει: από εδώ που βρίσκομαι.


Desktop
Άρα, η σωστή εντολή για να μετονομάσω το file1 σε
file1r (που βρίσκεται μέσα στο filesdir) ενώ
βρίσκομαι στο Desktop είναι:
mv ./filesdir/file1 ./filesdir/file1r
file1
r Κάντε την αντίστοιχη μετατροπή και για τα
filesdir υπόλοιπα δύο αρχεία.
file2 file3
r r
A
Μετονομασία/μετακίνηση αρχείων με το mv

Βρισκόμαστε στο Desktop και έχουμε ήδη


μετονομάσει τα 3 αρχεία που βρίσκονται στον
υποκατάλογο filesdir.

Θέλουμε να μεταφέρουμε το αρχείο file1r από τον


υποκατάλογο filesdir στον κατάλογο Desktop, όπου
Desktop βρισκόμαστε. Εκτελούμε:
file1 file2 mv ./filesdir/file1r ./file1r
r x

Μπορούμε ταυτόχρονα να μετακινήσουμε ένα


αρχείο και να το μετονομάσουμε. Θέλουμε το
αρχείο file2r (που βρίσκεται στον υποκατάλογο
filesdir) να το μετακινήσουμε στον κατάλογο
filesdir
Desktop (που βρισκόμαστε) και ταυτόχρονα να το
file3
r μετονομάσουμε σε file2x. Εκτελούμε:
mv ./filesdir/file2r ./file2x

A
Διαγραφή καταλόγου με το rm -r

Βρισκόμαστε στο Desktop και έχουμε ήδη


μεταφέρει εδώ το αρχείο file1r ενώ το file2r το
μεταφέραμε και το μετονομάσαμε σε file2x.
Τώρα θέλουμε να διαγράψουμε τον υποκατάλογο
filesdir μαζί με τα περιεχόμενά του.
Desktop Εκτελούμε:
file1 file2 rm –r filesdir
r x

Στη συνέχεια θέλουμε να δούμε αν συνεχίζει να


υπάρχει ο υποκατάλογος filesdir μέσα στον
Desktop. Τι εντολή θα εκτελέσουμε για να δούμε τι
υπάρχει μέσα στον Desktop?
filesdir
file3
r Διαγράψτε με μία εντολή τα file1r και file2x.
A
Άσκηση
1. Κλείστε το terminal.
2. Ξανα-ανοίξτε το. Σε ποιό directory βρίσκεστε;
3. Μετακινηθείτε στο Desktop, χρησιμοποιώντας το tab για αυτόματη συμπλήρωση
του ονόματoς του.
4. Δημιουργείστε 3 αρχεία, file1, file2, file3 με την εντολή cat. Σε κάθε ένα από τα
αρχεία γράψτε σε μια γραμμή ένα μόνο όνομα (διαφορετικό).
5. Ενώστε τα 3 αρχεία σε ένα 4ο, file4, με την εντολή cat.
6. Διαγράψτε τα 3 αρχεία file1, file2, file3.
7. Δημιουργείστε ένα directory με το όνομα testdir κάτω από το Desktop.
8. Μετακινήστε το file4 από το Desktop στο testdir.
9. Που βρίσκεστε τώρα;
10. Καθαρίστε το terminal από τις προηγούμενες εντολές με το clear.
11. Μετακινηθείτε ένα επίπεδο/directory επάνω .
12. Που βρίσκεστε;
13. Από εκεί, δείτε με την εντολή ls τι υπάρχει στο testdir. Βλέπετε το file4;
14. Από εκεί που βρίσκεστε, μετακινηθείτε με μία μόνο εντολή στο testdir.
15. Δείτε αν βρίσκεστε τώρα μέσα στο testdir.
16. Με μία μόνο εντολή μετακινηθείτε εκεί που βρισκόσασταν πιο πριν.
17. Τώρα διαγράψτε με μία εντολή το testdir & τα περιεχόμενα του.

Εισαγωγή στην Πληροφορική


και στην διαχείριση
μεγάλου όγκου δεδομένων
2η εργαστηριακή άσκηση

Εντολές του Linux


Θ
Δικαιώματα αρχείων και καταλόγων
Ένα αρχείο μπορούμε να το
• Διαβάσουμε (read)
• Τροποποιήσουμε (write)
• Εκτελέσουμε αν είναι πρόγραμμα (execute)

• Ένα αρχείο μπορεί να είναι προσβάσιμο μόνο για μια από τις παραπάνω τρεις
ενέργειες (διάβασμα, τροποποίηση, εκτέλεση), ή για οποιoδήποτε συνδυασμό
τους.

• Στο Linux, υπάρχει ο χρήστης (user), η ομάδα (group), οι υπόλοιποι (others).


• Ένα αρχείο μπορεί να είναι προσβάσιμο για συγκεκριμένες ενέργειες από τον
χρήστη και προσβάσιμο για συγκεκριμένες ενέργειες από την ομάδα ή από τους
υπόλοιπους. Με αυτό τον τρόπο ελέγχουμε τα δικαιώματα που έχει ο καθένας στο
συγκεκριμένο αρχείο.

• Με την εντολή ls –l μπορούμε να δούμε τι δικαιώματα έχει ο καθένας πάνω στα


αρχεία ενός καταλόγου.
• Πρώτα φαίνονται τα δικαιώματα του χρήστη, μετά της ομάδας, μετά των
υπολοίπων. Τα δικαιώματα για τον καθένα εμφανίζονται με την σειρά
read/write/execute, χρησιμοποιώντας τα σύμβολα r w x αντίστοιχα.

Θ
Δικαιώματα αρχείων και καταλόγων
Παρακάτω φαίνονται τα δικαιώματα ενός αρχείου στο οποίο όλοι έχουν
πρόσβαση και για ανάγνωση και για τροποποίηση και για εκτέλεση.
rwxrwxrwx
Στο παρακάτω αρχείο μόνο ο χρήστης (user) έχει πρόσβαση για ανάγνωση,
τροποποίηση, εκτέλεση, ενώ οι υπόλοιποι (group & others) έχουν πρόσβαση
μόνο για ανάγνωση
rwxr--r--
Στο παρακάτω αρχείο μόνο ο χρήστης (user) έχει πρόσβαση για ανάγνωση,
εκτέλεση, ενώ οι υπόλοιποι (group & others) δεν έχουν πρόσβαση για τίποτα.
r-x------
Θ
Δικαιώματα αρχείων και καταλόγων - chmod
Με την εντολή chmod μπορούμε να τροποποιήσουμε τα δικαιώματα σε ένα αρχείο.

Στην εντολή chmod:


το read συμβολίζεται με το 4
Το write συμβολίζεται με το 2
To execute συμβολίζεται με το 1.

Ο συνδυασμός read-write συμβολίζεται με το 6 (4+2)


Ο συνδυασμός read-execute συμβολίζεται με το 5 (4+1)
Ο συνδυασμός write-execute συμβολίζεται με το ... ????

Ο συνδυασμός read-write-execute συμβολίζεται με το 7 (4+2+1)

Άρα 3 νούμερα αρκούν για τα δικαιώματα του χρήστη, του group, των υπολοίπων.
Το νούμερο 777 σημαίνει ότι και οι τρεις (user/group/other) έχουν όλα τα δικαιώματα
(read-write-execute )

Α
Δικαιώματα αρχείων και καταλόγων - chmod
Με την εντολή chmod μπορούμε να τροποποιήσουμε τα δικαιώματα σε ένα αρχείο.

Ανοίξτε το terminal και μετακινηθείτε στο Desktop.


Δημιουργείστε ένα αρχείο file1 με την εντολή cat και γράψτε κάποια ονόματα.
Τερματίζετε την εντολή cat με το Ctr D.
Στη συνέχεια ελέγξτε τα δικαιώματα του αρχείου με: ls –l
Τι δικαιώματα έχει;
Θέλουμε το αρχείο file1 να είναι προσβάσιμο μόνο για ανάγνωση, μόνο σε εμάς ως
χρήστη.
r--------
Οπότε, εκτελούμε: chmod 400 file1
Προσπαθήστε τώρα να γράψετε κάποιο όνομα μέσα στο file1 με την εντολή cat,
όπως κάνατε πριν.
Σας το επιτρέπει το σύστημα;

Τώρα αλλάξτε τα δικαιώματα του file1 σε:


rw-------
Ποιό νούμερο χρειάζεστε στο chmod?
Αφού αλλάξατε τα δικαιώματα, μπορείτε να γράψετε κάποιο όνομα μέσα στο file1 με
την εντολή cat;
Α
Η εντολή wc –word count

Με την εντολή wc (word count) μπορούμε να μετρήσουμε τον αριθμό των γραμμών ή
των λέξεων ή των χαρακτήρων σε ένα αρχείο

Για να μετρήσουμε τις γραμμές, λέξεις, χαρακτήρες του αρχείου file1 ταυτόχρονα
εκτελούμε:
wc file1

Για να μετρήσουμε μόνο τις γραμμές του αρχείου file1 εκτελούμε:


wc –l file1

Για να μετρήσουμε μόνο τις λέξεις του αρχείου file1 εκτελούμε:


wc –w file1

Για να μετρήσουμε μόνο τους χαρακτήρες του αρχείου file1 εκτελούμε:


wc –c file1

Θ
Η εντολή sort

Με την εντολή sort μπορούμε να τακτοποιήσουμε τις γραμμές ενός αρχείου


αλφαβητικά. Τα ψηφία που βλέπουμε στην οθόνη η εντολή sort δεν τα αντιλαμβάνεται
ως νούμερα, αλλά ως χαρακτήρες. Αυτό έχει επιπτώσεις στην συμπεριφορά του sort!
Unicode standard 7.0
Κωδοποίηση ειδικών χαρακτήρων, γραμμάτων,
αριθμών, συμβόλων (π.χ. Μαθηματικών).

Το Unicode 7 κωδικοποιεί συνολικά 112956


διαφορετικούς χαρακτήρες.

[Link]

[Link]

Η αρίθμηση εμφανίζεται στο 16δικό σύστημα.

0000 - 001F: C0 controls.


0020 - 002F: ASCII χαρακτήρες για σύμβολα και
τονισμό.
0030 – 0039: ASCII ψηφία.
Κτλ.

Π.χ. Το αγγλικό γράμμα Α συμβολίζεται με:


U+0041

Α
Η εντολή sort

Δημιουργήστε με το cat ένα αρχείο με όνομα file_unsorted που να περιέχει τις


παρακάτω γραμμές:
11 eleni
1 maria
4 giorgos
2 giannis
3 anna
1 maria

Στη συνέχεια κάνετε sort τον file_unsorted εκτελώντας:


sort file_unsorted
Τι παρατηρείτε;
Μετά δείτε με την εντολή more αν πράγματι άλλαξε το περιεχόμενο του file_unsorted.
Τι συνέβη;
Α
Η εντολή 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

Για να αντιληφθεί η εντολή sort τα ψηφία ως νούμερα πρέπει να χρησιμοποιήσουμε


την παράμετρο -n
Τώρα εκτελέστε:
sort –n file_unsorted > file_sorted

Δείτε τώρα με την εντολή more τα περιεχόμενα του file_unsorted & μετά τα
περιεχόμενα του file_sorted.
Α
Η εντολή uniq
Με την εντολή uniq εμφανίζουμε τις μοναδικές γραμμές μέσα σε ένα αρχείο. Πρέπει
όμως να έχει προηγηθεί sort του αρχείου.

Στο αρχείο file_unsorted είχαμε 6 γραμμές, με μία επανάληψη (το: 1 maria) στις
γραμμές 2 & 6.

Εκτελέστε: uniq file_unsorted


Εμφανίζεται η επαναλαμβανόμενη γραμμή?

Εκτελέστε: uniq file_sorted


Εμφανίζεται τώρα η επαναλαμβανόμενη γραμμή?

Εκτελέστε: uniq –c file_sorted


Tι παρατηρείτε τώρα;
Αν θέλουμε να σώσουμε τα αποτελέσματα του uniq, πρέπει να τα κατευθύνουμε σε
κάποιο φάκελο.
Εκτελέστε: uniq file_sorted > file_uniq

Α
Η χρήση των pipes |

Στο προηγούμενο παράδειγμα θέλαμε να εμφανίζονται μόνο οι μοναδικές γραμμές


που υπήρχαν στο αρχείο file_unsorted.

Αυτό έγινε με δύο εντολές.


Πρώτα κάναμε sort στο αρχείο file_unsorted και σώσαμε τα αποτελέσματα σε ένα
άλλο αρχείο file_sorted.
Μετά χρησιμοποιήσαμε ως input το file_sorted στην εντολή uniq και τα αποτελέσματα
σώθηκαν στο αρχείο file_uniq.
Δηλαδή, εκτελέσαμε τις παρακάτω δύο εντολές διαδοχικά:
sort file_unsorted > file_sorted
uniq file_sorted > file_uniq

Με την χρήση των pipes (|) μπορούμε να καναλιζάρουμε τα αποτελέσματα (output)


μιας εντολής ως input σε μια άλλη εντολή. Έτσι, αντί για τις παραπάνω 2 εντολές και
την δημιουργία του ενδιάμεσου αρχείου file_sorted μπορούμε να κάνουμε το ίδιο με
μια την παρακάτω εντολή.
Εκτελέστε: sort file_unsorted | uniq > file_uniq
vi editor

Θ
vi editor • Για να γράψουμε κάτι μέσα στο αρχείο ή
να τροποποιήσουμε το κείμενο, πρέπει
να βρισκόμαστε στο INSERT MODE. Σε
αυτό το MODE, ότι πληκτρολογήσουμε
γίνεται κείμενο μέσα στο αρχείο.

• Για να τροποποιήσουμε κάτι στο κείμενο


ή να κινηθούμε σε κάποια γραμμή,
πρέπει να βρισκόμαστε στο COMMAND
MODE. Σε αυτό το MODE, το κάθε
πλήκτρο που πατάμε είναι και μια
εντολή.

• Για να σώσουμε ή όχι το κείμενο, πρέπει


να βρισκόμαστε στο LAST LINE MODE.

• Μετακινούμαστε από το ένα MODE στο


άλλο μέσω του
• ENTER,
• ESC,
• SHIFT :
• A, a, I, I, O, o
Α
vi editor
Άσκηση 1: Δημιουργία ενός νέου αρχείου
• Από το τερματικό, που βρίσκομαι στο directory Desktop, δημιουργώ το αρχείο
test1
– Εκτελώ: vi test1 (και πατώ ENTER)
– Στο terminal πλεόν βλέπω ένα άδειο αρχείο.

• Αυτή τη στιγμή βρίσκομαι μέσα στο test1, στο COMMAND MODE.


• Μπαίνω στο INSERT MODE πατώντας το πλήκτρο i.
• Τώρα μπορώ να γράψω ότι θέλω. Πάω σε καινούργια σειρά με το ENTER.
Γράφω πάλι κάτι.
• Τώρα θέλω να σώσω αυτό που έγραψα στο αρχείο test1 και να τερματίσω το vi.
Για να γίνει αυτό πρέπει πρώτα να φύγω από το INSERT MODE και να πάω
COMMAND MODE. Άρα πατάω το πλήκτρο ESCAPE. Στη συνέχεια πατάω τα
δύο πλήκτρα SHIFT & : ταυτόχρονα, οπότε από το COMMAND MODE πλέον
βρίσκομαι στο LAST LINE MODE. Τώρα πληκτρολογώ wq (που σημαίνει write
quit) και πατάω ENTER.
• Τώρα έχει τερματιστεί το vi και πλέον βρίσκομαι πάλι πίσω στο terminal. Ότι
πληκτρολογήσω, το linux το καταλαβαίνει ως εντολή.

Α
vi editor
Άσκηση 2: Διαγραφή δεδομένων ενός αρχείου μέσω του
INSERT MODE
• Ανοίγω πάλι το προηγούμενο αρχείο (test1) με το vi editor.
• vi test1
• Θέλω να σβήσω ότι δεδομένα έχει το test1.
• Μπορώ να σβήσω τα προηγούμενα δεδομένα είτε μέσα από το COMMAND
MODE είτε μέσα από το INSERT MODE.

• Αν μπω στο INSERT MODE (πατώντας μια φορά i ενώ είμαι στο COMMAND
MODE) σβήνω τα δεδομένα με το DELETE. Πάω τον κέρσορα στο τέλος της
τελευταίας γραμμής (με τα βελάκια στο πληκτρολόγιο) και αρχίζω να σβήνω.
Εκτελέστε το.

• Όταν σβήσετε όλα τα δεδομένα, τερματίστε το vi χωρίς όμως να έχετε


αποθηκεύσει τις αλλαγές που κάνατε, γιατί θα τις επαναλάβετε στη συνέχεια
μέσα από το COMMAND MODE. Για να τερματιστεί το vi χωρίς να έχουν
αποθηκευθεί οι αλλαγές, πρέπει να πάτε στο LAST LINE MODE. Για να γίνει
αυτό πρέπει πρώτα να βρίσκομαι στο COMMAND MODE. Άρα πατάω το
πλήκτρο ESCAPE. Στη συνέχεια πατάω τα δύο πλήκτρα SHIFT & : ταυτόχρονα,
οπότε πλέον βρίσκομαι στο LAST LINE MODE και τώρα πληκτρολογώ q!, που
σημαίνει quit without saving.
Α
vi editor
Άσκηση 2: Διαγραφή δεδομένων ενός αρχείου μέσω του
COMMAND MODE
• Θέλω πάλι να τροποιήσω το προηγούμενο αρχείο και να διαγράψω
γραμμές, όχι όμως μέσω του INSERT MODE, αλλά μέσω του COMMAND
MODE
• Ανοίξτε πάλι το test1 με το vi. Βρίσκεστε στο COMMAND MODE.
• Πάτε τον κέρσορα (με τα βέλη του πληκτρολόγιου) σε κάποια γραμμή και
πληκτρολογείτε dd
• Μόλις σβήσατε μια γραμμή.
• Αν θέλετε να σβήσετε Χ γραμμές από εκεί που βρίσκεται ο κέρσορας,
πληκτρολογείτε πρώτα τον αριθμό X και αμέσως μετά πατάτε dd.
• Αν θέλετε να ακυρώσετε την προηγούμενη εντολή που δώσατε,
πληκτρολογείτε u (είναι το undo).
• Αν θέλετε να ακυρώσετε και την πιο προηγούμενη εντολή που δώσατε, ξανά
πληκτρολογείτε u.
• Τερματίστε το vi χωρίς να αποθηκεύσετε τις αλλαγές που κάνατε.

Α
vi editor
Άσκηση 3: Μετακίνηση εντός του αρχείου μέσω
του COMMAND MODE
• Ανοίξτε πάλι το test1 με το vi. Βρίσκεστε στο COMMAND MODE.
• Για να μετακινήσετε τον κέρσορα στη δεύτερη γραμμή (δίχως τα βέλη του
πληκτρολόγιου), πληκτρολογείτε τον αριθμό της γραμμής 2 και αμέσως
μετά πατάτε ταυτόχρονα τα δύο πλήκτρα SHIFT και g
• Για να μετακινήσετε τον κέρσορα στην τελευταία γραμμή, χωρίς να ξέρετε
τον αριθμό της, πατάτε ταυτόχρονα τα δύο πλήκτρα SHIFT και g

• Σβήστε την τελευταία γραμμή με dd και στην συνέχεια αποθηκεύστε τις


αλλαγές χωρίς να τερματίσετε το vi, πηγαίνοντας στο LAST LINE MODE και
πληκτρολογώντας μόνο w (& ENTER).

• Σβήστε τη νέα τελευταία γραμμή με το dd και στην συνέχεια αποθηκεύστε


τις αλλαγές, τερματίζοντας ταυτόχρονα το vi.
Α
vi editor
Άσκηση 4: Εύρεση χαρακτήρων μέσα στο κείμενο
• Ανοίξτε πάλι το test1 με το vi. Βρίσκεστε στο COMMAND MODE.

• Θέλετε να σβήσετε ότι δεδομένα έχει το test1 και να τα αντικαταστήσετε με τα


ονόματα 5 φίλων και πληροφορίες τους όπως από ποιά πόλη είναι. Σε κάθε γραμμή
βάζετε τα στοιχεία ενός ατόμου, ξεκινώντας από το όνομα και μετά την πόλη και μετά
τον αύξοντα αριθμό του ατόμου. Μεταξύ των στοιχείων σε μια σειρά πατάτε το
πλήκτρο tab στα αριστερά του πληκτρολόγιου για να διαχωριστούν.

• Θέλετε να πάει αυτόματα ο κερσόρας στην γραμμή και θέση εκείνη που έχει το όνομα
ενός συγκεκριμένου ατόμου. Για να γίνει αυτό, πρέπει να βρίσκεστε στο COMMAND
MODE. Πληκτρολογείτε / και στη συνέχεια βλέπετε τον κέρσορα να πηγαίνει στην
τελευταία γραμμή. Πληκτρολογείτε το όνομα του ατόμου, πατάτε ENTER και ο
κέρσορας πηγαίνει στην θέση που βρίσκεται το όνομα (αν υπάρχει).

• Αν το όνομα υπάρχει περισσότερες από μια φορές στο file, τότε κάθε φορά που
πατάτε / & ENTER, ο κέρσορας μετακινείται στην επόμενη θέση. Δεν είναι ανάγκη να
ξαναπληκτρολογήσετε το όνομα που ψάχνετε.

• Δοκιμάστε το ίδιο όπως παραπάνω, ψάχνοντας μέσα στο file για ένα συγκεκριμένο
γράμμα του αλφάβητου αντί για ένα ολόκληρο όνομα.

• Αποθηκεύστε τις αλλαγές (LAST LINE MODE: w) χωρίς να τερματίσετε το vi.

Α
vi editor
Άσκηση 5: αντικατάσταση χαρακτήρων εντός κειμένου
• Σε συνέχεια της προηγούμενης άσκησης, πάτε στο COMMAND MODE.

• Θέλετε να αντικαταστήσετε την τιμή 5 με την λέξη final.

• Πάτε πάλι πίσω στο LAST LINE MODE και πληκτρολογείτε:


• %s/5/final/g

• Το s σημαίνει substitute. Μεταξύ της πρώτης και δεύτερης / εισάγετε τον ή


τους χαρακτήρες που θέλετε να αντικατασταθούν, ενώ μεταξύ της δεύτερης
και τρίτης / εισάγετε τον ή τους χαρακτήρες που θέλετε να αντικαταστήσουν
τους πρώτους.
• το % σημαίνει αντικατάσταση σε όλες τις γραμμές. Αν θέλω αντικατάσταση
από την γραμμή 1 έως την 3, αντί για % βάζω 1,3. Αν θέλω αντικατάσταση
από την γραμμή 3 έως το τέλος, αντί για % βάζω 3,$.
• Το g σημαίνει global, δηλαδή αντικατάσταση περισσότερες από μια φορές
στην ίδια γραμμή, εφόσον υπάρχει.
• Τερματίστε το vi δίχως να αποθηκεύσετε τις αλλαγές.
Α
vi editor
Άσκηση 6:
• Δημιουργείστε ένα νέο file με το δικό σας περιεχόμενο και χρησιμοποιήστε
όλες τις προηγούμενες εντολές που μάθατε για το vi.

Θ
Awk: Επιλογή στήλης από ένα αρχείο
• awk ‘{print $1}’ test1 > test2
test1 test2
A1 B1
A2 B2 A1
A3 B3 A2
A3
B4

• awk ‘{print $2}’ test1 > test2


test1 test2
A1 B1
Β1
A2 B2
Β2
A3 B3
Β3
Β4
B4
Α
Awk: Άσκηση 1
• Βρίσκεστε στο ίδιο directory με το test1, μέσα στο οποίο έχετε τις πληροφορίες
για 5 φίλους σας (1η στήλη όνομα; 2η στήλη πόλη).
• Θέλετε να δείτε μόνο τα ονόματα που υπάρχουν μέσα στο test1.
• Από το terminal, πληκτρολογείτε:
• awk ‘{print $1}’ test1
• To $1 σημαίνει ότι θέλετε να κάνετε print μόνο την πρώτη στήλη του test1.
• Αν θέλατε να κάνετε print μόνο την δεύτερη στήλη, θα χρησιμοποιούσατε το $2.
• Εκτελέστε μια εντολή που να κάνει print στο terminal τις δύο πρώτες στήλες.
• Θέλετε να βάλετε μόνο τα ονόματα (πρώτη στήλη) σε ένα άλλο file με το όνομα
[Link]
• Πληκτρολογείτε:
• awk ‘{print $1}’ test1 > [Link]
• Το σύμβολο > σημαίνει ότι το output από μια εντολή, αντί να εμφανιστεί στο
terminal, οδηγείται μέσα σε ένα file που μπορεί ήδη να υπάρχει, ή να μην
υπάρχει και να δημιουργείται τώρα. Αν ο φάκελος [Link] ήδη υπήρχε πριν
την εντολή, το σύμβολο > θα έκανε overwrite τα περιεχόμενα του [Link]
• Δείτε τα περιεχόμενα του [Link] με το vi
• Επαναλάβετε την προηγούμενη εντολή χρησιμοποιώντας όμως το σύμβολο >>
αντί για >
• Δείτε πάλι τα περιεχόμενα του [Link] με το vi. Τι συνέβη τώρα; Τι γίνεται όταν
χρησιμοποιώ το >>

Α
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

A1 Nasia A1 Salonica A1 Nasia Salonica


A2 Christos A2 Elasona A2 Christos Elasona
A3 Giannis A3 Larisa A3 Giannis Larisa
Θ
Join: Ένωση αρχείων με βάση μοναδικά κλειδιά
• join f1 f2 > f3

A0 XXX A1 Salonica A1 Nasia Salonica


A1 Nasia A2 Elasona A2 Christos Elasona
A2 Christos A3 Larisa A3 Giannis Salonica
A3 Giannis A4 XXX

A1 Nasia A1 Salonica A1 Nasia Salonica


A3 Giannis A2 Elasona A3 Giannis Larisa
A2 Christos A3 Larisa

Α
Join & sort: Άσκηση 2
• Πειραματιστείτε με τα 2 files f1 & f2 και αλλάξτε την σειρά των γραμμών στο
ένα από τα δύο και εκτελέστε πάλι το join για να δείτε πως συμπεριφέρεται.
Δείτε το f3 στο vi.

• Εκτελέστε τις εντολές:


• sort f1 > f1a
• sort f2 > f2a

• Δείτε τα f1a & f2a με το vi. Τι έκανε το sort;

• Εκτελέστε πάλι join, αλλά αυτή την φορά για τα f1a & f2a. Δείτε το f3 στο vi.
• Όπως καταλάβατε, για να γίνει σωστά το join θα πρέπει να έχει προηγηθεί
sort.

• Πειραματιστείτε με τα 2 files f1α & f2α και προσθέστε μια νέα σειρά στο ένα
και εκτελέστε πάλι το join για να δείτε πως συμπεριφέρεται.
Συνδυαστική Άσκηση
• Σας δίνεται ένα αρχείο (BioGrid_interactions.txt) που περιέχει πρωτεϊνικές
και γενετικές αλληλεπιδράσεις από τον πολύ καλά μελετημένο οργανισμό
μοντέλο S. cerevisiae (ζυμομύκητας).

• Στην μία στήλη αναγράφεται το όνομα του ενός γονιδίου/πρωτεΐνης και στην
δεύτερη στήλη το όνομα του άλλου γονιδίου/πρωτεΐνης. Ένα
γονίδιο/πρωτεΐνη είναι δυνατόν να έχει περισσότερες από μια
αλληλεπιδράσεις. Στην τρίτη στήλη αναγράφεται η πειραματική μέθοδος
εντοπισμού. Στην τέταρτη στήλη το είδος της αλληλεπίδρασης
(γενετική/φυσική). Είναι δυνατόν μια αλληλεπίδραση να έχει εντοπιστεί με
περισσότερες από μια μεθόδους.

Gene_name1 Gene_name2 Experim_method genetic/physical_interaction


Gene_1 Gene_2 Y2H physical
Gene_1 Gene_2 immuniprecipitation physical
Gene_1 Gene_3 Y2H physical
Gene_3 Gene_4 synthetic_lethal genetic
Gene_1 Gene_4 synthetic_lethal genetic

Συνδυαστική Άσκηση

Gene_name1 Gene_name2 Experim_method genetic/physical_interaction


Gene_1 Gene_2 Y2H physical
Gene_1 Gene_2 immuniprecipitation physical
Gene_1 Gene_3 Y2H physical
Gene_3 Gene_4 synthetic_lethal genetic
Gene_1 Gene_4 synthetic_lethal genetic

Βρείτε με τις κατάλληλες εντολές του Linux:


• πόσες αλληλεπιδράσεις υπάρχουν συνολικά στο αρχείο;
• πόσες μοναδικές αλληλεπιδράσεις (ασχέτως πειραματικής μεθόδου)
υπάρχουν συνολικά στο αρχείο;
• πόσα μοναδικά γονίδια/πρωτεΐνες υπάρχουν στο αρχείο;
• πόσες διαφορετικές πειραματικές μέθοδοι εντοπισμού αναγράφονται στο
αρχείο;
H εντολή grep – αναζήτηση μοτίβων

Α
Η εντολή 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 στο file_out;


Α
Η εντολή grep

Με την παρακάτω εντολή θα εντοπιστούν οι γραμμές 4 & 5


Εκτελέστε:
grep ‘na’ file1
file1 terminal
1 eleni larisa
2 maria larisa 4 giannis athina
3 giorgos larisa 5 anna xanthi
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.

Στη συνέχεια, με την παρακάτω εντολή θα εντοπιστούν η 3η και 6η γραμμή που


περιέχουν τους χαρακτήρες ‘giorgos’ και επιπλέον θα εμφανιστούν και τα νούμερα
των γραμμών.
Εκτελέστε: grep -n ‘giorgos’ file1_2c3c > file2

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

Όσα αρχεία θέλουμε να ψάξουμε τα γράφουμε στη σειρά, το ένα μετά το άλλο.

file1 file2 terminal

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

Βρισκόμαστε στο Desktop και τα 2 αρχεία που μας


ενδιαφέρουν (file1, file2) τα μετακινούμε στον
υποκατάλογο filesdir (που δημιουργούμε).

Τι εντολή θα δώσουμε για να δούμε στο terminal τις


Desktop
γραμμές που περιέχουν το όνομα ‘giorgos’ στα δύο
αυτά αρχεία?

grep 'giorgos' ./filesdir/file1 ./filesdir/file2

Η παράμετρος –r μας επιτρέπει να ψάξουμε όλα τα


filesdir
αρχεία ενός καταλόγου και των υποκαταλόγων του.
file1 file2 Έτσι, αν θέλαμε να ψάξουμε όλα τα αρχεία του
καταλόγου filesdir από το Desktop, εκτελούμε:

grep –r ‘giorgos’ ./filesdir/

Α
grep -c

Με την παράμετρο –c εμφανίζεται και ο συνολικός αριθμός των γραμμών στις οποίες
εντοπίστηκε η λέξη/χαρακτήρες από το grep.

Μετακινούμαστε μέσα στο directory filesdir.


Στο file1, με την παρακάτω εντολή θα εντοπιστούν 2 γραμμές, η 3η και 6η που
περιέχουν τους χαρακτήρες ‘giorgos’ και στο terminal θα εμφανιστεί το νούμερο 2.
grep -c ‘giorgos’ file1

file1 terminal
eleni larisa
maria larisa 2
giorgos larisa
giannis athina
anna xanthi
giorgos2 volos
Α
grep -v

Με την παράμετρο –v εντοπίζονται οι γραμμές που ΔΕΝ περιέχουν την


λέξη/χαρακτήρες που δώσαμε στο grep.

Στο 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 είναι
σε κεφαλαία ή μικρά γράμματα.

Με το vi, τροποποιείστε το file1 όπως φαίνεται παρακάτω στην εικόνα.


Στο file1, οι χαρακτήρες ‘giorgos’ υπάρχουν στην 3η γραμμή, ενώ οι χαρακτήρες
‘Giorgos’ στην 6η γραμμή. Η παρακάτω εντολή θα μας δώσει μόνο την 3η γραμμή.
Εκτελέστε: grep ‘giorgos’ file1

Ενώ η παρακάτω εντολή θα μας δώσει την 3η και 6η γραμμή.


Εκτελέστε: grep -i ‘giorgos’ file1
file1 terminal

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 επιστρέφει τα ονόματα των αρχείων στα
οποία βρήκε τους χαρακτήρες/λέξεις με τα οποία ψάχνουμε.

Μετακινηθείτε ένα επίπεδο πάνω.


Στο παρακάτω παράδειγμα και τα 3 αρχεία περιέχουν τους χαρακτήρες ‘giorgos’.
Εκτελέστε: grep –l ‘giorgos’ ./filesdir/
Ή
Εκτελέστε: grep –l ‘giorgos’ ./filesdir/file*
Εδώ το * συμβολίζει ταίριασμα με οποιοδήποτε χαρακτήρα μηδέν ή μία ή
περισσότερες φορές.

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

Επίσης, είναι δυνατόν να κάνουμε αναζήτηση και με περισσότερα μοτίβα.


• Ποιά είναι η εντολή για να βρω γραμμές που περιέχουν τα ονόματα ‘giannis’ ‘eleni’
ή ‘giorgos’ ?
• Αν θέλω η αναζήτηση να μην είναι ευαίσθητη σε κεφαλαία/μικρά γράμματα, πώς
θα τροποποιήσω την εντολή?
• Τι θα έκανα αν ήθελα να εκτελέσω το ίδιο πράγμα με την grep –f ?
Α
Egrep: Αναζήτηση με περισσότερα από ένα μοτίβα
• Ποιά είναι η εντολή για να βρω γραμμές που περιέχουν τα ονόματα ‘giannis’
‘eleni’ ‘giorgos’ ?
• egrep ‘giannis|eleni|giorgos’ file1

• Αν θέλω η αναζήτηση να μην είναι ευαίσθητη σε κεφαλαία/μικρά γράμματα, πώς


θα τροποποιήσω την εντολή?
• egrep -i ‘giannis|eleni|giorgos’ file1

• Τι θα έκανα αν ήθελα να εκτελέσω το ίδιο πράγμα με την grep –f ?


• Θα έπρεπε να γράψω τα τρία ονόματα σε ένα άλλο αρχείο (3 γραμμές) π.χ.
file_names και μετά εκτελώ:
• grep –f file_names file1
file1

eleni larisa file_names


maria larisa
giannis
giorgos larisa
eleni
giannis athina
giorgos
anna xanthi
Giorgos volos

Θ
Egrep: Αναζήτηση πιο γενικών μοτίβων με regular
expressions
Πολλές φορές δεν αναζητούμε μια συγκεκριμένη λέξη ή σειρά χαρακτήρων, αλλά
ένα πιο γενικό μοτίβο χαρακτήρων.

Π.χ. Μπορεί να αναζητάμε:


• Κάποιους χαρακτήρες που βρίσκονται στην αρχή μιας σειράς.
• Κάποιους χαρακτήρες που βρίσκονται στο τέλος μιας σειράς.
• Κάποιες λέξεις που σε μια συγκεκριμένη θέση τους μπορεί να υπάρχουν
εναλλακτικά μια σειρά από κάποιους χαρακτήρες/νούμερα/σύμβολα.

Για αυτό το λόγο κάνουμε χρήση των regular expressions.


Α
Egrep: μοτίβα που βρίσκονται στην αρχή μιας σειράς
Για να δηλώσουμε ότι το συγκεκριμένο μοτίβο πρέπει να βρίσκεται στην αρχή μιας
σειράς χρησιμοποιούμε το σύμβολο ^ πριν το μοτίβο.

Τροποποιείστε με το vi το file1 όπως στην παρακάτω εικόνα.

Εκτελέστε την παρακάτω εντολή, για να βρείτε γραμμές όπου η λέξη ‘eleni’
βρίσκεται μόνο στην αρχή της γραμμής:
egrep ‘^eleni’ file1
file1 terminal

eleni larisa
giannis athina eleni larisa
anna xanthi
Giorgos eleni

Α
Egrep: μοτίβα που βρίσκονται στο τέλος μιας σειράς

Για να δηλώσουμε ότι το συγκεκριμένο μοτίβο πρέπει να βρίσκεται στο τέλος μιας
σειράς χρησιμοποιούμε το σύμβολο $ μετά το μοτίβο.

Εκτελέστε την παρακάτω εντολή για να βρείτε γραμμές όπου η λέξη ‘eleni’ βρίσκεται
μόνο στο τέλος της γραμμής:

egrep ‘eleni$’ file1

file1 terminal

eleni larisa
giannis athina Giorgos eleni
anna xanthi
Giorgos eleni

Με ποιά εντολή θα βρούμε γραμμές που στην αρχή τους έχουν τη λέξη ‘eleni’ ή
στο τέλος έχουν τη λέξη ‘athina’ ?
Α
Egrep: μοτίβα που βρίσκονται στο τέλος μιας σειράς

Με ποιά εντολή θα βρούμε γραμμές που στην αρχή τους έχουν τη λέξη ‘eleni’ ή
στο τέλος έχουν τη λέξη ‘athina’ ?

egrep ‘^eleni|athina$’ file1

Θ
Egrep: λέξεις που σε μια συγκεκριμένη θέση τους μπορεί
να υπάρχουν εναλλακτικά μια σειρά από κάποιους
χαρακτήρες/νούμερα/σύμβολα.

Για να δηλώσουμε μια σειρά από εναλλακτικούς χαρακτήρες/νούμερα σε μια


συγκεκριμένη θέση του μοτίβου χρησιμοποιούμε:
[a-z] για γράμματα από το a ως το z.
[0-9] για νούμερα από το 0 έως και το 9.
[ab89] σημαίνει ότι στη συγκεκριμένη θέση μπορεί να βρίσκεται οποιοσδήποτε από
τους χαρακτήρες/νούμερα (a, b, 8, 9) που συναντάμε μέσα στις αγκύλες.
[^ab89] το ^ μέσα στην αγκύλη, στην αρχή της σημαίνει ότι στη συγκεκριμένη θέση
μπορεί να υπάρχει οποιοσδήποτε χαρακτήρας εκτός από αυτούς που συναντάμε
μέσα στην αγκύλη.
Egrep: λέξεις που σε μια συγκεκριμένη θέση τους μπορεί Α
να υπάρχουν εναλλακτικά μια σειρά από κάποιους
χαρακτήρες/νούμερα/σύμβολα.
Για να δηλώσουμε μια σειρά από εναλλακτικούς χαρακτήρες/νούμερα σε μια
συγκεκριμένη θέση του μοτίβου χρησιμοποιούμε:
[a-z] για γράμματα από το a ως το z.
[A-Z] για κεφαλαία γράμματα από το a ως το z.

Τροποποιείστε το file1 όπως φαίνεται στην εικόνα.


Θέλω να εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με κεφαλαίο
γράμμα και ακολουθεί το 11.
Εκτελώ:
egrep ‘^[A-Z]11’ file1
file1 terminal

A11 larisa
B11 athina A11 larisa
a11 xanthi B11 athina
b11 eleni

Με ποιά εντολή θα εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με
μικρό γράμμα και ακολουθεί το 11;

Egrep: λέξεις που σε μια συγκεκριμένη θέση τους μπορεί Α


να υπάρχουν εναλλακτικά μια σειρά από κάποιους
χαρακτήρες/νούμερα/σύμβολα.

Με ποιά εντολή θα εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με
μικρό γράμμα και ακολουθεί το 11;
egrep ‘^[a-z]11’ file1

file1 terminal

A11 larisa
B11 athina a11 xanthi
a11 xanthi b11 eleni
b11 eleni
Θ
Egrep:
Κάποιες φορές το regular expression θέλουμε να επαναλαμβάνεται περισσότερες από μία
φορές. Για να δηλώσουμε πόσες φορές θέλουμε να επαναλαμβάνεται, χρησιμοποιούμε:
{Χ}, αμέσως μετά από το υπο-μοτίβο, όπου Χ το νούμερο/φορές που θέλουμε να
επαναλαμβάνεται.
{Χ,Υ}, αμέσως μετά από το υπο-μοτίβο, όπου Χ& Υ το νούμερο/φορές που θέλουμε να
επαναλαμβάνεται από Χ έως Υ φορές.

? αμέσως μετά από το υπο-μοτίβο, για επανάληψη 0-1 φορές


* αμέσως μετά από το υπο-μοτίβο, για επανάληψη 0 ή περισσότερες φορές
+ αμέσως μετά από το υπο-μοτίβο, για επανάληψη 1 ή περισσότερες φορές

Το tab δηλώνεται με [^I]

Το κενό δηλώνεται με [[:space:]]

To οποιδήποτε γράμμα ή αριθμός δηλώνεται με \w


Το \w είναι το ίδιο με [A-Za-z0-9]

Το οποιοδήποτε σύμβολο δηλώνεται με την τελεία .

Egrep:
Θέλω να εντοπίσω τις γραμμές που ο κωδικός (1η στήλη) ξεκινάει με δύο κεφαλαία
γράμματα (οποιαδήποτε).

Τροποποιείστε το file1 ανάλογα με την εικόνα.

Εκτελέστε:
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:

Αν δεν χρησιμοποιούσατε το ^ στην παραπάνω εντολή, τι θα συνέβαινε και γιατί;


egrep ‘[A-Z][0-9][a-z]’ file1

Το egrep θα αναγνώριζε το μοτίβο και στην 1η και στην 4η γραμμή.

file1 terminal

A2a11 larisa
B11 athina A2a11 larisa
a11 xanthi 1A2a11 eleni
1A2a11 eleni

Συνδυαστική Άσκηση
• Δημιουργήστε το παρακάτω αρχείο ([Link]) που περιέχει ρυθμιστικές
αλληλεπιδράσεις μεταξύ μεταγραφικών παραγόντων (transcription factors) και γονιδίων στα
οποία συνδέονται (στους προαγωγείς τους) και ρυθμίζουν την έκφρασή τους (target).

• Στην 1η στήλη αναγράφεται το όνομα του μεταγραφικού παράγοντα


• Στην 2η στήλη αναγράφεται το όνομα του γονιδίου στο οποίο συνδέεται ο μεταγραφικός
παράγοντας.
• Στην 3η στήλη αναγράφεται το είδος της ρύθμισης, δηλαδή αν η σύνδεση του μεταγραφικού
παράγονται προάγει ή καταστέλει την έκφραση του γονιδίου
• Στην 4η στήλη αναγράφεται ο ιστός στον οποίο παρατηρήθηκε αυτή η ρυθμιστική
αλληλεπίδραση.

• Είναι δυνατόν μια ρυθμιστική αλληλεπίδραση να έχει εντοπιστεί σε περισσότερους από


έναν ιστούς.

TF_name target_name regulation_type tissue


Gene_1 Gene_2 activate liver
Gene_1 Gene_2 activate brain
Gene_1 Gene_3 activate muscle
Gene_3 Gene_4 suppress muscle
Gene_1 Gene_4 activate liver
Gene_5 Gene_1 activate liver
Συνδυαστική Άσκηση
Βρείτε με τις κατάλληλες εντολές στο αρχείο [Link]:
1. Πόσοι και ποιοί μεταγραφικοί παράγοντες υπάρχουν.
2. Πόσα και ποιά γονίδια στόχοι ρυθμίζονται από μεταγραφικούς παράγοντες.
3. Για πόσους και ποιούς ιστούς υπάρχουν δεδομένα.
4. Πόσα και ποιά γονίδια ρυθμίζει ο μεταγραφικός παράγοντας Gene_1.
5. Πόσες αλληλεπιδράσεις έχουν βρεθεί για το συκώτι (liver).
6. Πόσοι και ποιοί μεταγραφικοί παράγοντες είναι προαγωγείς έκφρασης.
7. Πόσοι και ποιοί μεταγραφικοί παράγοντες αναστέλουν την έκφραση.
8. Ποιοί μεταγραφικοί παράγοντες έχουν βρεθεί και ως γονίδια στόχοι.

TF_name target_name regulation_type tissue


Gene_1 Gene_2 activate liver
Gene_1 Gene_2 activate brain
Gene_1 Gene_3 activate muscle
Gene_3 Gene_4 suppress muscle
Gene_1 Gene_4 activate liver
Gene_5 Gene_1 activate liver

Συνδυαστική Άσκηση – Λύσεις


Βρείτε με τις κατάλληλες εντολές στο αρχείο [Link]:
1. Πόσοι και ποιοί μεταγραφικοί παράγοντες υπάρχουν.
2. Πόσα και ποιά γονίδια στόχοι ρυθμίζονται από μεταγραφικούς παράγοντες.
3. Για πόσους και ποιούς ιστούς υπάρχουν δεδομένα.
awk ‘{print $1}’ [Link] | sort | uniq > [Link]
awk ‘{print $2}’ [Link] | sort | uniq > [Link]
awk ‘{print $4}’ [Link] | sort | uniq > [Link]
wc –l [Link]
wc –l [Link]
wc –l [Link]

TF_name target_name regulation_type tissue


Gene_1 Gene_2 activate liver
Gene_1 Gene_2 activate brain
Gene_1 Gene_3 activate muscle
Gene_3 Gene_4 suppress muscle
Gene_1 Gene_4 activate liver
Gene_5 Gene_1 activate liver
Συνδυαστική Άσκηση – Λύσεις
Βρείτε με τις κατάλληλες εντολές στο αρχείο [Link]:
4. Πόσα και ποιά γονίδια ρυθμίζει ο μεταγραφικός παράγοντας Gene_1.

grep ‘^Gene_1’ [Link] | awk ‘{print $2}’ | sort | uniq > G1_targets.txt
wc -l G1_targets.txt

TF_name target_name regulation_type tissue


Gene_1 Gene_2 activate liver
Gene_1 Gene_2 activate brain
Gene_1 Gene_3 activate muscle
Gene_3 Gene_4 suppress muscle
Gene_1 Gene_4 activate liver
Gene_5 Gene_1 activate liver

Συνδυαστική Άσκηση – Λύσεις


Βρείτε με τις κατάλληλες εντολές στο αρχείο [Link]:
5. Πόσες αλληλεπιδράσεις έχουν βρεθεί για το συκώτι (liver).

grep ‘liver$’ [Link] | wc -l

TF_name target_name regulation_type tissue


Gene_1 Gene_2 activate liver
Gene_1 Gene_2 activate brain
Gene_1 Gene_3 activate muscle
Gene_3 Gene_4 suppress muscle
Gene_1 Gene_4 activate liver
Gene_5 Gene_1 activate liver
Συνδυαστική Άσκηση – Λύσεις
Βρείτε με τις κατάλληλες εντολές στο αρχείο [Link]:
6. Πόσοι και ποιοί μεταγραφικοί παράγοντες είναι προαγωγείς έκφρασης.
7. Πόσοι και ποιοί μεταγραφικοί παράγοντες αναστέλουν την έκφραση.

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

TF_name target_name regulation_type tissue


Gene_1 Gene_2 activate liver
Gene_1 Gene_2 activate brain
Gene_1 Gene_3 activate muscle
Gene_3 Gene_4 suppress muscle
Gene_1 Gene_4 activate liver
Gene_5 Gene_1 activate liver

Συνδυαστική Άσκηση – Λύσεις


Βρείτε με τις κατάλληλες εντολές στο αρχείο [Link]:
8. Ποιοί μεταγραφικοί παράγοντες έχουν βρεθεί και ως γονίδια στόχοι.

comm -12 [Link] [Link]

TF_name target_name regulation_type tissue


Gene_1 Gene_2 activate liver
Gene_1 Gene_2 activate brain
Gene_1 Gene_3 activate muscle
Gene_3 Gene_4 suppress muscle
Gene_1 Gene_4 activate liver
Gene_5 Gene_1 activate liver
Θ
seq: Δημιουργία ακολουθίας αριθμών
Με την εντολή seq δημιουργούμε μια ακολουθία αριθμών από το x έως το y με
προσαύξηση κατά z. Αν δεν ορίσουμε την τιμή της προσαύξησης, τότε
χρησιμοποιείται η τιμή 1.
Μπορούμε να ορίσουμε τι διαχωρίζει το ένα νούμερο από το άλλο με την
παράμετρο –s. Αν δεν ορίσουμε το διαχωριστή, τότε χρησιμοποιείται το \n (νέα
γραμμή).
Επίσης, με την παράμετρο –w μπορούμε να ζητήσουμε όλα τα νούμερα να
έχουν τον ίδιο αριθμό ψηφίων, με την χρήση μηδενικών όποτε χρειαστεί
μπροστά από ένα νούμερο.

Α
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

Συνδυαστική άσκηση – Λύση


Αρχικά πρέπει να δημιουργήσουμε ένα αρχείο [Link] που έχει τους αύξοντες
αριθμούς, με τον ίδιο αριθμό ψηφίων:
seq –w 1 10 > [Link]
Μετά πρέπει να ενώσουμε τα δύο αρχεία, [Link] & file1 γραμμή προς γραμμή
στο νέο αρχείο file2:
paste [Link] file1 > file2

[Link] file1 file2

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 “ab” “AB” <file1> file2

Για να αντικαταστήσουμε όλα τα μικρά με τα αντίστοιχα κεφαλαία τους γράμματα εκτελούμε:

tr “a-z” “A-Z” <file1> file2

Για να διαγράψουμε τους χαρακτήρες m,o,u,s,e από το αρχείο file1 εκτελούμε:

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, όπως substitute, transliterate, print, delete


συμβολίζονται με τα γράμματα s, y, p, d.

Α
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

Για διαγραφή δεν χρειάζεται η παράμετρος -n.


Με την παραπάνω εντολή ΔΕΝ τροποποιείται το 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

Η αντικατάσταση γίνεται με την εντολή substitute που συμβολίζεται με το s.


Τα 3 / είναι οι διαχωριστές μέσα στους οποίους τοποθετούνται τα 2 μοτίβα προς
τροποποίηση, πρώτα το μοτίβο στόχος και μετά το τελικό μοτίβο.
Με την παραπάνω εντολή ΔΕΝ τροποποιείται το file1, αλλά τα περιεχόμενα που
φορτώθηκαν στην εντολή και μετά την τροποποίηση εμφανίζονται στο terminal.

Gene1 sed ‘s/Gene/Protein/’ file1


Gene2 Protein1
Gene3 Protein2
Protein3

Θ
sed: stream editor
Αν το μοτίβο Gene εμφανίζεται περισσότερες από μία φορές σε μια γραμμή, η
προηγούμενη εντολή θα τροποποιήσει μόνο την πρώτη εμφάνιση του μοτίβου.
Αν θέλουμε να τροποποιηθούν όλες οι εμφανίσεις του μοτίβου, πρέπει να
χρησιμοποιήσουμε το g που σημαίνει global, όπως παρακάτω:
sed ‘s/Gene/Protein/g’ file1
A
sed: stream editor
Θέλουμε να εκτυπώσουμε τα νούμερα των γραμμών στις οποίες εμφανίζεται το
μοτίβο Gene2, στο αρχείο file1. Εκτελούμε:
sed -n ‘/Gene2/ =’ file1

Το = το χρησιμοποιούμε για να εκτυπωθεί ο αριθμός της γραμμής στην οποία


βρέθηκε το μοτίβο word1. Επίσης, δεν χρησιμοποιήθηκε το s γιατί δεν
επιθυμούμε να κάνουμε αντικατάσταση.

Παρόμοια εντολή είναι το:


grep –n “Gene2” file1

You might also like