Λειτουργικά Συστήματα - Εργαστήριο 4. 4ο Εργαστήριο

Σχετικά έγγραφα
ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τμήμα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήματα (Εργαστήριο) Διδάσκων: I. Τσακνάκης

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

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

2ο Εργαστήριο. Εισαγωγική στο Λ.Σ. LINUX Γενικές εντολές συστήματος και χρηστών

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

Διαδικασιακός Προγραμματισμός

scanf() scanf() stdin scanf() printf() int float double %lf float

Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Είσοδος/Έξοδος (I/O) Παράδειγμα Δένδρου Συστήματος Αρχείων. Ανακατεύθυνση Εισόδου/Εξόδου και Διασωλήνωση στο Λειτουργικό Σύστημα UNIX

Ανακατεύθυνση Εισόδου/Εξόδου και Διασωλήνωση στο Λειτουργικό Σύστημα UNIX

Διαδικασιακός Προγραμματισμός

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Linux με τη χρήση κονσόλας

Μερικές άλλες χρήσιμες εντολές

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 9o ΕΡΓΑΣΤΗΡΙΟ

Πως δημιουργούμε ένα νέο αρχείο κειμένου; Με τρεις τρόπους:

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 6o ΕΡΓΑΣΤΗΡΙΟ

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Σχολή Θετικών Επιστημών Τμ. Πληροφορικής. Διδάσκων: Ι. Η. Λαγαρής. Εισαγωγή

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Εισαγωγή στην Αριθμητική Ανάλυση

Προγραμματιστικό Περιβάλλον

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Λειτουργικό σύστημα Unix

Βασικές λειτουργίες συστήματος πάνω σε αρχεία δεδομένων. Προγραμματισμός II 1

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2

8 FORTRAN 77/90/95/2003

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τμήμα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήματα (Εργαστήριο) Διδάσκων: I. Τσακνάκης. 8ο Εργαστήριο

Δίκτυα Η/Υ στην Επιχείρηση

Πληροφορική 2. Δομές δεδομένων και αρχείων

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΕΠΛ031 - Εισαγωγή στον Προγραμματισμό

Λιβανός Γιώργος Εξάμηνο 2017Β

Χρήση του διακόπτη /D για αλλαγή της τρέχουσας μονάδας δίσκου πέραν της αλλαγής τρέχοντος καταλόγου για μια μονάδα δίσκου.

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Λεηηνπξγηθά Σπζηήκαηα - Δξγαζηήξην 5. 5ο Εργαζηήριο

Ακρότατα πίνακα, χωρίς min, max, μόνο με pos

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

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Διαχείριση Βάσης Δεδομένων (dbadmin)

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

φροντιστήρια Θέματα Ανάπτυξης Εφαρμογών σε Προγραμματιστικό Περιβάλλον Γ λυκείου Προσανατολισμός Σπουδών Οικονομίας και Πληροφορικής

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Document Scanning System Ιανουάριος, 2014

επιµέλεια Θοδωρής Πιερράτος

Αβδέλαρου Κωνσταντίνα

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 2

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στο Unix

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Εντολές της LOGO (MicroWorlds Pro)

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εγχειρίδιο Λειτουργίας Τράπεζας Χρόνου

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

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Λειτουργικά Συστήματα

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

Λειτουργικά Συστήματα (Λ/Σ)

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

- program p_name(input) - uses crt

2.1. Οι λογαριασµοί χρηστών Σύνδεση (login) και αποσύνδεση (logout)

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

ΕΡΓΑΣΤΗΡΙΟ 2: Unix Tutorial

Αντικειμενοστρεφής Προγραμματισμός

του προγράμματος diagrama_rohs.zip )

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Διαδικασιακός Προγραμματισμός

Transcript:

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τμήμα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήματα (Εργαστήριο) Διδάσκων: I. Τσακνάκης 4ο Εργαστήριο Πρότυπα αρχεία εισόδου/εξόδου Τελεστές ανακατεύθυνσης Βασικές εντολές διαχείρισης περιεχομένων αρχείων 1

Standard streams πρότυπα αρχεία εισόδου/εξόδου Στο Unix, καθώς και σε ορισμένες γλώσσες προγραμματισμού, τα standard streams είναι προσυνδεδεμένα κανάλια (αρχεία) εισόδου και εξόδου ανάμεσα σε μία εφαρμογή, που ξεκινά την εκτέλεσή της, και στο περιβάλλον της. Αυτά τα τρία κανάλια εισόδου/εξόδου ονομάζονται standard input (stdin), standard utput (stdut) και standard errr (stderr). Στα περισσότερα, προγενέστερα του UNIX, λειτουργικά συστήματα, τα προγράμματα έπρεπε να συνδεθούν ρητώς με την κατάλληλη είσοδο και έξοδο δεδομένων. Σε πολλά από αυτά τα συστήματα, αυτό θα μπορούσε να είναι μία σκληρή πρόκληση προγραμματισμού, λόγω εξειδικευμένων ανά λειτουργικό περιπλοκών, όπως η ανάκτηση των ρυθμίσεων του περιβάλλοντος ελέγχου, η πρόσβαση στον τοπικό πίνακα αρχείων, ο καθορισμός του κατάλληλου data set και ο ορθός χειρισμός μίας συσκευής ανάγνωσης καρτών, μαγνητικής ταινίας, δίσκου, εκτύπωσης γραμμής, διάτρησης καρτών ή διαδραστικού τερματικού. Το UNIX εισήγαγε ορισμένα πρωτοποριακά πλεονεκτήματα, ένα εκ των οποίων ήταν να παρέχει αφηρημένες (γενικές) συσκευές, πράγμα που καταργεί την ανάγκη του κάθε προγράμματος (εφαρμογής) να γνωρίζει ή να ενδιαφέρεται για το είδος των συσκευών με τις οποίες επικοινωνεί. Τα παλαιότερα λειτουργικά συστήματα επέβαλλαν στον προγραμματιστή μία δομή για κάθε εγγραφή, τον έλεγχο της συσκευής και πολύ συχνά data semantics. Το UNIX εξάλειψε αυτή την πολυπλοκότητα εισάγοντας την έννοια της ροής δεδομένων, δηλαδή μια διατεταγμένη σειρά από bytes δεδομένων που μπορούν να διαβαστούν μέχρι το τέλος του αρχείου. Ένα πρόγραμμα μπορεί επίσης να γράψει bytes δεδομένων όποτε θελήσει και δε χρειάζεται να δηλώσει πόσα bytes δεδομένων θα εγγραφούν (πράγμα που είναι δύσκολο να υπολογιστεί), ή πώς θα ομαδοποιηθούν. Μια άλλη σημαντική εξέλιξη που εισήγαγε το UNIX ήταν να συνδέσει αυτόματα την είσοδο και την έξοδο από προεπιλογή. Το πρόγραμμα (και ο προγραμματιστής) δεν χρειάζεται να κάνει οτιδήποτε για να καθορίσει την είσοδο και την έξοδο όταν ακολουθείται η τυπική αρχιτεκτονική είσοδος δεδομένων επεξεργασία έξοδος δεδομένων. Για να επιτευχθεί αυτή η σύνδεση, με την είσοδο και την έξοδο των δεδομένων, στα προηγούμενα λειτουργικά συστήματα απαιτούνταν συνήθως η χρήση μίας γλώσσας ελέγχου εργασίας (jb cntrl), η οποία συχνά ήταν ιδιαίτερα σύνθετη. Από τη στιγμή που το UNIX αποφάσισε να παρέχει πρότυπα αρχεία εισόδου/εξόδου, το runtime περιβάλλον της UNIX C ήταν υποχρεωμένο να υποστηρίξει κι αυτό τη δυνατότητα αυτή. Ως αποτέλεσμα, τα περισσότερα runtime περιβάλλοντα της C (και οι απόγονοι της C), ανεξάρτητα από το λειτουργικό σύστημα, παρέχουν ισοδύναμες λειτουργίες. 2

stdin Standard input είναι δεδομένα (συχνά σε μορφή κειμένου) που δίνονται ως είσοδος σε ένα πρόγραμμα. Το πρόγραμμα ζητάει τη μεταφορά των δεδομένων (από την είσοδο προς αυτό) με τη χρήση της λειτουργίας read (ανάγνωση). Να σημειωθεί πως δεν χρειάζονται όλα τα προγράμματα κάποια είσοδο. Για παράδειγμα η εντολή ls (η κάθε εντολή είναι ένα πρόγραμμα) εκτελεί τη λειτουργία της χωρίς να δέχεται κανένα δεδομένο από την είσοδο. Εκτός κι αν ζητηθεί κάποια ανακατεύθυνση, η είσοδος των δεδομένων αναμένεται από το πληκτρολόγιο το οποίο ξεκίνησε το πρόγραμμα. Το file descriptr (αριθμός - ταυτότητα που αντιστοιχεί σε κάθε ανοικτό αρχείο) για το πρότυπο αρχείο εισόδου είναι το 0 (μηδέν), στη C αντιστοιχεί στη μεταβλητή FILE* stdin της βιβλιοθήκης <stdi.h> ενώ στη C++ αντιστοιχεί στο μεταβλητή std::cin της βιβλιοθήκης <istream> stdut Standard utput είναι ένα αρχείο ροή (stream) όπου το πρόγραμμα γράφει τα δεδομένα εξόδου. Το πρόγραμμα ζητάει τη μεταφορά των δεδομένων (από αυτό προς την έξοδο) με τη χρήση της λειτουργίας write (εγγραφή). Να σημειωθεί πως δεν παράγουν δεδομένα εξόδου όλα τα προγράμματα. Για παράδειγμα η εντολή mv που μετονομάζει ή/και μετακινεί αρχεία δεν παράγει κανένα μήνυμα όταν εκτελείται επιτυχημένα. Εκτός κι αν ζητηθεί κάποια ανακατεύθυνση, η πρότυπη έξοδος των δεδομένων είναι το τερματικό κειμένου (κοινώς η οθόνη) το οποίο αρχικοποίησε το πρόγραμμα. Το file descriptr για το πρότυπο αρχείο εξόδου είναι το 1 (ένα), στη C αντιστοιχεί στη μεταβλητή FILE* stdut της βιβλιοθήκης <stdi.h> ενώ στη C++ αντιστοιχεί στο μεταβλητή std::cut της βιβλιοθήκης <istream>. stderr Standard errr είναι ένα ακόμα αρχείο ροή (stream) εξόδου που χρησιμοποιείται από τα προγράμματα για να εξάγουν μηνύματα λάθους ή διαγνωστικά μηνύματα. Είναι ένα αρχείο ροή ανεξάρτητο από το standard utput και μπορεί να ανακατευθυνθεί ανεξάρτητα από αυτό. Εκτός κι αν ζητηθεί κάποια ανακατεύθυνση, η πρότυπη έξοδος των μηνυμάτων λάθους είναι συνήθως το τερματικό κειμένου (κοινώς η οθόνη) το οποίο αρχικοποίησε το πρόγραμμα. Το file descriptr για το πρότυπο αρχείο εξόδου είναι το 2 (δύο), στη C αντιστοιχεί στη μεταβλητή FILE* stderr της βιβλιοθήκης <stdi.h> ενώ στη C++ αντιστοιχεί στις μεταβλητές std::cerr και std::clg της βιβλιοθήκης <istream>. 3

Τελεστές ανακατεύθυνσης Τελεστές ανακατεύθυνσης ονομάζονται οι τελεστές που υποχρεώνουν την εφαρμογή στην οποία εφαρμόζονται να εκτρέψει τα μηνύματά της από τα προκαθορισμένα αρχεία εισόδου/εξόδου σε τρίτα αρχεία. Ο τελεστής ανακατεύθυνσης > Στη γενική περίπτωση ο τελεστής > εκτρέπει τα μηνύματα που είχαν ως προορισμό το αρχείο stdut, στο αρχείο που ακολουθεί μετά τον τελεστή. Αν το αρχείο, το οποίο ακολουθεί τον τελεστή και στο οποίο εκτρέπονται τα μηνύματα, υπάρχει, τότε το περιεχόμενό του διαγράφεται προτού αποθηκευθούν σε αυτό τα μηνύματα της εντολής. Στην περίπτωση που δεν υπάρχει τότε δημιουργείται. Παράδειγμα: ls -l > DirListing Εκτροπή των μηνυμάτων της εντολής ls -l από το stdut στο αρχείο DirListing. Αν το αρχείο DirListing υπάρχει τότε διαγράφονται όλα τα περιεχόμενά του και μετά αποθηκεύονται σε αυτό όλα τα μηνύματα προς το stdut της εντολής ls -l. Αν το αρχείο DirListing δεν υπάρχει τότε δημιουργείται. Στο τέλος της εκτέλεσης της εντολής το αρχείο DirListing, που υπάρχει (ή δημιουργείται) στον ίδιο κατάλογο στον οποίο εκτελείται η εντολή, περιέχει σε μορφή κειμένου όλα τα μηνύματα που θα εμφάνιζε στην οθόνη του συστήματος η εκτέλεση της εντολής ls -l. Για την εκτροπή των μηνυμάτων λάθους στο ίδιο αρχείο στο οποίο γίνεται η εκτροπή των μηνυμάτων του stdut θα πρέπει στο τέλος της εντολής να συμπληρωθεί 2>&1 Παράδειγμα: ls -l ~bb/dcuments > BbDcumentsListing 2>&1 Τα μηνύματα με προορισμό το stdut της εντολής ls -l ~bb/dcuments, που δείχνει τα περιεχόμενα του φακέλου Dcuments κάτω από τον αρχικό φάκελο του χρήστη bb ανακατευθύνονται (κι άρα αποθηκεύονται) στο αρχείο BbDcumentsListing. Στο ίδιο αρχείο θα αποθηκευθούν κι όλα τα μηνύματα λάθους που θα πιθανώς θα παράγει η εκτέλεση της εντολής (πχ ότι ο χρήστης δεν έχει τα κατάλληλα δικαιώματα να δει τα περιεχόμενα του φακέλου αυτού). Ο τελεστής ανακατεύθυνσης >> Στη γενική περίπτωση ο τελεστής >> εκτρέπει τα μηνύματα που είχαν ως προορισμό το αρχείο stdut, στο αρχείο που ακολουθεί μετά τον τελεστή. Αν το αρχείο, το οποίο ακολουθεί τον τελεστή και στο οποίο εκτρέπονται τα μηνύματα, υπάρχει, τότε τα μηνύματα συμπληρώνονται στο τέλος του αρχείου. Στην περίπτωση που δεν υπάρχει τότε δημιουργείται. 4

Παράδειγμα: pwd >> MyCurrentLcatin Το μήνυμα της εντολής pwd, δηλαδή το απόλυτο path για τον φάκελο στον οποίο βρίσκεται ο χρήστης όταν εκτελείται η εντολή, αποθηκεύεται στο αρχείο MyCurrentLcatin. Αν το αρχείο υπάρχει τότε το μήνυμα γράφεται στο τέλος του αρχείου, μετά από όλα τα δεδομένα που ήδη περιέχει. Αν δεν υπάρχει τότε δημιουργείται, ώστε να αποθηκευθεί μέσα σε αυτό το απόλυτο path που επιστρέφει η κλήση της εντολής pwd. Ο τελεστής ανακατεύθυνσης < Ο τελεστής < υποχρεώνει την εντολή στην οποία εφαρμόζεται να διαβάσει ως είσοδο το περιεχόμενο του αρχείου που τον ακολουθεί, αντί του αρχείου stdin (δηλαδή το πληκτρολόγιο). Παράδειγμα: $ mail bb < data.dat Θα εκτελεστεί το πρόγραμμα mail με παραλήπτη τον χρήστη bb και τα δεδομένα θα προέρχονται οχι μετά από εισαγωγή από το πληκτρολόγιο αλλά αυτόματα από το αρχείο data.dat. Για τη διακοπή της ροής του προγράμματος πατήστε το πλήκτρο break. Ο τελεστής ανακατεύθυνσης Ο τελεστής χρησιμοποιείται για την εκτροπή των μηνυμάτων μίας εντολής από το stdut στ stdin της εντολής που ακολουθεί. Κοινώς τα αποτελέσματα της εντολής στα αριστερά του τελεστή χρησιμοποιούνται σαν το τελευταίο όρισμα της εντολής στα δεξιά του τελεστή Παράδειγμα: cat /tmp/myfile srt Γενικά η εντολή cat εμφανίζει το περιεχόμενο των αρχείων που δέχεται ως όρισμα. Στη συγκεκριμένη περίπτωση, τα μηνύματα της εντολής cat /tmp/myfile με προορισμό το stdut, δηλαδή το περιεχόμενο του αρχείου myfile κάτω από τον φάκελο tmp του rt, δίνεται ως παράμετρος στην εντολή srt, η οποία ταξινομεί το περιεχόμενο αρχείων που δέχεται ως ορίσματα. Αυτό έχει ως αποτέλεσμα να εμφανιστεί το περιεχόμενο του αρχείου myfile στην οθόνη ταξινομημένο ανά γραμμή. 5

Βασικές εντολές διαχείρισης περιεχομένων αρχείων xargs Η εντολή xargs είναι μία αρκετά σύνθετη εντολή. Παίρνει ως είσοδο τα μηνύματα του αρχείου stdin, τα χωρίζει σε τμήματα κάθε φορά που συναντά τον χαρακτήρα ' ' (κενό), ή τον χαρακτήρα cr (νέα γραμμή) και για κάθε τμήμα εκτελεί την εντολή που παίρνει ως παράμετρο βάζοντας σε αυτήν το τμήμα ως παράμετρο. Παράδειγμα: ls *TDelete* xargs rm -r H xargs διαβάζει τα μηνύματα του stdin. Στο stdin έχουν αποθηκευθεί (λόγω του τελεστή ανακατεύθυνσης που προηγείται) τα μηνύματα προς το stdut της εντολής ls *TDelete*, δηλαδή τα ονόματα των αρχείων του τρέχων καταλόγου που στο όνομά τους περιέχουν το string TDelete. H xargs θα πάρει τη λίστα αυτή, θα την χωρίσει σε τμήματα με βάση τον χαρακτήρα κενό. Επομένως κάθε τμήμα είναι ένα όνομα αρχείου (αυτό ισχύει μόνο στην περίπτωση που κανένα από τα αρχεία του φακέλου δεν περιέχει κενό στο όνομά του). Για κάθε τμήμα εκτελεί την εντολή rm -r τμήμα_x, κι αφού κάθε τμήμα είναι ένα όνομα αρχείου, τότε η εντολή αυτή θα σβήσει όλα τα αρχεία που το όνομά του περιέχει το string TDelete και είναι κάτω από τον τρέχων κατάλογο. Τι κάνει αυτή η εντολή; ls b* xargs du ech Γράφει το μήνυμα που παίρνει ως όρισμα στο πρότυπο αρχείο εξόδου (stdut). Παράδειγμα: ech Hell Wrld Γράφει το μήνυμα Hell Wrld στο stdut (εμφανίζεται στην οθόνη του τερματικού). cat Στο Unix/Linux υπάρχουν πολλές εντολές με τις οποίες μπορούμε να δούμε τα περιεχόμενα ενός ή περισσότερων αρχείων. Η εντολή cat εμφανίζει τα περιεχόμενα των αρχείων σειριακά, χωρίς κανένα διαχωρισμό μεταξύ τους. cat [ptins] filenames filenames: Λίστα ονομάτων αρχείων χωρισμένα μεταξύ τους με κενό. Παράδειγμα: cat /etc/prfile /etc/passwd Εμφάνιση των περιεχομένων των αρχείων prfile και passwd κάτω από τον κατάλογο etc του rt. 6

mre H εντολή mre εμφανίζει τα περιεχόμενα των αρχείων σειριακά, με διαχωρισμό μεταξύ τους και με σελιδοποίηση (αν το περιεχόμενο των αρχείων ξεπερνάει σε μέγεθος το παράθυρο του τερματικού, τότε γεμίζει μία οθόνη και σταματάει περιμένοντας από τον χρήστη να προχωρήσει μπροστά. Μπορούμε να προχωρήσουμε μπροστά μόνο είτε με space (προχωράει μπροστά τόσες γραμμές όσες το μέγεθος της οθόνης) είτε με cr (enter) (προχωράει μπροστά μία γραμμή) είτε με άλλες επιλογές (δείτε man mre για περισσότερες πληροφορίες). mre [ptins] filenames filenames: Λίστα ονομάτων αρχείων χωρισμένα μεταξύ τους με κενό. Παράδειγμα: mre /etc/prfile /etc/passwd εμφάνιση των αρχείων prfile και passwd που βρίσκονται κάτω από τον φάκελο etc. less Η εντολή less εμφανίζει τα περιεχόμενα των αρχείων σειριακά, με διαχωρισμό μεταξύ τους και με σελιδοποίηση. Για να εμφανίσουμε το περιεχόμενο του επόμενου αρχείου χρησιμοποιούμε τον συνδυασμό :n ενώ για το περιεχόμενο του προηγούμενου αρχείου τον συνδυασμό :p. Μπορούμε να προχωρήσουμε μπροστά και πίσω με επιλογές όπως space ή f (προχωράει μπροστά τόσες γραμμές όσες το μέγεθος της οθόνης) και b (μετακινείται πίσω τόσες γραμμές όσες το μέγεθος της οθόνης). Δείτε man less για περισσότερες πληροφορίες. less [ptins] filenames filenames: Λίστα ονομάτων αρχείων χωρισμένα μεταξύ τους με κενό. Παράδειγμα: less /etc/prfile /etc/passwd εμφάνιση των αρχείων prfile και passwd που βρίσκονται κάτω από τον φάκελο etc. head Η εντολή head χρησιμοποιείται για να εμφανίσει τις πρώτες γραμμές ενός αρχείου. Η head εμφανίζει 10 πρώτες γραμμές, εκτός αν γίνει χρήση του διακόπτη n. Αν ο αριθμός που ακολουθεί τον διακόπτη n είναι θετικός τότε εμφανίζει τόσες γραμμές του αρχείου όσες κι ο αριθμός. Αν όμως ο αριθμός είναι αρνητικός τότε εμφανίζει όλες τις γραμμές του αρχείου εκτός από αυτόν τον αριθμό των τελευταίων γραμμών του. head [ptins] filename Παράδειγμα 1: head n 30 /etc/passwd Εμφάνιση των 30 πρώτων γραμμών του αρχείου passwd. Παράδειγμα 2: head n -3 /etc/grup Εμφάνιση όλων γραμμών του αρχείου grup εκτός από τις 3 τελευταίες 7

tail Η εντολή tail χρησιμοποιείτε για να εμφανίσει τις τελευταίες γραμμές ενός αρχείου. Η tail εμφανίζει 10 τελευταίες γραμμές, εκτός αν χρησιμοποιήσετε τον διακόπτη n. Η εντολή tail συχνά χρησιμοποιείται για να βλέπουμε τις τελευταίες εγγραφές ενός αρχείου καταγραφής (lg file). Για να βλέπουμε συνεχώς τις τελευταίες εγγραφές ενός αρχείου, χρησιμοποιούμε τον διακόπτη f. tail [ptins] filename Παράδειγμα 1: tail n 5 /etc/passwd Eμφάνιση των τελευταίων 5 γραμμών του αρχείου passwd. Παράδειγμα 2: tail n +4 /etc/passwd Εμφάνιση όλων των γραμμών του αρχείου passwd από την τέταρτη γραμμή και μετά. Παράδειγμα 3: tail f /var/lg/messages. Συνεχής εμφάνιση των τελευταίων εγγραφών στο αρχείο messages. find Η εντολή find χρησιμοποιείται για την ανεύρεση αρχείων και καταλόγων που ταιριάζουν με το επιθυμητό όνομα αρχείου ή άλλα κριτήρια. Η απλούστερη δυνατή σύνταξη της εντολής find θα δώσει μία λίστα των αρχείων που υπάρχουν σε ένα κατάλογο και στους υποκαταλόγους του. find [path...] [expressin] path: Λίστα από φακέλους χωρισμένους με κενό μεταξύ τους μέσα στους οποίους γίνεται η αναζήτηση. expressin: Παραστάσεις από ptins (επιλογές), tests και actins (ενέργειες) που συνδέονται μεταξύ τους με τελεστές. Αν δεν υπάρχει κάποιος τελεστής τότε εννοείται ο τελεστής and. Μερικοί χρήσιμοι διακόπτες της εντολής find είναι οι ακόλουθοι: - name pattern, Bρίσκει αρχεία και φακέλους που το όνομά του ακολουθεί το pattern. - iname pattern, Βρίσκει αρχεία και φακέλους που το όνομά τους ακολουθεί το pattern. Η αναζήτηση αγνοεί το case (case insensitive). - amin [+n -n n], Βρίσκει αρχεία στα οποία έγινε πρόσβαση πριν από περισσότερα από n λεπτά (λιγότερα από n λεπτά/ακριβώς πριν από n λεπτά). - atime [+n -n n], Βρίσκει αρχεία στα οποία έγινε πρόσβαση πριν από περισσότερες από n ημέρες (λιγότερες από n ημέρες/ακριβώς πριν από n ημέρες). - mmin [+n -n n], Βρίσκει αρχεία που τροποποιήθηκαν πριν από περισσότερα από n λεπτά (λιγότερα από n λεπτά/ακριβώς πριν από n λεπτά). 8

- mtime [+n -n n], Βρίσκει αρχεία που τροποποιήθηκαν πριν από περισσότερες από n ημέρες (λιγότερες από n ημέρες/ακριβώς πριν από n ημέρες). - uname [user user ID], Βρίσκει αρχεία που ανήκουν στο χρήστη user ή στο χρήστη με το συγκεκριμένο user ID. - grup [gname grup ID], Βρίσκει αρχεία που ανήκουν στην ομάδα με το όνομα gname ή με το συγκεκριμένο grup ID. - type filetype, Αναζητά αρχεία του συγκεκριμένου τύπου. T filetype μπορεί να πάρει τις παρακάτω τιμές: bblck (buffered) special ccharacter (unbuffered) special ddirectry pnamed pipe (FIFO) fregular file lsymblic link sscket - size [+n -n n] [spaceunit], Αναζητά αρχεία μεγέθους μεγαλύτερου (μικρότερου ή ίσου) με το μέγεθος που καθορίζει ο χρήστης. Το spaceunit μπορεί να πάρει μία από της παρακάτω τιμές: c για bytes k για Kilbytes M για Megabytes G για Gigabytes Αναλυτικότερες πληροφοριές για τους διακόπτες και τις χρήσεις της εντολής find στο manual της εντολής (man find). Παράδειγμα 1: find ~ -iname Passwd Αναζήτηση αρχείων κάτω από το hme directry που το όνομά τους είναι passwd ανεξάρτητα από το case (Πχ PASSWD, passwd, PASSwd, PassWd) Παράδειγμα 2: find name "*file" xargs cat >> myfile Αναζήτηση αρχείων κάτω από τον τρέχοντα φάκελο που το όνομά τους καταλήγει σε file. Εκτύπωση των περιεχομένων αυτών των αρχείων και αποθήκευσή τους στο αρχείο myfile. Παράδειγμα 3: find ~ size +10k Αναζήτηση αρχείων που το μέγεθός τους είναι μεγαλύτερο από 10Kbytes και που βρίσκονται κάτω από το hme directry. Παράδειγμα 4: find / -grup Ubuntu Αναζήτηση όλων των αρχείων κάτω από το rt που ανήκουν στο grup Ubuntu. 9

Παράδειγμα 5: find ~ -type f -size -10c -ctime -5 Συνδυασμός διακοπτών. Αναζήτηση κάτω από τον αρχικό φάκελο χρήστη όλων των αρχείων που είναι τύπου κανονικό αρχείο, με μέγεθος μικρότερο ή ίσο με 10 bytes και δημιουργήθηκαν τις τελευταίες 5 ημέρες. grep Aναζήτηση συγκεκριμένου pattern μέσα σε αρχεία κειμένου. Η προκαθορισμένη συμπεριφορά της εντολής grep είναι να τυπώνει τις γραμμές του αρχείου που περιέχουν το pattern. grep [ptins] [pattern] filename Αν στη θέση του pattern χρησιμοποιηθεί ο χαρακτήρας. (τελεία) τότε σημαίνει οποιαδήποτε λέξη. Οι σημαντικότεροι διακόπτες της grep είναι οι παρακάτω: -i--ignre-case, Η αναζήτηση γίνεται αγνοόντας το case Παράδειγμα 1: grep -i UBUNTU /etc/passwd Αναζήτηση της λέξης UBUNTU αγνοώντας το case στο αρχείο passwd. Επιστρέφει όλες τις γραμμές του αρχείου που περιέχουν τη λέξη είτε με κεφαλαίους χαρακτήρες, είτε με πεζούς, είτε με συνδυασμό τους. -v--invert-match, Εμφανίζει τις γραμμές που δεν περιέχουν το pattern Παράδειγμα 2: grep -v ubuntu /etc/passwd Αναζήτηση της λέξης ubuntu στο αρχείο passwd. Επιστρέφει όλες τις γραμμές του αρχείου που ΔΕΝ περιέχουν τη λέξη. -w--wrd-regexp, Εμφανίζει της γραμμές που περιέχουν το pattern ως ξεχωριστή λέξη Παράδειγμα 3: grep -w buntu /etc/passwd Αναζήτηση ολόκληρης της λέξης buntu στο αρχείο passwd και εμφάνιση των γραμμών του αρχείου που την περιέχουν. -c--cunt, Εμφανίζει τον αριθμό των γραμμών που περιέχουν το pattern Παράδειγμα 4: grep -c ubuntu /etc/passwd Αναζήτηση της λέξης ubuntu στο αρχείο passwd. Επιστρέφει ΤΟΝ ΑΡΙΘΜΟ των γραμμών του αρχείου που περιέχουν τη λέξη. -l--files-with-matches, Αναζητά και εμφανίζει τα αρχεία που περιέχουν το pattern Παράδειγμα 5: grep -l ubuntu /etc/* Αναζήτηση της λέξης ubuntu σε όλα τα αρχεία κάτω από τον φάκελο etc. Εμφανίζει μόνο τα ονόματα των αρχείων που περιέχουν τη λέξη. Αν δεν είχε χρησιμοποιηθεί η επιλογή l τότε δίπλα από το όνομα του αρχείου θα εμφάνιζε και την γραμμή που περιέχει τη λέξη. 10

split Η split χωρίζει ένα αρχείο σε μικρότερα ανάλογα με το μέγεθος που θα οριστεί. Αν δεν δοθεί μέγεθος τότε χωρίζει το αρχείο ανά 1000 γραμμές. Τα νέα αρχεία που δημιουργούνται ονομάζονται με τη σειρά xaa xab xac xad κ.ο.κ split [ptins] [input [prefix]] Παράδειγμα 1: split /var/lg/messages Διάσπαση του αρχείου messages σε αρχεία μεγέθους 1000 γραμμών το κάθε ένα. Παράδειγμα 2: split -l 3 /etc/passwd Διάσπαση του αρχείου passwd σε αρχεία μεγέθους 3 γραμμών το κάθε ένα Παράδειγμα 3: split /var/lg/messages smessage Διάσπαση του αρχείου messages σε αρχεία μεγέθους 1000 γραμμών το κάθε ένα. Τα αρχεία που δημιουργούνται έχουν ονόματα smessageaa, smessageab, smessageac κ.ο.κ. cut Εμφανίζει συγκεκριμένο τμήμα κάθε γραμμής από το αρχείο cut [ptins] [file] Παράδειγμα 1: cut -c 4-10 /etc/passwd Εμφανίζει από τον 4ο έως τον 10ο χαρακτήρα κάθε γραμμής Παράδειγμα 2: cut -d: -f 5 /etc/passwd Εμφανίζει το 5ο πεδίο κάθε γραμμής. Τα πεδία ορίζονται κάθε φορά που συναντάται ο χαρακτήρας : srt Ταξινομεί την είσοδο αλφαβητικά. Η προκαθορισμένη ταξινόμηση είναι αλφαριθμητική ενώ υπάρχει δυνατότητα και για αριθμητική ταξινόμηση. srt [ptins] [file] -ο: δημιουργείται ένα νέο αρχείο με τα αποτελέσματα της ταξινόμησης. -n: χρησιμοποιείται για αρθμητική ταξινόμηση. Παράδειγμα 1: srt /etc/passwd Αλφαριθμητική ταξινόμηση του αρχείου passwd. Παράδειγμα 2: srt - passwd2 /etc/passwd Δημιουργεί το αρχείο passwd2 που περιέχει τα περιεχόμενα του αρχείου passwd ταξινομημένα αλφαριθμητικά. Παράδειγμα 3: 11

cut -d: -f3 /etc/passwd >passwd2 srt -n passwd2 Δημιουργία του αρχείου passwd2 που περιέχει το 3ο πεδίο (σπάζοντας κάθε γραμμή με βάση τον χαρακτήρα :) κάθε γραμμής του αρχείου passwd (το 3ο πεδίο του συγκεκριμένου αρχείου είναι ένας αριθμός). Κατόπιν αριθμητική ταξινόμηση του αρχείου passwd2. Η εντολή uniq Απόρριψη όλων εκτός από μίας των διαδοχικά ίδιων γραμμών της εισόδου και εμφάνισή τους στην έξοδο. uniq [ptins] [input [utput]] Παράδειγμα: cut -d: -f3 /etc/passwd >> passwd2 srt -n passwd2 > spasswd2 uniq spasswd2 uspasswd2 Το αρχείο passwd2 που δημιουργείται περίεχει μόνο αριθμητικές τιμές. Το spasswd2 δημιουργείται να περιέχει τις αριθμητικές τιμές τους passwd2 ταξινομημένες αριθμητικά. Με την εντολή uniq δημιουργείται το αρχείο uspasswd2 που περιέχει τις μοναδικές αριθμητικές τιμές του spasswd2. 12