1 Γενική Περιγραφή του Unix - Βασικές Έννοιες 1.1 To λειτουργικό σύστημα Τo Unix είναι ένα λειτουργικό σύστημα γενικής χρήσης, πολυχρηστικό (multi-user) και διεργασιακό (multitasking). Αυτό σημαίνει ότι αντίθετα με τα συστήματα ενός χρήστη (MS- DOS, Windows), πολλοί χρήστες μπορούν να συνδεθούν ταυτόχρονα με το σύστημα και να εκτελέσουν διάφορες εργασίες ταυτόχρονα. Το Unix είναι σε θέση να καταφέρει κάτι τέτοιο διότι είναι ένα σύστημα διαμοιρασμού χρόνου (timesharing) που σημαίνει ότι ο χρόνος του επεξεργαστή του συστήματος μοιράζεται ανάμεσα στις διεργασίες των χρηστών που είναι συνδεδεμένοι με αυτό, εκτελώντας περιοδικά κάθε μία από αυτές για μικρό χρονικό διάστημα, δίνοντας έτσι την εντύπωση ότι εκτελεί πολλές διεργασίες ταυτόχρονα. Η δομή του Unix ακολουθεί τη στρωματοποιημένη μορφή που περιγράφηκε για τα λειτουργικά συστήματα σε προηγούμενο κεφάλαιο, και αναλυτικότερα έχει ως εξής: Χρήστες Βασικά βοηθητικά προγράμματα (φλοιοί, κειμενογράφοι, μεταγλωττιστές κ.λ.π.) Άλλα στρώματα (διαχείριση διεργασιών, διαχείριση μνήμης, είσοδος έξοδος, σύστημα αρχείων) Πυρήνας (Kernel) Υλικό (CPU, μνήμη, δίσκοι, τερματικά) Σχήμα 1: Δομή Φλοιών Unix Ο πυρήνας είναι το πρώτο κομμάτι του Unix που φορτώνεται κατά την εκκίνηση του συστήματος και μένει στη μνήμη για όσο διαρκεί η λειτουργία του. Ο χρήστης επικοινωνεί με το λειτουργικό σύστημα μέσω του φλοιού (shell) που λέγεται αλλιώς και διερμηνευτής εντολών (commands interpreter). Ένας χρήστης Unix μπορεί να διαλέξει ανάμεσα σε διάφορους φλοιούς, εκ των οποίο οι σημαντικότεροι δύο είναι ο Bourne Shell και ο C-Shell. Ο φλοιός εκτός από διερμηνευτής εντολών είναι και μία γλώσσα προγραμματισμού που δέχεται μεταβλητές και διαθέτει εντολές προγραμματισμού. 1
1.2 Το υπολογιστικό σύστημα Ένα υπολογιστικό σύστημα βασισμένο στο Unix αποτελείται συνήθως από έναν κεντρικό υπολογιστή που είναι συνδεδεμένος με τερματικά, εκτυπωτές και άλλες περιφερειακές συσκευές όπως φαίνεται στο ακόλουθο σχήμα: Εικόνα 1: Υπολογιστικό σύστημα βασισμένο σε Unix Πρέπει να γίνει κατανοητό ότι η διάταξη αυτή διαφέρει από ένα δίκτυο στο εξής: Ένα δίκτυο είναι ένα σύνολο αυτόνομων υπολογιστών που επικοινωνούν μεταξύ τους. Εδώ έχουμε μόνο έναν στο κεντρικό υπολογιστή στον οποίο συνδέονται τα τερματικά. Τα τερματικά χρησιμοποιούνται μόνο σαν πληκτρολόγιο και οθόνη, ενώ όλη η δουλειά γίνεται από τον τοπικό υπολογιστή. Ακόμη και στην περίπτωση που τα τερματικά είναι PC, δεν χρησιμοποιείται η υπολογιστική ισχύς τους, ούτε οι οδηγοί δίσκων και δισκετών ή οι εκτυπωτές που μπορεί αυτοί να διαθέτουν. Οι χρήστες μπορούν να συνδεθούν μέσω των τερματικών στον κεντρικό υπολογιστή (ο οποίος τρέχει το Unix) και να του ζητήσουν να εκτελέσει κάποιες εργασίες τους. Στο τέλος θα πρέπει να αποσυνδεθούν από το τερματικό, ελευθερώνοντάς το για κάποιο άλλο χρήστη. 2
1.3 Εισαγωγή στο Σύστημα Για να έχετε πρόσβαση στις λειτουργίες του linux θα πρέπει να δώσετε τα εξής: Username : Επιλέγω χρήστη (γραφικό περιβάλλον) πχ studen Password : 12345 (στο SLAX-LINUX εισάγουμε root και μετά toor και κατόπιν startx για να φορτώσουμε το γραφικό περιβάλλον). Σε ένα σύστημα Unix μπορούν να συνδεθούν και να δουλέψουν πολλοί χρήστες. Το σύστημα αναγνωρίζει τον καθένα από αυτούς τους χρήστες με ένα μοναδικό όνομα που λέγεται κωδικός εισόδου (login name). Κάθε φορά που ένας χρήστης ζητά να συνδεθεί με το σύστημα θα πρέπει να δώσει τον κωδικό εισόδου του. Επιπρόσθετα θα πρέπει να δώσει και μία συνθηματική λέξη (password) την οποία γνωρίζει μόνο αυτός και που πιστοποιεί ότι όντως είναι ο χρήστης που ισχυρίζεται ότι είναι. Απ' όλους τους χρήστες του συστήματος υπάρχει ένας (αυτός με κωδικό εισόδου root) ο οποίος είναι υπεύθυνος για την διαχείριση και την καλή λειτουργία του συστήματος. Σε αυτόν απευθύνεται ένας νέος χρήστης που θέλει να αποκτήσει κωδικό εισόδου στο σύστημα. Η διαδικασία σύνδεσης έχει ως εξής: Τα ανοιχτά τερματικά του υπολογιστή εμφανίζουν το μήνυμα Login: προτρέποντας το χρήστη να δώσει τον κωδικό εισόδου του στο σύστημα. Αφού ο χρήστης πληκτρολογήσει τον κωδικό εισόδου του το τερματικό ζητά τη συνθηματική λέξη password: Ο χρήστης πληκτρολογεί τη συνθηματική του λέξη (η οποία για λόγους ασφαλείας δεν φαίνεται) και στη συνέχεια αυτή κωδικοποιείται και συγκρίνεται με το αρχείο των κωδικοποιημένων λέξεων των χρηστών που υπάρχει στο σύστημα. Αν ταιριάζει τότε η σύνδεση θεωρείται επιτυχής, εμφανίζεται ένα σύντομο μήνυμα υποδοχής και στη συνέχεια το σήμα προτροπής του φλοιού που χρησιμοποιούμε. Διαφορετικά δίνεται η δυνατότητα στο χρήστη να ξαναπροσπαθήσει να δώσει το σωστό συνδυασμό κωδικού / συνθηματικού. Όταν ήμαστε σε γραφικό περιβάλλον επιλέγοντας τον συνδυασμό των πλήκτρων Ctrl+Alt+F1 μπαίνουμε σε λειτουργία μη γραφικού περιβάλλοντος. Για να επανέλθουμε στο γραφικό περιβάλλον επιλέγουμε τον συνδυασμό των πλήκτρων Alt + F7. 3
Για να τερματίσουμε το σύστημα πληκτρολογούμε shutdown h now. Για να διακόψουμε μια διεργασία επιλέγουμε τον συνδυασμό των πλήκτρων Ctrl + Break ή Ctrl + C. ΠΡΟΣΟΧΗ: To Unix κάνει διάκριση μεταξύ κεφαλαίων και πεζών χαρακτήρων. Έτσι ο κωδικός εισόδου vvas είναι διαφορετικός από τον κωδικό Vvas. Αυτή η διαφοροποίηση ισχύει και για τις εντολές του Unix τις οποίες θα γράφουμε με πεζούς χαρακτήρες. 2 Βασικές εντολές Όταν ένας χρήστης συνδεθεί με το σύστημα εμφανίζεται το σήμα προτροπής του φλοιού που ειδοποιεί το χρήστη ότι το σύστημα είναι έτοιμο να δεχθεί τις εντολές του. Στη συνέχεια περιγράφονται μερικές από τις εντολές που θα μπορούσε να δοκιμάσει κάποιος που μόλις συνδέθηκε με ένα σύστημα Unix. ΠΡΟΣΟΧΗ: Η βασική σύνταξη των εντολών στο Unix είναι η εξής: όνομα_εντολής προσδιοριστές ορίσματα Τα ορίσματα δείχνουν που θα επιδράσει η εντολή, (π, χ. σε κάποια αρχεία), ενώ οι προσδιοριστές(διακόπτες) καθορίζουν τον τρόπο με τον οποίο θα λειτούργησα η εντολή (π, χ. αν θα ζητηθεί ή όχι επιβεβαίωση για τη διαγραφή αρχείων). Συνήθως μπορούμε να χρησιμοποιούμε και περισσότερους από έναν προσδιοριστές στις εντολές, γράφοντας τους τον ένα δίπλα στον άλλο. Συνήθως θα βάζουμε τους προσδιοριστές σε αγκύλες [ ] μετά το όνομα της εντολής, χωρίζοντας τους με κενά. Π.χ. ένας τυπικός ορισμός σύνταξης εντολής θα είναι ο εξής: wc [ -l w c ] [αρχείο(α)] 2.1 clear Η εντολή clear χρησιμοποιείται για να καθαρίσει την οθόνη και να τοποθετήσει το δρομέα στην πρώτη γραμμή της. 4
2.2 pwd (print working directory) Εμφάνιση του τρέχοντος καταλόγου (pwd): Αντίθετα με το MS-DOS, το Unix δεν έχει τη δυνατότητα να σας εμφανίζει τον τρέχοντα κατάλογο στο σήμα προτροπής (ή τουλάχιστον όχι εύκολα). Αυτό δημιουργεί συνήθως πρόβλημα στους χρήστες του MS- DOS που έχουν συνηθίσει να βλέπουν ανά πάσα στιγμή τον τρέχοντα κατάλογο. Η εντολή pwd (print working directory) χρησιμοποιείται για να εμφανίσει τον τρέχοντα κατάλογο. Δεν δέχεται ορίσματα ούτε χρησιμοποιεί προσδιοριστές. % pwd /usr/vvas 2.3 who Σε ένα διαλογικό σύστημα είναι φυσικό οι χρήστες να θέλουν να πληροφορηθούν ποιοι άλλοι είναι συνδεδεμένοι με το σύστημα. To UNIX φροντίζει γι' αυτό με την εντολή who. Η σύνταξη της εντολής είναι η εξής: who who am i Με την who εμφανίζονται όλοι οι χρήστες που είναι συνδεδεμένοι στο σύστημα, μαζί με το τερματικό από το οποίο συνδέθηκαν και την ημερομηνία και ώρα της σύνδεσης. Με την εντολή who am Ι παίρνουμε αυτές τις πληροφορίες αλλά μόνο για τον εαυτό μας. Είναι χρήσιμη στην περίπτωση που θέλουμε να δούμε από ποιο τερματικό έχουμε συνδεθεί ή την ώρα σύνδεσης μας. % who root console Feb 7 20:07 vvas tty01 Feb 7 20:21 Stud1 % who am I vvas tty02 tty01 Feb 7 18:37 Feb 7 20:21 5
2.4 date date: Η εντολή date εμφανίζει την τρέχουσα ημερομηνία και ώρα. Για αλλαγή της ώρας ή της ημερομηνίας ο χρήστης πρέπει να έχει δικαιώματα διαχειριστή του συστήματος. Ένα παράδειγμα χρήσης της date είναι το ακόλουθο: % date Tue-Jun 1 14:49:19 PST 1985 2.5 cal (calendar) Εκτός από την τρέχουσα ημερομηνία, το Unix σας δίνει και τη δυνατότητα να δείτε τον ημερολογιακό πίνακα ενός μήνα ή και ενός ολόκληρου έτους. Η εντολή με την οποία το πετυχαίνετε αυτό είναι η cal. Η σύνταξη της είναι: cal [μήνας] [έτος] Αν δεν προσδιορίσετε τίποτα σας δίνεται ο πίνακας του τρέχοντος μήνα, ενώ αν προσδιορίσετε ένα έτος σας δίνονται και οι δώδεκα μήνες του. % cal 1 1996 Jan S M Tu W Th F S 1 2 3 4 5 6 7 8 9 10 11 12 14 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ΠΑΡΑΤΗΡΗΣΗ: Για να προλάβετε να δείτε την έξοδο της cal, αλλά και κάθε άλλης εντολή που εμφανίζει πολλαπλές οθόνες μπορείτε να δώσετε: Εντολή l more. Πατώντας το (Enter) προχωράει την οθόνη μια γραμμή προς τα πάνω. Πατώντας το Space bar προχωράει την οθόνη μια οθόνη προς τα πάνω. 6
2.6 history % history Η εντολή history μας εμφανίζει όλες της εντολές που έχουμε χρησιμοποιήσει μέχρι την στιγμή που την πληκτρολογούμε. ΠΑΡΑΤΗΡΗΣΗ: Για να προλάβετε να δείτε την έξοδο της history πρέπει να χρησιμοποιήσουμε την more. % history l more. 2.7 Ls (List directory) Is [ -a C F i L m r R x] [αρχείο(α)] [κατάλογος(οι)] Η εντολή Is χωρίς ορίσματα εμφανίζει τη λίστα των αρχείων και υποκαταλόγων του τρέχοντος καταλόγου ταξινομημένα κατά αύξουσα αλφαβητική σειρά. Αν σαν ορίσματα δίνονται αρχεία τότε εμφανίζει τη λίστα των αρχείων αυτών. Αν σαν ορίσματα δίνονται τα ονόματα καταλόγων, τότε εμφανίζονται τα αρχεία και οι υποκατάλογοι των καταλόγων αυτών. Η σημασία των προσδιοριστών είναι η εξής: -a Εμφανίζει και τα αρχεία που το όνομα τους ξεκινά με τελεία (.). Εξ? Ορισμού αυτά τα αρχεία θεωρούνται κρυφά και δεν εμφανίζονται. -C Εμφανίζει την έξοδο της Is κατά στήλες. Τα ονόματα είναι ταξινομημένα κατά μήκος των στηλών. -F Προσθέτει ένα / στα ονόματα των καταλόγων και ένα * στα ονόματα των εκτελέσιμων αρχείων. -i Εμφανίζει τον i-node αριθμό των αρχείων, δηλ τον αριθμό με τον οποίο είναι γνωστά τα αρχεία στο σύστημα. -L Εμφανίζει περισσότερες πληροφορίες για κάθε αρχείο (long format). Οι πληροφορίες που εμφανίζονται είναι: Ο τύπος και τα δικαιώματα για το αρχείου (file mode), ο αριθμός συνδέσμων (number of links) που θα εξηγηθεί παρακάτω, το όνομα του ιδιοκτήτη του αρχείου (owner name), το όνομα της ομάδας στην οποία ανήκει το αρχείο (group name), το μέγεθος σε bytes (file size), την ημερομηνία και ώρα της τελευταίας τροποποίησης του αρχείου (last modification date and time) και το όνομα του αρχείου (name). -m Εμφανίζει τη λίστα τον αρχείων χωρίζοντας τα αρχεία με κόμματα (, ) 7
-r Εμφανίζει τα αρχεία με αντίστροφη αλφαβητική σειρά -R Εμφανίζει και τα περιεχόμενα των υποκαταλόγων ενός καταλόγου -x Εμφανίζει την έξοδο της Is κατά στήλες. Τα ονόματα είναι ταξινομημένα κατά μήκος των γραμμών. -t time S size Οι παραπάνω προσδιοριστές μπορούν να χρησιμοποιηθούν και σε συνδυασμό. Για να διαπιστώσετε αν ένα όνομα αντιστοιχεί σε αρχείο ή κατάλογο χρησιμοποιείστε τον προσδιοριστή -L. Αν το πρώτο γράμμα στη γραμμή του αρχείου είναι d τότε πρόκειται για κατάλογο, αλλιώς είναι αρχείο. Εναλλακτικά χρησιμοποιείστε τον προσδιοριστή F ο οποίος θα προσθέσει ένα / στο τέλος του ονόματος κάθε καταλόγου Παράδειγμα: % Is l d rwx r-x r-x 1 root root 70 Noe 30 2003 Mathima1 ΔΙΚΑΙΏΜΑΤΑ ΧΡΗΣΤΗΣ ΟΜΑΔΑ ΥΠΟΛΟΙΠΑ ΟΝΟΜΑ ΟΝΟΜΑ ΜΕΓΕΘΟΣ ΤΕΛΕΥΤΑΙΑ USER GROUP OTHERS ΙΔΙΟΚΤΗΤΗ ΟΜΑΔΑΣ ΣΕ Byte ΤΡΟΠΟΠΟΙΗΣΗ d rwx rwx rwx root root 70 Noe 30 2003 ΟΝΟΜΑ Mathima1 8
3 Κατάλογοι Το σύστημα αρχείων του Unix έχει τη μορφή ενός αντεστραμμένου δέντρου (όπως και του MS DOS). Στη ρίζα του δέντρου υπάρχει ένας κατάλογος που λέγεται root και συμβολίζεται με /. Κάθε κόμβος του δέντρου είναι κατάλογος, και μέσα σε κάθε κατάλογο μπορούν να περιέχονται κανονικά και ειδικά αρχεία, και φυσικά άλλοι κατάλογοι. Με την εγκατάσταση του Unix σε ένα υπολογιστικό σύστημα δημιουργείται ο κατάλογος /, καθώς και κάποιοι άλλοι, οι κυριότεροι των οποίων φαίνονται στο ακόλουθο σχήμα. Εικόνα 2: To σύστημα αρχείων του Unix Τα περιεχόμενα αυτών των καταλόγων είναι τα ακόλουθα: /bin /dev Συχνά χρησιμοποιούμενα εκτελέσιμα αρχεία του συστήματος. Ειδικά αρχεία για συσκευές εισόδου εξόδου. /etc Διάφορα αρχεία για τη διαχείριση του συστήματος. /lib Συχνά χρησιμοποιούμενες βιβλιοθήκες 9
/tmp /usr/adm Μερικά προγράμματα δημιουργούν εδώ προσωρινά αρχεία. Αρχεία λογιστικής του συστήματος (accounting) /user/include Αρχεία ενσωμάτωσης συστήματος /usr/man Αρχεία άμεσης βοήθειας. /usr/spool Κατάλογοι φύλαξης ετεροχρονισμένης εισόδου εξόδου. /usr/src Πρωτογενής κώδικας του συστήματος /usr/user2 Ατομικός κατάλογος του χρήστη με όνομα user2. /usr/user2/pascal Κατάλογος που έχει δημιουργήσει ο user2. Σε κάθε χρήστη που συνδέεται στο σύστημα παραχωρείται ένας κατάλογος (συνήθως κάτω από τον usr/users) που έχει σαν όνομα τον κωδικό εισόδου του χρήστη και λέγεται ατομικός κατάλογος (home directory) του χρήστη. Ο χρήστης μπορεί να κάνει ό, τι θέλει στον ατομικό του κατάλογο (δηλ. να δημιουργήσει πολλαπλά επίπεδα υποκαταλόγων, να φτιάξει και να διαγράψει αρχεία κ.λ.π.). Αν και συνήθως μπορεί να μετακινηθεί σε καταλόγους πάνω από τον ατομικό του κατάλογο, τα δικαιώματα του εκεί περιορίζονται. Όπως και το MS-DOS έτσι και το Unix χρησιμοποιεί ορισμένα σύμβολα για να παραστήσει ειδικούς καταλόγους. Αυτά είναι τα εξής: / Συμβολίζει το βασικό κατάλογο (ρίζα) και διαχωρίζει τους κατάλογους μίας διαδρομής.. Ο τρέχων κατάλογος (εργασίας).. Ο πατρικός ενός καταλόγου ~ Ο ατομικός κατάλογος (εκκίνησης) Σε ένα αρχείο ή σε ένα κατάλογο μπορούμε να αναφερθούμε με δύο τρόπους. Με το πλήρες όνομα διαδρομής (full path name) ή με το σχετικό όνομα διαδρομής (relative path name). Όταν χρησιμοποιούμε το πλήρες όνομα διαδρομής προσδιορίζουμε τη θέση του καταλόγου ή αρχείου από το βασικό κατάλογο /. Π.χ. με το 10
/usr/users/user2/pascal/calc.p αναφερόμαστε στο αρχείο c.p ξεκινώντας από τον βασικό κατάλογο. Η προσέγγιση αυτή δεν είναι πάντα η βολικότερη. Π.χ. αν ο τρέχων κατάλογος είναι ο /users/user1 τότε μπορούμε να αναφερθούμε στο αρχείο calc.p χρησιμοποιώντας την παράσταση..user2/pascal/calc.p διατρέχοντας δηλαδή τους καταλόγους όχι από τον βασικό αλλά από τον τρέχοντα κατάλογο. Όταν κάνουμε αυτό λέμε ότι χρησιμοποιούμε σχετικό όνομα διαδρομής. ΠΡΟΣΟΧΗ: Το σύμβολο του βασικού καταλόγου στο Unix είναι το «/» σε αντίθεση με το MS-DOS όπου χρησιμοποιείται το «/». Αυτό πολλές φορές δημιουργεί σύγχυση στους έμπειρους χρήστες του MS-DOS. 3.1 Εντολές Διαχείρισης Καταλόγων Οι βασικές εντολές διαχείρισης καταλόγων δεν διαφέρουν πολύ από αυτές του MS-DOS. Στα ακόλουθα θα συζητήσουμε τις εντολές για την δημιουργία, διαγραφή και μετακίνηση σε καταλόγους Για να δημιουργήσουμε έναν ή περισσότερους κατάλογους χρησιμοποιούμε την εντολή mkdir (make directory). Η σύνταξη της εντολής είναι: mkdir κατάλογος(οι) Χρειάζεται, προσοχή στο ότι με την mkdir μπορούμε να δημιουργήσουμε πολλούς καταλόγους ταυτόχρονα, αρκεί να χωρίσουμε τα ονόματα τους με κενά. Έτσι με την εντολή % mkdir letters_programs/source δημιουργούμε δύο καταλόγους. Ο ένας έχει το όνομα letters και δημιουργείται κάτω από τον τρέχοντα κατάλογο και ο άλλος το όνομα source και βρίσκεται κάτω από τον κατάλογο programs που είναι υποκατάλογος του τρέχοντος καταλόγου. Προσέξτε ότι το Unix δεν πρόκειται να σας δώσει μήνυμα που να επιβεβαιώνει τη δημιουργία του καταλόγου. Για να διαγράψουμε έναν ή περισσότερους κατάλογους χρησιμοποιούμε την εντολή rmdir (remove directory). Η σύνταξη της εντολής είναι: rmdir)[-r] κατάλογος(οι) Για να μπορέσουμε να διαγράψουμε έναν κατάλογο αυτός θα πρέπει να είναι 11
άδειος (δηλ. να μην περιέχει αρχεία ή άλλους υποκαταλόγους), εκτός αν χρησιμοποιήσουμε τον προσδιοριστή -r, οπότε διαγράφονται και τα περιεχόμενα του καταλόγου. Όπως και στην mkdir μπορούμε να διαγράψουμε πολλούς καταλόγους ταυτόχρονα, αρκεί να χωρίσουμε τα ονόματα τους με κενά. Παραδείγματα χρήσης της rmdir είναι τα ακόλουθα: % rmdir letters temp % rmdir -r /usr/users/usarl Στην πρώτη περίπτωση οι κατάλογοι letters και temp (του τρέχοντος καταλόγου) θα πρέπει να είναι άδειοι. Στην δεύτερη περίπτωση διαγράφεται ο /usr/users/userl μαζί με όλα τα αρχεία ή τους υποκαταλόγους που περιέχει. Τέλος, για να μετακινηθούμε ανάμεσα σε καταλόγους χρησιμοποιούμε την εντολή cd. Η σύνταξή της είναι η εξής: cd [κατάλογος] Αν δεν δώσουμε κατάλογο τότε τρέχων κατάλογος γίνεται ο ατομικός κατάλογος. Αν ο κατάλογος που θα δώσουμε δεν περιέχει πλήρες όνομα διαδρομής τότε θεωρείται ότι βρίσκεται κάτω από τον τρέχοντα κατάλογο. Π.χ.: % cd % cd progs % cd /usr/lib % cd.. Στην πρώτη περίπτωση μεταφερόμαστε στον ατομικό μας κατάλογο, στη δεύτερη στον κατάλογο progs που βρίσκεται κάτω από τον τρέχοντα (προϋποτίθεται ότι υπάρχει), ενώ στην τρίτη στον /usr/lib. Στην τέταρτη περίπτωση μεταφερόμαστε στον γονικό κατάλογο του τρέχοντος καταλόγου. ΠΡΟΣΟΧΗ: Πρέπει οπωσδήποτε να υπάρχει κενό μεταξύ του cd και του ορίσματος της εντολής. Εκφράσεις του τύπου cd.. και cd/ δεν θα τύχουν καλής αποδοχής. Οι αντίστοιχες σωστές εκφράσεις είναι οι cd.. και cd / (με κενό ανάμεσα). ΠΑΡΑΤΗΡΗΣΗ: Σε περίπτωση που ένα αρχείο είναι πολύ μεγάλο και δεν προλαβαίνετε να το δείτε με την εντολή cat, μπορείτε να χρησιμοποιήσετε τη σύνταξη cat αρχείο more όπως είπαμε και προηγουμένως, αλλά και τη more αρχείο. 12
4 Αρχεία - Εντολές Διαχείρισης Αρχείων Στο Unix διακρίνουμε τρία είδη αρχείων. Τα κανονικά αρχεία, τους καταλόγους και τα ειδικά αρχεία. Τα κανονικά αρχεία (regular files) είναι τα συνηθισμένα αρχεία που ξέρουμε και από το MS-DOS και τα οποία μπορεί να περιέχουν κείμενο, εκτελέσιμο κώδικα ή άλλες πληροφορίες που θα διαβαστούν από μία συγκεκριμένη εφαρμογή. Οι κατάλογοι (directories) είναι ειδικής μορφής αρχεία που περιέχουν τη λίστα των αρχείων που ανήκουν σε αυτούς. Κάθε αρχείο ανήκει υποχρεωτικά σε κάποιο κατάλογο, ενώ δεν είναι δυνατό δύο αρχεία με το ίδιο όνομα να ανήκουν στον ίδιο κατάλογο. Τα ειδικά αρχεία (special files) είναι αρχεία που αντιπροσωπεύουν περιφερειακές συσκευές (π.χ. τερματικά, εκτυπωτές, οδηγούς δίσκων κ.λ.π.). Κάθε περιφερειακή συσκευή στο Unix έχει ένα όνομα αρχείου και το Unix τη διαχειρίζεται σαν να επρόκειτο για αρχείο. Π.χ. για να πάρουμε ένα αρχείο σε δισκέτα, αρκεί να το αντιγράψουμε στο άδειο αρχείο που αντιπροσώπευα το συγκεκριμένο οδηγό. Τα ονόματα των αρχείων έχουν μήκος 14 ή 256 χαρακτήρων ανάλογα με την έκδοση του Unix και δεν χρειάζονται υποχρεωτικά επέκταση όπως στο MS-DOS. Μπορούν να χρησιμοποιηθούν γράμματα και αριθμοί, καθώς και τα σύμβολα " -", " _ ", ". ". Προσοχή χρειάζεται στο ότι γίνεται, διάκριση μεταξύ κεφαλαίων και πεζών χαρακτήρων. Όπως θα διαπιστώσει ο αναγνώστης, ούτε οι βασικές εντολές διαχείρισης αρχείων του Unix διαφέρουν πολύ από τις αντίστοιχες MS-DOS. Η βασική τους σύνταξη είναι ίδια, αν και κατά κανόνα είναι πιο ευέλικτες και έχουν περισσότερες δυνατότητες. 4.1 Δημιουργία Αρχείου Για να δημιουργήσουμε ένα αρχείο καμένου υπάρχουν δύο τρόποι. Ο ένας είναι να χρησιμοποιήσουμε έναν από τους διορθωτές (editors) του Unix. Αν όμως πρόκειται για ένα μικρό αρχείο, η χρήση της εντολής cat είναι απλούστερη. 4.1.α Η εντολή Cat Η εντολή cat χρησιμοποιείται κυρίως για να δούμε τα περιεχόμενα ενός αρχείου κειμένου 13
με τη σύνταξη: cat αρχείο (α) μπορεί όμως να χρησιμοποιηθεί και για την δημιουργία ενός αρχείου με τη σύνταξη cat > αρχείο (α) Προσθήκη κειμένου σε υπάρχων έγγραφο (στο τέλος του) cat >> keimeno1. Συνένωση 2 αρχείων κειμένου σε ένα τρίτο cat keimeno1 keimeno2 >> keimeno3 Στην περίπτωση αυτή μόλις πατήσουμε το Enter δεν εμφανίζεται το σήμα προτροπής του Unix αλλά μία κενή γραμμή όπου γράφουμε τα περιεχόμενα του αρχείου. Μπορούμε να γράψουμε όσες γραμμές θέλουμε πατώντας το Enter. Όταν τελειώσουμε πατάμε το συνδυασμό πλήκτρων <Ctrl>-<D>, οπότε το αρχείο σώζεται και εμφανίζεται πάλι το σήμα προτροπής. % cat > testfile This is a test file <Ctrl>-<D> % cat testfile This is a test file 4.1.β Η εντολή touch Με την εντολή touch μπορούμε να δημιουργήσουμε άμεσα ένα κενό αρχείο (0 byte). Η σύνταξη του είναι πολύ απλή: % touch file1 Δημιουργούμε το αρχείο file1 ή ταυτόχρονα περισσότερα του ενός αρχεία: % touch file1 file2 file3 4.1.γ Ο κειμενογράφος vi 1. Τα αρχεία τα δημιουργούμε από τα προγράμματα. Πρόγραμμα δημιουργίας αρχείων στο Linux είναι ο κειμενογράφος vi. 2. Δίνουμε την εντολή vi file1, όπου file1 το όνομα του αρχείου που θέλουμε να δημιουργήσουμε. 3. Ο κειμενογράφος vi έχει 3 καταστάσεις: Κατάσταση εισαγωγής κειμένου i 14
Κατάσταση επεξεργασίας (σύνταξης) κειμένου Κατάσταση εντολών ( 4. Πληκτρολογείστε το παρακάτω κείμενο ενώ είστε σε κατάσταση εισαγωγής κειμένου: Σύντομοι τρόποι επιλογής με το ποντίκι: Για να επιλέξεις μία λέξη, διπλοπάτησε στη λέξη. Για να επιλέξεις μία πρόταση, κράτησε πατημένο το πλήκτρο Control του πληκτρολογίου και πάτησε στην πρόταση. Για να επιλέξεις ένα μεγάλο τμήμα κειμένου, πάτησε εκεί που θέλεις να αρχίζει μία επιλογή. Κράτησε πατημένο το πλήκτρο Shift και πάτησε εκεί που θέλεις να τελειώνει μία επιλογή. 5. Μεταφερθείτε σε κατάσταση επεξεργασίας (esc) και σβηστέ την 2 η γραμμή όλη. (dd) Δοκιμάστε όλες τις επιλογές του βιβλίου σας σ αυτή την κατάσταση 6. Μεταφερθείτε σε κατάσταση εισαγωγής κειμένου (ι ή a) και δημιουργείστε μια κενή γραμμή μετά την θέση του δρομέα. Δοκιμάστε όλες τις επιλογές του βιβλίου σας σ αυτή την κατάσταση. 7. Μεταφερθείτε σε κατάσταση εντολών ( (esc) και αναζητήστε στο κείμενο σας την λέξη «μία». Αντικαταστήστε αυτή την λέξη με την λέξη «καμία». Δοκιμάστε όλες τις επιλογές του βιβλίου σας σ αυτή την κατάσταση 8. Μεταφερθείτε σε κατάσταση εντολών shift+q και και βγείτε από τον νί έχοντας σώσει τις αλλαγές που κάνατε στο κείμενο σας (wq). ( Shift + wq = write και exit. Edit mode Ctrl/F μία οθόνη εμπρός Ctrl/B μία οθόνη πίσω Z η τρέχουσα γραμμή γίνεται πρώτη Z- η τρέχουσα γραμμή γίνεται τελευταία 1G στην αρχή του αρχείου h ένα διάστημα αριστερά e ένα διάστημα δεξιά k προς τα εμπρός μία γραμμή x διαγραφή ενός χαρακτήρα. do διαγραφή από τη θέση του δρομέα μέχρι την αρχή της γραμμής d$ διαγραφή από τη θέση του δρομέα μέχρι το τέλος της γραμμής. dd διαγραφή ολόκληρης γραμμής. ndd διαγραφή n γραμμών Insert mode Ο κενή γραμμή πριν το δρομέα 15
j προς τα πίσω μία γραμμή ο κενή γραμμή μετά το δρομέα. I, a 4.2 Αντιγραφή αρχείων Για να αντιγράψουμε ένα ή περισσότερα αρχεία χρησιμοποιούμε την εντολή cp. Η εντολή cp μπορεί να συντάσσεται όπως παρακάτω: cp αρχείο1 αρχείο2 cp αρχείο1 [αρχείο2]... [αρχείον] κατάλογος cp -r κατάλογος1 κατάλογος2 Στην πρώτη περίπτωση αντιγράφεται το αρχείο με όνομα "αρχείο1" σε ένα νέο αρχείο με όνομα "αρχείο2". Αν το "αρχείο2" υπάρχει ήδη τα περιεχόμενα του αντικαθίστανται με αυτά του "αρχείο1". Δεν μπορεί να γίνει αντιγραφή του αρχείου στον εαυτό του. Στη δεύτερη μορφή το αρχείο ή τα αρχεία αντιγράφονται στον υποκατάλογο "κατάλογος". Αν η cp έχει παραπάνω από δύο ορίσματα το τελευταίο θα πρέπει να είναι υποχρεωτικά κατάλογος. Στην τρίτη μορφή τα αρχεία και οι υποκατάλογοι του "κατάλογος 1" (μαζί με τα περιεχόμενα του) αντιγράφονται στον κατάλογο "κατάλογος2". Σε μερικά συστήματα μπορεί γι' αυτό να χρησιμοποιείται η εντολή copy ή η copy -r. Παραδείγματα % cp message letter % cp message mail/letter % cp prog1 factorial strfind programs % cp r programs progfiles Στο πρώτο παράδειγμα το αρχείο message του τρέχοντος καταλόγου αντιγράφεται στο αρχείο με όνομα letter επίσης τρέχοντος καταλόγου. Στο δεύτερο το αρχείο message του τρέχοντος καταλόγου αντιγράφεται στον υποκατάλογο mail (του τρέχοντος καταλόγου) με το όνομα letter. Στο τρίτο παράδειγμα τα αρχεία prog1, factorial, και strfind αντιγράφονται στον υποκατάλογο programs του τρέχοντος καταλόγου. Στο τέταρτο τα περιεχόμενα του υποκαταλόγου programs αντιγράφονται στον υποκατάλογο progfiles. ΠΑΡΑΤΗΡΗΣΗ: Αν θέλετε να συνενώσετε αρχεία αντί για την εντολή cp χρησιμοποιείστε 16
την έκφραση: Cat file file2 file3.filen > newfile. 4.3 Μετακίνηση αρχείων και Μετονομασία αρχείων Πολλές φορές χρειάζεται να μετακινήσουμε κάποια αρχεία από έναν κατάλογο σε κάποιον άλλο. Η μετακίνηση συνιστάται σε δύο ενέργειες. Την αντιγραφή των αρχείων στον προορισμό και την αντιγραφή τους από τον κατάλογο προέλευσης. Το Unix μας βοηθά να κάνουμε αυτές τις ενέργειες με την εντολή mv. Η ίδια εντολή χρησιμοποιείται και για να μετονομάσουμε αρχεία και καταλόγους. Η εντολή μπορεί να χρησιμοποιηθεί στις ακόλουθες μορφές: mv αρχείο1 αρχείο2 mv κατάλογος1 κατάλογος2 mv i] αρχείο(α) κατάλογος mv αρχείο(α) μονοπάτι/κατάλογος Στην πρώτη περίπτωση αν το αρχείο1 και το αρχείο2 αναφέρονται στον ίδιο κατάλογο τότε το όνομα του αρχείου1 αλλάζει σε αρχείο2. Στην περίπτωση που το αρχείο2 αναφέρεται σε διαφορετικό κατάλογο τότε το αρχείο1 μετακινείται στον κατάλογο αυτό και ταυτόχρονα μετονομάζεται σε αρχείο2. Στην δεύτερη περίπτωση ο κατάλογος κατάλογος1 μετονομάζεται σε κατάλογο2. Οι δύο αυτοί κατάλογοι θα πρέπει να βρίσκονται κάτω από τον ίδιο κατάλογο πατέρα. Στην τρίτη μορφή τα αρχεία μετακινούνται στον κατάλογο διατηρώντας το όνομά τους. Σε περίπτωση που ο κατάλογος περιέχει αρχεία με το ίδιο όνομα μπορούμε να χρησιμοποιήσουμε τον προσδιοριστή i ώστε να ερωτηθούμε να θέλουμε να αντικατασταθούν. Παραδείγματα: % mv prog. c test. c % mv myfiles allfiles % mv demo1 demo2 demo3 / tmp Στο πρώτο παράδειγμα το αρχείο prog. c μετονομάζεται σε test.c. Στο δεύτερο ο κατάλογος myfiles μετονομάζεται σε allfiles ενώ στο τρίτο παράδειγμα τα αρχεία demo1, demo2 και demo3 μεταφέρονται στον κατάλογο / tmp. 17
4.4 Διαγραφή αρχείων Για την διαγραφή αρχείων χρησιμοποιείται η εντολή rm. Η σύνταξή της είναι: rm [-f i r] αρχείο (α) Η σημασία των προσδιοριστών είναι η εξής: -f Διαγράφεται το αρχείο χωρίς επιβεβαίωση ακόμη κι αν έχουμε δικαίωμα διαγραφής των -r Με αυτήν την επιλογή η rm δέχεται σαν παράμετρο καταλόγους αντί για αρχεία και διαγράφει όλα τα περιεχόμενα του καταλόγου, καθώς και τον ίδιο τον κατάλογο. -i Ζητά επιβεβαίωση για κάθε αρχείο που πρόκειται να διαγράψει. 4.5 Απαρίθμηση λέξεων, γραμμών και χαρακτήρων σε αρχεία Μερικές φορές χρειαζόμαστε να βρούμε από πόσες γραμμές, λέξεις ή χαρακτήρες αποτελείται ένα αρχείο. Για το σκοπό αυτό υπάρχει η εντολή wc (Word Count). Η σύνταξη της εντολής είναι η ακόλουθη: wc [-L w c] [αρχείο (α)] Κανονικά η wc μας δείχνει και το σύνολο των γραμμών και των λέξεων και των χαρακτήρων που απαρτίζουν ένα αρχείο, εκτός αν θέλουμε να περιορίσουμε την έξοδό της οπότε χρησιμοποιούμε τον προσδιοριστή -L για να δούμε τις γραμμές, τον w για τις λέξεις και τον c για τους χαρακτήρες. Σε περίπτωση που δώσουμε παραπάνω από ένα αρχείο μας εμφανίζεται και το γενικό σύνολο. Αν δεν δώσουμε αρχείο τότε μπορούμε να γράψουμε κείμενο από το πληκτρολόγιο όπως στην cat. Όταν πατήσουμε <Ctrl>-<D> θα πάρουμε τα στοιχεία για το κείμενο που γράψαμε. % wc inform transmit 8 46 225 inform 4 5 38 transmit 12 51 263 total Γραμμές λέξεις χαρακτήρες Όνομα αρχείου 18
4.6 Δικαιώματα αρχείων καταλόγων Παράδειγμα: % Is l d rwx r-x r-x 1 root root 70 Noe 30 2003 Mathima1 ΔΙΚΑΙΏΜΑΤΑ ΧΡΗΣΤΗΣ ΟΜΑΔΑ ΥΠΟΛΟΙΠΑ ΟΝΟΜΑ ΟΝΟΜΑ ΜΕΓΕΘΟΣ ΤΕΛΕΥΤΑΙΑ USER GROUP OTHERS ΙΔΙΟΚΤΗΤΗ ΟΜΑΔΑΣ ΣΕ Byte ΤΡΟΠΟΠΟΙΗΣΗ d rwx rwx rwx root root 70 Noe 30 2003 ΟΝΟΜΑ Mathima1 ΕΝΤΟΛΗ chmod (change mode) αλλαγή ρυθμίσεων R = δικαίωμα ανάγνωσης, W = δικαίωμα εγγραφής (τροποποίησης), Χ = δικαίωμα εκτέλεσης (ανοίγματος φακέλων) Η εντολή συντάσσεται συμβολικά ή r read ΧΡΗΣΤΕΣ ΣΥΜΒΟΛΟ απόλυτα w write USER u x execute GROUP g OTHERS o ALL a ΕΝΤΟΛΗ ΟΜΑΔΑ ΠΟΥ ΠΡΑΞΗ ΔΙΚΑΙΩΜΑ ΠΟΥ ΟΝΟΜΑ ΑΛΛΑΖΟΥΜΕ ΑΛΛΑΓΗΣ ΜΕΤΑΒΑΛΕΤΑΙ ΑΡΧΕΙΟΥ ΔΙΚΑΙΩΜΑΤΑ chmod u + r g - w o = x a ΜΕ ΣΥΜΒΟΛΙΚΟ ΤΡΟΠΟ π.χ. Να δώσετε το δικαίωμα εγγραφής στο group # chmod g+w add.pas ΠΧ Να προσθέσετε το δικαίωμα εκτέλεσης στον user και στο group του. # chmod ug+x add.pas 19
ΠΧ Να αφαιρέσετε το δικαίωμα εκτέλεσης από το group. # chmod g-x add.pas ΜΕ ΑΠΟΛΥΤΟ ΤΡΟΠΟ Το κάθε δικαίωμα αντιστοιχεί σε ένα μοναδικό αριθμό: 400 200 100 40 20 10 4 2 1 user group other rw x rw x rwx π.χ chmod 700 a.out chmod 777 file4 Προσθέτοντας τους αριθμούς που αντιστοιχούν στα δικαιώματα που θέλουμε να αποδώσουμε δημιουργείται ένας μοναδικός κωδικός. Π.χ. Να δώσετε τα δικαιώματα rwx r r στο αρχείο add.pas. # chmod 744 add.pas 4.7 Ταξινόμηση εγγραφών αρχείου Η ταξινόμηση γίνεται με χρήση της εντολής sort: Sort στήλη κριτήρια αρχείο +1 δηλ από 2 η στήλη n για νούμερα r για φθίνουσα π.χ. Να ταξινομηθούν οι εγγραφές του ακόλουθου αρχείου εγγραφών (4.7 k1.txt ως προς το επίθετο αλφαβητικά. # sort +1 k1.txt Να ταξινομηθούν οι εγγραφές του αρχείου stoixeia.txt ως προς την τελευταία στήλη αντίστροφος αλφαβητικά. # sort +4 -r k1.txt 20
Να ταξινομηθούν οι εγγραφές του αρχείου stoixeia.txt ως προς τον μισθό με φθίνουσα κατάσταση. # sort +3 -nr k1.txt 4.8 Τρόποι εμφάνισης εγγραφών και φίλτρα Με την εντολή awk μπορούνε να φιλτράρουμε εγγραφές βάσει κριτηρίων, να προβάλουμε τα πεδία που μας ενδιαφέρουν με την σειρά που εμείς θέλουμε. Σύνταξη: awk <συνθήκη> && <συνθήκη> {print πεδία} [όνομα αρχείου] Το $0 εννοεί να εμφανισθούν όλα τα πεδία. Η βαση (k1.txt) μας είναι: ΟΝΟΜΑ ΕΠΙΘΕΤΟ ΠΟΛΗ ΜΙΣΘΌΣ ΟΜΑΔΑ Kostas Pappas Athina 1480 1............... Katerina Nikolaou Patra 1460 2 π.χ. 1. Από το αρχείο k1.txt να προβληθούν οι τρεις πρώτες στήλες. # awk {print $1, $2, $3} k1.txt 2. Από το αρχείο k1.txt να προβληθούν οι 1 η, 2 η, 4 η στήλη. # awk {print $1, $2, $4} k1.txt 3. Από το αρχείο k1.txt να προβληθούν όλες οι εγγραφές που περιέχουν την λέξη patra στην τρίτη στήλη. # awk $3== Patra {print $0} k1.txt 4. Από το αρχείο k1.txt να προβληθούν όλες οι εγγραφές που στην τρίτη στήλη περιέχουν την λέξη Patra και ανήκουν στην ομάδα 2. # awk $3== Patra && $5==2 {print $0} k1.txt 5. Στο ίδιο αρχείο να προβληθούν όλες οι εγγραφές που στο τέταρτο πεδίο ο 21
μισθός είναι μικρότερος από 1480. # awk $4<1480 {print $0} k1.txt 6. Από το αρχείο k1.txt να προβληθούν η 1η, 2 η και 4η στήλη και σε μια νέα στήλη να υπολογιστεί ο φόρος που είναι το 20% του μισθού. # awk {print $1, $2, $4, $4*0.2} k1.txt 4.9 Αναζήτηση αρχείων - ευρετηρίων Η εντολή find χρησιμοποιείται για τον εντοπισμό αρχείων σε ένα Unix ή Linux σύστημα. Η εντολή find θα ψάξει σε κάθε ομάδα από φακέλους που θα ορίσετε για αρχεία που πληρούν τα κριτήρια αναζήτησης. Μπορείτε να ψάξετε για αρχεία με κριτήριο το όνομα, τον ιδιοκτήτη, το group, τον τύπο, τις άδειες, την ημερομηνία καθώς και με άλλα κριτήρια. Η αναζήτηση είναι αναδρομική (θα ψάξει και όλους τους υποφακέλους). Η σύνταξη μοιάζει ως εξής: find πού-να-ψάξει κριτήρια τι-να-κάνει Οι παράμετροι της find είναι προαιρετικές. Αν δε δηλωθούν χρησιμοποιούνται προκαθορισμένες τιμές. Αυτές εξαρτώνται από την έκδοση της find που χρησιμοποιείται. Συνήθως, το πού-να-ψάξει έχει προεπιλεγμένη τιμή το «.» (δηλ. τον τρέχοντα φάκελο), τα κριτήρια έχουν προεπιλεγμένη τιμή το τίποτα (δηλ. εμφάνιση όλων των αρχείων) και το τι-να-κάνει (γνωστό και ως το action της find) έχει ως προεπιλεγμένη τιμή το -print (δηλ. εμφάνιση των αρχείων που βρέθηκαν στην προκαθορισμένη έξοδο). Εντολή find Σύνταξη find < ευρετήριο αναζήτησης > <κριτήρια> τύπος Χρόνος προσπέλασης όνομα -type -atime -name f: αρχείο d: ευρετήριο Για παράδειγμα η εντολή # find / -name foo 22
θα ψάξει σε όλο το σύστημα για όλα τα αρχεία που ονομάζονται foo και θα τα εμφανίσει. Εδώ χρησιμοποιείται το κριτήριο -name με το όρισμα foo για να δηλωθεί στη find ότι πρέπει να κάνει μια αναζήτηση με βάση το όνομα για τον εντοπισμό των αρχείων με όνομα foo. Η έξοδος θα μοιάζει κάπως έτσι: /home/wpollock/foo /home/ua02/foo /tmp/foo π.χ. 1. Να βρεθούν όλα τα αρχεία που είναι κάτω από τη ρίζα και να τυπωθούν στην οθόνη # find / -type f -print 2. Να βρεθούν πόσα αρχεία υπάρχουν κάτω από τη ρίζα # find / -type f -print wc -l 3. Να βρεθούν όλα τα αρχεία που είναι κάτω από τo ευρετήριο εκκίνησης και αρχίζουν από t. # find ~ -type f -name t* -print 4. Να βρεθούν όλοι οι κατάλογοι είναι στo ευρετήριο iekmd και αρχίζουν από s. # find iekmd -type d -name s* -print 5. Να βρεθούν όλα τα αρχεία που είναι στo ευρετήριο iekmd που προσπελάσθηκαν πριν από 22 ημέρες # find iekmd -type f -atime 22 -print 4.10 Αναζήτηση κειμένου σε αρχεία Η εντολή grep μας επιτρέπει να αναζητήσουμε σε ένα ή περισσότερα αρχεία για γραμμές που περιέχουν μια ακολουθία. Η σύνταξη της εντολής grep είναι η ακόλουθη: επιλογές: grep [επιλογές] ακολουθία [αρχείο-α] -c Παρουσιάζει το πλήθος των γραμμών που πληρούν τα κριτήρια αναζήτησης. -h Εμφανίζει τις γραμμές που βρέθηκαν, αλλά δεν εμφανίζει το όνομα του αρχίοτ απ όπου προέρχεται κάθε γραμμή. -i Χωρίς διάκριση πεζών κεφαλαίων γραμμάτων. -l Εμφανίζει τα ονόματα των αρχείων, αλλά δεν εμφανίζει τις γραμμές που 23
βρέθηκαν.. -n Εμφανίζει τις γραμμές που βρέθηκαν και τον αριθμό κάθε γραμμής. -v Εμφανίζει όλες τις γραμμές οι οποίες ΔΕΝ ταιριάζουν. -w Αναζητά ολόκληρη τη λέξη. Παράδειγμα: Να βρεθούν οι γραμμές του αρχείου file1 που περιέχουν την λέξη «tech». grep -c tech file1 4.11 Εμφάνιση πρώτων ή τελευταίων εγγραφών σε αρχεία (head tail) Πολλές φορές είναι χρήσιμο σε μια λίστα να επιλέγουμε συγκεκριμένες γραμμές που βρίσκονται σε συνεχόμενες θέσεις (π.χ. τις 10 πρώτες ή τις 10 τελευταίες). Ένα χρήσιμο εργαλείο είναι οι εντολές head και tail που εμφανίζουν τις πρώτες και τελευταίες εγγραφές σε μια λίστα αντίστοιχα αλλά και οποιεσδήποτε συνεχόμενες εγγραφές με τη χρήση της διασωλήνωσης. Έστω η λίστα names με 15 εγγραφές. Για να εμφανίσουμε τις 5 πρώτες γράφουμε: # head -5 names για να εμφανίσουμε τις 4 τελευταίες χρησιμοποιούμε την tail: #tail -4 names αν θέλουμε όλες τις εγγραφές από την 10η και κάτω γράφουμε: #tail +10 names τώρα ο προσδιοριστής είναι το «+» αντί του συνηθισμένου «-». Για να εμφανίσουμε τις εγγραφές από την 6η μέχρι την 8η γράφουμε: #tail +6 names head -3 ή ισοδύναμα #head -8 names tail -2 5 ΑΡΧΕΙΑ ΕΝΤΟΛΩΝ (scripts) Εντολή sh 24
# cat >command1 clear echo date cal who am i cd ~ με ctl+ d βγαίνω από το αρχείο. Για να εκτελέσω το αρχείο # sh command1 25