ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

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

 

Τι Είναι το Unix

Το Unix είναι ένα λειτουργικό σύστημα (operating system), δηλ. ένα πρόγραμμα, ή συλλογή από προγράμματα, που ελέγχει την ισχύ και διαχειρίζεται την πολυπλοκότητα του υπολογιστικού υλικού, επιτρέποντάς μας να εκτελούμε προγράμματα, να αποθηκεύουμε πληροφορίες σε αρχεία και να χρησιμοποιούμε το υλικό (hardware) του υπολογιστή μας, όπως ο εκτυπωτής, το πληκτρολόγιο και το τερματικό.

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

Το Unix εκτελείται σε μεγάλους (mainframes), μεσαίους (minis) ή και προσωπικούς υπολογιστές (PCs) και είναι ένα λειτουργικό σύστημα πολλών χρηστών (multiuser), δηλ. δύο ή περισσότεροι ή και εκατοντάδες χρήστες μπορούν να χρησιμοποιούν τον υπολογιστή την ίδια στιγμή. Οι εκδόσεις του Unix που τρέχουν σε PC αποκαλούνται συχνά προσωπικό Unix (personal UNIX).

Η ονομασία Unix προήλθε από το όνομα Multics, μια παλιότερη προσπάθεια δημιουργίας ενός λειτουργικού συστήματος, από την οποία προέκυψαν σημαντικές ιδέες σχεδίασης και λειτουργίες του Unix. Έτσι, το Unix αρχικά θεωρείτο μια έκδοση του Multics με το όνομα Unics, αλλά με τον καιρό το ξεπέρασε στην αγορά και καθιερώθηκε η σημερινή του ονομασία. Το Unix αναπτύχθηκε αρχικά στις αρχές της δεκαετίας του ’70 στα εργαστήρια της Bell Telephone Laboratories.

Το μεγαλύτερο τμήμα του κώδικα του συστήματος του Unix είναι γραμμένο στη γλώσσα C, που είναι μια γλώσσα υψηλού επιπέδου, που αναπτύχθηκε κυρίως για να κάνει το Unix φορητό (portable), δηλ. εύκολα υλοποιήσιμο σε διαφορετικούς υπολογιστές. Οι θύρες (ports) του Unix έχουν κατασκευαστεί σχεδόν για κάθε σύστημα υπολογιστή. Αυτό λοιπόν που ξεχωρίζει το Unix από τα άλλα λειτουργικά συστήματα είναι η ανεξαρτησία του από τους κατασκευαστές λογισμικού.

 

Οι Παραλλαγές του Unix

Το Unix έχει τροποποιηθεί και υποστεί προσθήκες από πολλούς προγραμματιστές σε πανεπιστήμια και ερευνητικούς οργανισμούς σ’ όλο τον κόσμο. Η συνεχής τροποποίηση του Unix έχει αυξήσει τη χρησιμότητα, την ευελιξία και την επικαιρότητά του, αλλά του στέρησε μια αληθινή ταυτότητα.

Πολλά λειτουργικά συστήματα είναι άμεσοι απόγονοι του Unix, όπως το Berkeley Unix (BSD), oi Xenix, το Sun OS, το Interactive Unix και άλλα που βασίζονται στον πηγαίο κώδικα του Unix της ΑΤ&Τ.

Η διασύνδεση με τον χρήστη (user interface) καθορίζει τον τρόπο που εμφανίζεται το Unix στον χρήστη και οι πιο συνηθισμένες μορφές διασύνδεσης είναι η γραμμή εντολών (command line), που βασίζεται σε κείμενο, και η διασύνδεση χρήστη με γραφικά (graphical user interface - GUI), που βασίζεται σε εικόνες.

 

Η Γραμμή Εντολών

Η διασύνδεση γραμμής εντολών (command line interface) σε κατάσταση κειμένου είναι το πιο φανερό τμήμα του συστήματος για τους περισσότερους χρήστες του Unix. Το τυπικό προτρεπτικό σήμα του συστήματος που παρέχεται από το κέλυφος (shell), και που μπορούμε να το αλλάξουμε αν θέλουμε, είναι το σύμβολο του δολαρίου ($) ακολουθούμενο από ένα κενό διάστημα.

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

 

Το Κέλυφος του Unix

Ο όρος κέλυφος ή φλοιός (shell) χρησιμοποιείται στο Unix για να δηλώσει ένα ειδικό πρόγραμμα που χειρίζεται ειδικές εντολές του λειτουργικού συστήματος και είναι γραμμένο σε δυαδικό κώδικα. Είναι γραμμένο στη γλώσσα προγραμματισμού C και είναι σχεδιασμένο για να βοηθάει τον χρήστη να επικοινωνεί με το σύστημα όσο πιο απλά μπορεί.

Τα γενικά χαρακτηριστικά του κελύφους περιλαμβάνουν την εκτέλεση εντολών, τη βιβλιοθήκη ενσωματωμένων εντολών, την επεξεργασία του παρασκηνίου, τις μεταβλητές, τις δομές ελέγχου και την αντικατάσταση εντολών. Υπάρχουν τα κελύφη Bourne, C και Korn.

 

Οι Λογαριασμοί Χρηστών του Unix

Ένα λειτουργικό σύστημα πολλών χρηστών πρέπει να παρέχει σε κάθε χρήστη προστασία απ’ όλους τους άλλους, αλλά πρέπει και να προστατεύει τον εαυτό του από επίδοξους εισβολείς. Σαν πρώτο βήμα, το Unix ελέγχει την πρόσβαση με τη χρήση μοναδικών λογαριασμών χρήστη (user accounts).

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

Το Unix είναι ένα λειτουργικό σύστημα πολλών χρηστών (multiuser), που σημαίνει ότι δύο ή περισσότεροι χρήστες μπορούν να το χρησιμοποιούν την ίδια στιγμή. Κάθε χρήστης ενός συστήματος Unix έχει έναν λογαριασμό, που αναγνωρίζεται από ένα μοναδικό όνομα λογαριασμού (account name).

Ενα όνομα λογαριασμού (account name), γνωστό και σαν όνομα χρήστη (user name), είναι συνήθως προσωπικό και είναι το όνομα με το οποίο μας αναγνωρίζει το σύστημα και οι άλλοι χρήστες. Μπορεί να χρησιμοποιηθεί ακόμα και για να μας στείλουν ηλεκτρονικό ταχυδρομείο (e-mail) ή για να επικοινωνήσουν μαζί μας μ’ άλλους τρόπους.

Για να εξασφαλίσουμε την ασφάλεια των αρχείων μας και να έχουμε μόνοι εμείς πρόσβαση στο σύστημα μέσω του τερματικού μας, υπάρχει το συνθηματικό (password). Είναι μια ακολουθία χαρακτήρων, με μήκος από 3 έως 8 χαρακτήρες, και πρέπει να περιέχει τουλάχιστον δύο αλφαβητικούς χαρακτήρες και ένα ψηφίο ή άλλο μη αλφαβητικό χαρακτήρα.

Σε μερικές περιπτώσεις, ο διαχειριστής του συστήματος μπορεί να ενεργοποιήσει τον μηχανισμό γήρανσης συνθηματικού (password aging), που μας υποχρεώνει να αλλάζουμε περιοδικά το συνθηματικό μας.

 

Οι Λογαριασμοί Συστήματος

Κάθε σύστημα Unix διαθέτει κάποιους δεσμευμένους λογαριασμούς που χρησιμοποιούνται για εργασίες διαχείρισης του συστήματος και που αποκαλούνται συνήθως λογαριασμοί υπερχρήστη (superuser), εξαιτίας της ισχύος που αποκτούν οι χρήστες τους.

Ο πιο ισχυρός δεσμευμένος λογαριασμός είναι ο root και οποιοσδήποτε είναι συνδεδεμένος σαν root μπορεί να δει και να τροποποιήσει αρχεία οπουδήποτε μέσα στο σύστημα. Άλλοι λογαριασμοί υπερχρηστών είναι οι adm, bin, uucp και sysadm.

 

Οι Συνδέσεις στο Unix

Ενας υπολογιστής που τρέχει το Unix παρέχει αρκετούς τρόπους πρόσβασης στο σύστημα. Μπορούμε να έχουμε πρόσβαση είτε απευθείας ή μέσω εξωτερικής σύνδεσης, τηλεφωνικής ή καλωδιακής. Η απευθείας πρόσβαση στο Unix μπορεί να γίνεται μέσω ενός σταθμού εργασίας ενός δικτύου ή μ’ έναν προσωπικό υπολογιστή.

Για επικοινωνία μέσω τηλεφωνικών γραμμών, το τερματικό μας πρέπει να συνδεθεί μέσω μιας σειριακής θύρας μ’ ένα modem (διαμορφωτής/αποδιαμορφωτής, modulator/demodulator), που είναι μια συσκευή που διαμορφώνει τα ψηφιακά δεδομένα του υπολογιστή σε αναλογικά σήματα, ώστε να μπορούν να μεταδοθούν μέσω του τηλεφωνικού δικτύου.

Στο άλλο άκρο, ο άλλους υπολογιστής χρησιμοποιεί ένα άλλο modem για να αποδιαμορφώσει τα αναλογικά σήματα σε ψηφιακά που καταλαβαίνει ο υπολογιστής.

Αν, όμως, το τερματικό μας βρίσκεται σε μικρή απόσταση (μέχρι 300 μέτρα περίπου) από τον υπολογιστή υπηρεσίας (host computer), μπορούμε να χρησιμοποιήσουμε μια άμεση καλωδιακή σύνδεση, που είναι πολύ ταχύτερη από την επικοινωνία μέσω modem.

 

Σύνδεση και Αποσύνδεση Χρήστη

Οταν συνδεόμαστε (logging in) στο Unix, θα μας ζητηθεί το όνομα του λογαριασμού και το συνθηματικό μας. Υπάρχουν κάποιες διαφορές μεταξύ σύνδεσης σ’ έναν υπολογιστή μέσω κονσόλας ή σταθμού εργασίας ή καλωδιωμένου τερματικού και μέσω τηλεφωνικής σύνδεσης.

Οταν αρχίζουμε να δουλεύουμε στην κονσόλα του συστήματος, σ’ έναν σταθμό εργασίας ή σ’ ένα καλωδιωμένο τερματικό, είναι πιθανόν να εμφανίζεται ήδη το προτρεπτικό σύνδεσης. Αν δεν εμφανίζεται, πρέπει να πατήσουμε το πλήκτρο Enter μερικές φορές μέχρι να το δούμε και μετά να γράψουμε το όνομα του λογαριασμού μας (user account). Μετά, το σύστημα θα μας ζητήσει το συνθηματικό μας (password), το οποίο καθώς το πληκτρολογούμε δεν φαίνεται στην οθόνη.

Αν αυτά που γράψαμε είναι σωστά, θα πάρουμε μερικά μηνύματα εκκίνησης και το προτρεπτικό σήμα του συστήματος. Στο Unix, ο κάθε χρήστης έχει τον δικό του φάκελο ή κατάλογο, όπου i?inaί να φυλάει τα αρχεία του ξεχωριστά από τους άλλους χρήστες και που αποκαλείται home directory. Οταν συνδεόμαστε στο Unix, βρισκόμαστε αμέσως στο δικό μας home directory, που είναι η αφετηρία και το κέντρο των ενεργειών μας στο Unix.

Το μήνυμα καλωσορίσματος στο Unix προέρχεται από το αρχείο motd (message of the day), που το δημιουργεί και το τροποποιεί ο διαχειριστής του συστήματος.

Για να αποσυνδεθούμε (logging out) από το Unix μπορούμε να χρησιμοποιήσουμε την εντολή exit, που είναι μια εντολή ενσωματωμένη στο κέλυφος (shell) του Unix. Μια εναλλακτική λύση, που δουλεύει στα περισσότερα συστήματα, είναι να πατήσουμε τα πλήκτρα Control+D.

Η αποσύνδεση μπορεί να τερματίζει τη φάση εργασίας μας, αλλά δεν σταματάει το λειτουργικό σύστημα. Για να κλείσουμε (shutdown) το σύστημα, πρέπει να είμαστε συνδεδεμένοι είτε σαν root ή σαν ιδιοκτήτης (owner) του συστήματος. Το προτρεπτικό σήμα είναι το #, που είναι το κανονικό προτρεπτικό σήμα του root.

Γράφουμε shutdown και μετά από μερικά λεπτά, αφού ειδοποιηθούν για να αποσυνδεθούν οι συνδεδεμένοι χρήστες, το σύστημα κλείνει. Αν, όμως, είμαστε ο μοναδικός ενεργός χρήστης, μπορούμε να παρακάμψουμε αυτή την καθυστέρηση και να έχουμε άμεσο κλείσιμο, δίνοντας την επιλογή -g0, ως εξής : shutdown -g0.

Για να κλείσει αμέσως το σύστημα, μπορούμε να δώσουμε και τις εντολές shutdown now ή shutdown 0, ενώ αν δώσουμε shutdown -g100, το σύστημα θα κλείσει μετά από 100 δευτερόλεπτα.

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

 

Η Γραμμή Εντολών του Unix

Χρησιμοποιούμε τη γραμμή εντολών (command line) για να πούμε στο Unix τι θέλουμε να κάνει. Η γραμμή εντολών βρίσκεται εκεί όπου το σύστημα εμφανίζει το αλφαριθμητικό προτροπής (prompt string), που εξ ορισμού είναι το $ για τους χρήστες και το # για τους διαχειριστές συστήματος, αλλά αυτά μπορούν να αλλάξουν. Το αλφαριθμητικό προτροπής λέγεται και ενδείκτης και η εμφάνισή του δηλώνει ότι το σύστημα είναι έτοιμο να δεχθεί τις εντολές μας.

Οταν συνδεόμαστε (log in), το Unix εκτελεί ένα πρόγραμμα που ονομάζεται κέλυφος (shell), το οποίο είναι ένας ερμηνευτής εντολών (command interpreter). Εμφανίζει το προτρεπτικό σήμα εντολών στην οθόνη και μετά περιμένει να γράψουμε εντολές. Πολλές εντολές γράφονται μόνες τους, αλλά μερικές δέχονται επιλογές (options) ή προσδιοριοστές ή και ένα ή περισσότερα ονόματα αρχείων ή καταλόγων, που ονομάζονται ορίσματα (arguments).

 

Συστήματα Αρχείων του Unix

Το σύστημα αρχείων (file system) ενός λειτουργικού συστήματος περιγράφει τον τύπο και τη διάταξη δεδομένων αποθηκευμένων σ’ έναν δίσκο ή σε μια άλλη συσκευή αποθήκευσης. Στο ιεραρχικό σύστημα αρχείων (hierarchical file system) χρησιμοποιείται μια διάταξη καταλόγων και αρχείων ανάλογη μ’ έναν φοριαμό αρχειοθέτησης, με συρτάρια και φακέλους. Αυτή η σχεδίαση χρησιμοποιείται με μικρές διαφορές από το Unix και από πολλά άλλα σύγχρονα λειτουργικά συστήματα.

Στο Unix, το ανώτερο επίπεδο ονομάζεται βασικός κατάλογος (root directory) και συμβολίζεται με μια κάθετο /. Κάτω από τον βασικό κατάλογο root βρίσκεται ο κατάλογος /etc, που περιέχει εντολές για τον διαχειριστή του συστήματος, ο κατάλογος /usr, που περιέχει πολλούς καταλόγους με εντολές που μπορούν να χρησιμοποιηθούν από τους χρήστες κ.ά. Στον κατάλογο /home βρίσκονται τοποθετημένοι οι κατάλογοι σύνδεσης (login directories) των περισσοτέρων χρηστών.

Το σύστημα αρχείων του Unix αποτελείται από καταλόγους που έχουν σχέση με το σύστημα και από καταλόγους που έχουν σχέση με τους χρήστες. Μπορούμε να τροποποιήσουμε το τμήμα του δικού μας συστήματος αρχείων, αλλά δεν μπορούμε να τροποποιήσουμε τα τμήματα που ανήκουν στον λογαριασμό του συστήματος ούτε τα τμήματα που ανήκουν σ’ άλλους χρήστες, εκτός βέβαια και αν αποκτήσουμε την σχετική άδεια.

 

Συμβάσεις Ονομασίας Αρχείων και Καταλόγων

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

Δεν πρέπει να ξεχνάμε ότι στο Unix τα κεφαλαία και τα πεζά γράμματα είναι διαφορετικά, δηλ. το FLORINA, το Florina και το florina είναι διαφορετικά μεταξύ τους. Ακόμη, τα ονόματα αρχείων μπορούν να έχουν μήκος μέχρι 14 χαρακτήρες και 255 για το Unix System V, Release 4 και τις νεότερες εκδόσεις.

Μόνο η κάθετος / δεν επιτρέπεται στα ονόματα αρχείων, γιατί είναι οριοθέτης στα ονόματα διαδρομών. Μπορούμε να χρησιμοποιήσουμε τον χαρακτήρα υπογράμμισης (_) ή την τελεία (.) για να κάνουμε τον οπτικό διαχωρισμό των τμημάτων ενός ονόματος αρχείου.

Ομως, πρέπει να έχουμε υπόψη μας ότι τα ονόματα αρχείων που αρχίζουν με τελεία (.) είναι αόρατα (κρυμμένα) στα περιεχόμενα των καταλόγων. Ακόμη, πρέπει να έχουμε υπόψη μας ότι το Unix δεν απαιτεί επεκτάσεις (extensions) για τα ονόματα των αρχείων.

 

Πλήρη και Σχετικά Ονόματα Διαδρομών

Το όνομα διαδρομής (pathname) είναι ένας μηχανισμός καθορισμού της θέσης ενός αρχείου ή καταλόγου σε μια ιεραρχία συστημάτων αρχείων. Για παράδειγμα, το πλήρες όνομα διαδρομής ή απόλυτο όνομα διαδρομής για τον κατάλογο σύνδεσης ενός χρήστη με το όνομα john, είναι το /home/john.

Είναι πλήρες, γιατί το όνομα αρχίζει στη βάση (root) του συστήματος αρχείων (/) και περιλαμβάνει τα ονόματα όλων των καταλόγων iέχρι και το τελευταίο όνομα αρχείου ή καταλόγου.

Κάθε χρήστης έχει έναν οικείο κατάλογο (home directory) που του εκχωρείται από τον διαχειριστή του συστήματος όταν δημιουργείται ο λογαριασμός σύνδεσής του. Ο τρέχων κατάλογος (current directory) ή κατάλογος εργασίας (working directory) είναι ο κατάλογος με τον οποίο δουλεύουμε σε κάποια χρονική στιγμή και στον οποίο αυτόματα το Unix αποθηκεύει ή αναζητεί αρχεία. Ο τρέχων κατάλογος είναι αρχικά ο οικείος κατάλογος ενός χρήστης.

Ενα σχετικό όνομα διαδρομής (relative pathname) καθορίζει ένα αρχείο ή κατάλογο, ξεκινώντας από έναν κατάλογο διαφορετικό από τον root, που είναι συνήθως ο τρέχων κατάλογος. Για παράδειγμα, αν τρέχων κατάλογος είναι ο /home, το σχετικό όνομα διαδρομής για το αρχείο .profile είναι το john/.profile, γιατί ο john είναι ένας κατάλογος αμέσως μετά από τον home και το αρχείο .profile ανήκει στον κατάλογο john.

 

Οι Κατάλογοι του Unix

Ο βασικός κατάλογος (root) του Unix περιέχει συνήθως τους εξής καταλόγους (directories) :

 

Αναγνώριση Μονάδων στο Unix

Το Unix θεωρεί τις περιφερειακές μονάδες σαν αρχεία που βρίσκονται στον κατάλογο /dev. Τα ονόματα των αρχείων αυτών ακολουθούν κάποιους συγκεκριμένους τύπους ονομάτων :

 

Η Εντολή cd

Με την εντολή cd (change directory) μπορούμε να αλλάξουμε τον τρέχοντα κατάλογό μας. Για παράδειγμα, η εντολή cd /home κάνει τρέχοντα τον κατάλογο /home. Με την εντολή cd .. πηγαίνουμε στον γονικό κατάλογο του τρέχοντα και με την εντολή cd/ πηγαίνουμε στον βασικό κατάλογο root.

 

Η Εντολή pwd

Με την εντολή pwd (print working directory) μπορούμε να μάθουμε ποιος είναι ο τρέχων κατάλογος ή κατάλογος εργασίας μας. Ο όρος print έμεινε από τις πρώτες εκδόσεις του Unix, όταν τα αποτελέσματα τυπώνονταν σε χαρτί και όχι στην οθόνη.

 

Η Εντολή ls

Με την εντολή ls (list) μπορούμε να δούμε τα περιεχόμενα ενός καταλόγου, δηλ. τα ονόματα των αρχείων και των καταλόγων που περιέχει. Η εντολή ls, χωρίς επιλογές, εμφανίζει μια λίστα με τα ονόματα των αρχείων και των καταλόγων του τρέχοντος καταλόγου. Για τους απλούς χρήστες, η εντολή ls δεν εμφανίζει τα αρχεία των οποίων τα ονόματα αρχίζουν με τελεία, τα οποία, όμως, βλέπουν ο root και οι άλλοι χρήστες της διαχείρισης του συστήματος.

Για να μπορούν να δουν οι απλοί χρήστες όλα τα αρχεία, άρα και τα κρυμμένα αρχεία, πρέπει να χρησιμοποιήσουν την επιλογή -a, ως εξής : ls -a. Δυο αρχεία που εμφανίζονται σε κάθε κατάλογο και ανήκουν στα κρυμμένα αρχεία, είναι το (.), που αναφέρεται στον τρέχοντα κατάλογο και το (..), που αναφέρεται στον γονικό κατάλογο του τρέχοντος καταλόγου. Πρέπει να έχουμε υπόψη μας ότι οι καταχωρήσεις . και .. του βασικού καταλόγου root αναφέρονται στον ίδιο τον root.

Με την εντολή ls μπορούμε να δούμε και τα περιεχόμενα ενός καταλόγου διαφορετικού από τον τρέχοντα, δίνοντας το πλήρες όνομα διαδρομής του καταλόγου, π.χ. ls /home/mary. Ακόμα, με την εντολή ls . βλέπουμε τα περιεχόμενα του τρέχοντος καταλόγου και με την εντολή ls .., τα περιεχόμενα του γονικού καταλόγου του τρέχοντα.

 

Η Μεταβλητή PATH

Οταν δίνουμε μια εντολή στο Unix, το κέλυφος ψάχνει στους καταλόγους που καθορίζονται από τη μεταβλητή ΡΑΤΗ, που είναι μία από τις πολλές μεταβλητές περιβάλλοντος που σχετίζονται με κάθε φάση εργασίας ενός ενεργού χρήστη, για να βρει το αρχείο της εντολής και να το εκτελέσει. Κάθε χρήστης μπορεί να καθορίσει μια διαφορετική τιμή για την ΡΑΤΗ, αλλά η βάση της ΡΑΤΗ για κάθε χρήστη είναι ένα σύνολο καταλόγων που καθορίζεται από τον διαχειριστή του συστήματος.

Ο απλούστερος τρόπος για να μάθουμε την τιμή της μεταβλητής ΡΑΤΗ, ή οποιασδήποτε άλλης μεταβλητής περιβάλλοντος, είναι να χρησιμοποιήσουμε την εντολή echo, ως εξής : echo $PATH.

 

Η Εντολή echo

Με την εντολή echo μπορούμε να εμφανίσουμε (τυπώσουμε) ένα όρισμα. Για παράδειγμα, η εντολή echo florina, εμφανίζει τη λέξη florina, αλλά για να εμφανίσουμε τα περιεχόμενα ενός αρχείου ή μιας μεταβλητής, πρέπει να βάλουμε το σύμβολο $ σαν πρόθεμα στο όνομα του αρχείου, όπως : echo $PATH ή echo $florina. Η εντολή echo χωρίς όρισμα εμφανίζει μια κενή γραμμή στην οθόνη.

Μπορούμε, όμως, να συνδυάσουμε την εντολή echo και με άλλες εντολές του Unix που θα εκτελούνται μέσα από την echo, αν δώσουμε την εντολή μέσα σε μονά εισαγωγικά, όπως στο επόμενο παράδειγμα :

$ echo "O?IEAOAEIAIO ‘pwd’ ΚΑΙ ΠΕΡΙΕΧΟΜΕΝΑ ‘ls-l’"

Με την παραπάνω εντολή θα δούμε και τα μηνύματα που γράψαμε, αλλά και το αποτέλεσμα της εκτέλεσης των εντολών pwd και ls-l.

 

Η Εντολή mkdir

Με την εντολή mkdir (make directory) μπορούμε να δημιουργήσουμε έναν νέο κατάλογο ή σύνολο καταλόγων. Δέχεται μια λίστα ονομάτων και επιχειρεί να δημιουργήσει έναν νέο κατάλογο για κάθε όνομα. Οι νέοι κατάλογοι θα ανήκουν, δηλ. θα έχουν σαν γονικό, στον τρέχοντα κατάλογο και θα περιέχουν αυτόματα τις καταχωρήσεις . και ..

$ mkdir amyntaio filotas

 

Η Εντολή rmdir

Με την εντολή rmdir (remove directory) μπορούμε να διαγράψουμε έναν υπάρχοντα κατάλογο εφόσον είμαστε στον πατρικό του κατάλογο. Δέχεται μια λίστα ονομάτων καταλόγων και επιχειρεί να διαγράψει τον καθένα απ’ αυτούς, αλλά δεν μπορεί να διαγράψει έναν κατάλογο που δεν είναι άδειος ή για τον οποίο δεν έχουμε τη σχετική άδεια διαγραφής.

$ rmdir kozani

 

Η Εντολή cat

Η εντολή cat (concatenate), αν έχει μόνο ένα όνομα αρχείου σαν όρισμα, εμφανίζει τα περιεχόμενά του στη συσκευή εξόδου, αλλιώς συνενώνει τα περιεχόμενα ενός συνόλου αρχείων εισόδου και τα εμφανίζει στην οθόνη ή τα στέλνει σ’ ένα άλλο αρχείο. Η εντολή cat εμφανίζει ένα μήνυμα λάθους αν ένα αρχείο δεν υπάρχει ή αν δεν έχουμε δικαίωμα πρόσβασης σ’ αυτό.

Αν δώσουμε την εντολή cat με όρισμα μια ομάδα αρχείων, θα εμφανισθούν τα περιεχόμενά τους σε μια συνεχή ροή στην οθόνη. Για να συγκεντρώσουμε, όμως τα περιεχόμενα πολλών αρχείων σ’ ένα μόνο αρχείο, χρησιμοποιούμε μια λειτουργία του κελύφους που ονομάζεται ανακατεύθυνση (redirection) και συμβολίζεται με τον χαρακτήρα >.

Ετσι, το αποτέλεσμα, που κανονικά θα εμφανιζόταν στο τερματικό, στέλνεται σε μια άλλη συσκευή ή σ’ ένα άλλο αρχείο. Τα πρωτότυπα αρχεία δεν επηρεάζονται καθόλου.

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

$ cat .profile

$ cat text1 text2 > document

Η εντολή cat > file1 μάς δίνει τη δυνατότητα να δημιουργήσουμε ένα μικρό αρχείο. Γράφουμε το κείμενο που θέλουμε και πατάμε enter για να πάμε σε μια νέα κενή γραμμή και εκεί πατάμε τα πλήκτρα Control+D για να βγούμε από την εντολή.

 

Η Εντολή cp

Με την εντολή cp (copy) μπορούμε να δημιουργήσουμε αντίγραφα ενός ή περισσοτέρων αρχείων στον τρέχοντα ή σ’ άλλον κατάλογο. Στην απλή μορφή της, η εντολή αντιγράφει το αρχείο προέλευσης στο αρχείο προορισμού, με διαφορετικά ονόματα αν πρόκειται να παραμείνουν στον ίδιο κατάλογο ή ακόμη και με το ίδιο όνομα αν πρόκειται να βρίσκονται σε διαφορετικούς καταλόγους.

Για παράδειγμα, η εντολή cp .profile profile.bak δημιουργεί ένα αντίγραφο του αρχείου .profile στον ίδιο κατάλογο, που είναι ο τρέχοντας. Στην επόμενη εντολή cp .profile preserve/profile.bak δημιουργείται ένα αντίγραφο του αρχείου .profile με το όνομα profile.bak στον κατάλογο preserve, που ανήκει στον τρέχοντα κατάλογο.

Στην αντιγραφή αρχείων μπορούμε να χρησιμοποιήσουμε και τα σύμβολα . και .. για τον τρέχοντα και τον γονικό κατάλογο αντίστοιχα. Για παράδειγμα, η εντολή cp /etc/group . δημιουργεί ένα αντίγραφο ενός αρχείου στον τρέχοντα κατάλογο και με το ίδιο όνομα.

Η εντολή cp /etc/group $HOME αντιγράφει ένα αρχείο στον οικείο κατάλογο του χρήστη. Η μεταβλητή περιβάλλοντος ΗΟΜΕ περιέχει την τιμή του οικείου καταλόγου του χρήστη. Για να δούμε τα περιεχόμενα της μεταβλητής ΗΟΜΕ, χρησιμοποιούμε την εντολή echo, ως εξής : echo $HOME.

 

Η Εντολή mv

Με την εντολή mv (move) μπορούμε να μετονομάσουμε ή και να μετακινήσουμε αρχεία σ’ άλλους καταλόγους. Για παράδειγμα, η επόμενη εντολή mv profile.bak prof.txt αλλάζει το όνομα του αρχείου profile.bak σε prof.txt. Η εντολή mv data1 data2 save μετακινεί τα αρχεία data1 και data2 στον κατάλογο save. Για να δουλέψει η εντολή, πρέπει να υπάρχει ο κατάλογος προορισμού και να έχουμε δικαιώματα εγγραφής σ’ αυτόν.

 

Η Εντολή rm

Με την εντολή rm (remove) μπορούμε να διαγράψουμε ένα ή περισσότερα αρχεία, όπως στα επόμενα παραδείγματα :

$ rm prof.txt

$ rm *.dat

Πρέπει να έχουμε υπόψη μας ότι στο Unix όταν διαγράφουμε ένα αρχείο, αυτό χάνεται για πάντα. Στα συστήματα πολλών χρηστών δεν υπάρχει συνήθως η πολυτέλεια της εύκολης ανάκτησης αρχείων. Για να μας ζητήσει το σύστημα επιβεβαίωση της διαγραφής, μπορούμε να χρησιμοποιήσουμε τον προσδιοριστή -i.

 

Η Αναλυτική Λίστα Περιεχομένων

Για να δούμε λεπτομερείς πληροφορίες για τα αρχεία ενός καταλόγου, δίνουμε την επιλογή - l της εντολής ls, είτε μόνη της ή μαζί μ’ άλλες επιλογές. Στο παρακάτω παράδειγμα, βλέπουμε την αναλυτική λίστα περιεχομένων σε συνδυασμό με την επιλογή παράθεσης όλων των αρχείων (-a) :

$ ls -al

total 8

drwxr-xr-x 2 rocky other 96 Dec 26 23:16 .

drwxrwxr-x 7 root sys 96 Dec 24 07:40 ..

-rw-r- -r- - 1 rocky other 613 Nov 2 1992 .profile

$

Η πρώτη γραμμή (total 8) δείχνει τον αριθμό των μπλοκς του δίσκου που χρησιμοποιεί ο κατάλογος του οποίου βλέπουμε τα περιεχόμενα. Μετά, για κάθε αρχείο και κατάλογο εμφανίζεται μια γραμμή στην έξοδο. Για κάθε αρχείο και κατάλογο, βλέπουμε τα παρακάτω στοιχεία :

Το πρώτο bit κατάστασης δείχνει τον τύπο του αρχείου, όπου η παύλα (-) δείχνει ότι πρόκειται για ένα κανονικό αρχείο και το d για κατάλογο. Τα υπόλοιπα 9 bits καθορίζουν τα δικαιώματα (read, write, execute) για κάθε κατηγορία χρήστη, δηλ. ιδιοκτήτης, ομάδα και άλλοι.

 

Η Εντολή ln - Σύνδεση Αρχείων

Μια από τις πιο χρήσιμες δυνατότητες του Unix είναι η δυνατότητα σύνδεσης (linking) αρχείων. Με την εντολή ln (link) μπορούμε να δημιουργήσουμε έναν σύνδεσμο (παραπομπή) σ’ ένα αρχείο, ώστε να μπορούμε να το χρησιμοποιήσουμε μ’ ένα διαφορετικό όνομα.

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

Η εντολή ln παίρνει για ορίσματα το όνομα του αρχείου στο οποίο συνδεόμαστε και το όνομα που θέλουμε να χρησιμοποιούμε για να αναφερόμαστε σ’ αυτό το αρχείο. Η παρακάτω εντολή δημιουργεί έναν σύνδεσμο, στην ουσία έναν δείκτη, με το όνομα spec προς το αρχείο basespec που βρίσκεται στον κατάλογο /home/doris.

$ ln /home/doris/basespec spec

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

Αν δεν δώσουμε όνομα για τη σύνδεση ενός αρχείου, τότε το Unix χρησιμοποιεί το ίδιο όνομα αρχείου και για τη σύνδεση, μόνο που η σύνδεση θα πρέπει να γίνεται από άλλον κατάλογο. Μ’ αυτόν τον τρόπο μπορούμε να δημιουργήσουμε συνδέσμους και για περισσότερα από ένα αρχεία.

$ ln /usr/userx/florina

Η παραπάνω εντολή δημιουργεί στον τρέχοντα κατάλογο έναν σύνδεσμο με το αρχείο florina που βρίσκεται στον κατάλογο /usr/userx, όπου ο σύνδεσμος έχει το ίδιο όνομα florina.

$ ln test1 test2 /usr/userx

Η παραπάνω εντολή δημιουργεί συνδέσμους για τα αρχεία test1 και test2 του τρέχοντος καταλόγου, με τα ίδια ονόματα, στον κατάλογο /usr/userx.

 

Διαγραφή Δένδρου Καταλόγων

Για να διαγράψουμε τα περιεχόμενα ενός καταλόγου και όλους τους καταλόγους που ανήκουν σ’ αυτόν τον κατάλογο (δένδρο ή ιεραρχία καταλόγων), χρησιμοποιούμε την εντολή rm με τις επιλογές r και f, ως εξής :

$ rm -rf projectx

Η παραπάνω εντολή εξαφανίζει στα γρήγορα τον κατάλογο projectx και τα πάντα κάτω απ’ αυτόν. Η επιλογή -r λεει στην εντολή rm να ενεργήσει αναδρομικά (recursively), δηλ. να διατρέξει την ιεραρχία καταλόγων από κάτω προς τα πάνω, ξεκινώντας από το καθοριζόμενο σημείο εκκίνησης.

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

Η επιλογή -f δεν αφήνει την rm να στέλνει μηνύματα σχετικά με προβλήματα ιδιοκτησίας και δικαιώματα προσπέλασης αρχείων και να περιμένει από τον χρήστη επιβεβαίωση της διαγραφής. Πρέπει βέβαια αυτά που διαγράφουμε να βρίσκονται σ’ έναν κατάλογο που μας ανήκει.

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

 

Η Εντολή wc

Με την εντολή wc (word count) μπορούμε να δούμε για ένα αρχείο ή για μια ομάδα αρχείων κειμένου από πόσες γραμμές, λέξεις και χαρακτήρες (bytes) αποτελείται. Όταν της δοθεί μια λίστα αρχείων, η εντολή wc εμφανίζει μια γραμμή εξόδου για κάθε αρχείο και μια σύνοψη για τη λίστα.

$ wc alfa help.txt

110 200 1700 alfa

17 85 440 help.txt

127 285 2140 total

Αν δώσουμε την εντολή χωρίς κανένα όρισμα, το Unix θα περιμένει να γράψουμε κάποιο κείμενο και να πατήσουμε τα πλήκτρα Control+D για να μας δώσει τον αριθμό των λέξεων του κειμένου που γράψαμε.

Η εντολή χρησιμοποιεί τον προσδιοριστή -l για να μετράει γραμμές κειμένου, τον -w για να μετράει λέξεις κειμένου και τον -c για να μετράει χαρακτήρες κειμένου.

 

Οι Εντολές pg και more

Με τις εντολές φυλλομέτρησης (pagers), pg και more, μπορούμε να δούμε τα περιεχόμενα ενός αρχείου όταν αυτό είναι μεγάλο και δεν χωράει σε μία μόνο οθόνη. Η εντολή pg, που εμφανίστηκε για πρώτη φορά με το System V, μας επιτρέπει να διατρέξουμε τα περιεχόμενα ενός αρχείου ανά σελίδα, όπου το μέγεθος της σελίδας ρυθμίζεται αρχικά ίσο με τον αριθμό γραμμών της οθόνης πλην μία. Μπορούμε να αλλάξουμε αυτή την τιμή με την επιλογή -lines.

Η εντολή pg εμφανίζει το προτρεπτικό σήμα : μετά την εμφάνιση μιας σελίδας και είναι έτοιμη να δεχθεί έναν αριθμό εντολών. Για να εμφανισθεί η επόμενη σελίδα, μπορούμε να πατήσουμε το πλήκτρο διαστήματος (spacebar) ή το πλήκτρο enter. Αν πατήσουμε το πλήκτρο h θα εμφανισθεί μια οθόνη βοήθειας, ενώ αν γράψουμε n(p), θα εμφανισθεί το επόμενο (προηγούμενο) αρχείο σε μια λίστα αρχείων. Για να βγούμε από την εντολή, πατάμε το πλήκτρο q.

Μια άλλη παρόμοια εντολή, η more, υπάρχει σε εκδόσεις του Unix που δημιουργήθηκαν στο Berkeley και ενσωματώθηκε στο System V όταν κυκλοφόρησε η Release 4. Εμφανίζει το προτρεπτικό σήμα - - Μore- - μετά την εμφάνιση μιας σελίδας και μπορούμε να πατήσουμε το πλήκτρο διαστήματος (spacebar) για να δούμε την επόμενη σελίδα ή το πλήκτρο enter για να δούμε την επόμενη γραμμή του αρχείου.

Με το πλήκτρο b μπορούμε να πάμε μία σελίδα πίσω και με το πλήκτρο h μπορούμε να δούμε την οθόνη βοήθειας. Ακόμη, με την επιλογή 3b μπορούμε να πάμε τρεις σελίδες πίσω.

 

Η Διοχέτευση Εντολών

Με τη λειτουργία του Unix που ονομάζεται διοχέτευση (piping) μπορούμε να πάρουμε το αποτέλεσμα μιας εντολής και να το διοχετεύσουμε σε μια άλλη εντολή σαν είσοδο. Η διοχέτευση συμβολίζεται με το σύμβολο της διακεκομμένης καθέτου (|) και η εντολή που προκύπτει ονομάζεται αγωγός (pipeline).

Το παρακάτω παράδειγμα εμφανίζει τα περιεχόμενα ενός μεγάλου καταλόγου στην οθόνη σελίδα-σελίδα, στέλνοντας (διοχετεύοντας) το αποτέλεσμα στην εντολή φυλλομέτρησης more.

$ ls /usr/bin | more

 

Η Εντολή pr

Με την εντολή pr μπορούμε να μορφοποιήσουμε αρχεία κειμένου σε σελίδες προς εκτύπωση. Τα αποτελέσματα μπορούν να διοχετευθούν σε μια κατάλληλη εντολή παροχέτευσης εκτύπωσης (print spooler) ή σε μια εντολή φυλλομέτρησης (pager).

Μια εντολή παροχέτευσης εκτύπωσης, που συνήθως είναι μια από τις lp, lpr, opr, μας προσφέρει έναν τρόπο να διεκπεραιώνουμε τις εκτυπώσεις μας ενώ ταυτόχρονα ασχολούμαστε μ’ άλλες εργασίες.

Η εντολή pr χρησιμοποιεί μια προκαθορισμένη μορφή σελίδας, σχεδιασμένη για έναν τυπικό εκτυπωτή γραμμών. Μπορούμε, όμως, να χρησιμοποιήσουμε επιλογές της γραμμής εντολών για να αλλάξουμε τη μορφή της εκτύπωσης. Μια σελίδα αποτελείται από την κεφαλίδα, το σώμα του κειμένου και το υποσέλιδο, που είναι 66 γραμμές συνολικά.

Δημιουργούνται περιθώρια αριστερά και δεξιά και γίνεται αναδίπλωση των γραμμών (wrap). Η κεφαλίδα αποτελείται από μία γραμμή που περιέχει την ημερομηνία και την ώρα, το όνομα του αρχείου και τον αριθμό της σελίδας, περικλείεται δε από δύο κενές γραμμές, πάνω και κάτω. Το υποσέλιδο αποτελείται από μια ομάδα πέντε κενών γραμμών.

Μπορούμε να χρησιμοποιήσουμε μια από τις εντολές φυλλομέτρησης για να δούμε το αποτέλεσμα της εντολής pr στην οθόνη ή μπορούμε να διοχετεύσουμε την έξοδο σε μια εντολή παροχέτευσης εκτύπωσης (print spooler), όπως είναι η lp, για να πάρουμε εκτύπωση σε χαρτί.

$ pr .profile | lp

Οι σημαντικότεροι προσδιοριστές της εντολής pr είναι οι εξής :

$ pr -pl30 file1

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

 

Η Εντολή lp

Η εντολή lp στέλνει ένα αρχείο με την κανονική του μορφή, δηλ. όχι μορφοποιημένο, σ’ έναν εκτυπωτή.

$ lp file1

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

$ pr file1 | lp

 

Απλές Εντολές

Η γραμμή εντολών αποτελείται από λέξεις και κενά που χωρίζουν τις λέξεις μεταξύ τους. Η πρώτη λέξη της γραμμής εντολών είναι το αρχείο εντολών ή το πρόγραμμα που θα εκτελεστεί. Αν δεν υπάρχουν σύμβολα που να προκαλούν ανακατεύθυνση (redirection), διοχέτευση (piping) ή ερμηνεία λίστας εντολών, οι επόμενες λέξεις αποτελούν τα ορίσματα της εντολής.

Εκτός από τα ορίσματα ονομάτων αρχείων, μια γραμμή εντολής μπορεί να περιέχει και επιλογές που αλλοιώνουν την προκαθορισμένη συμπεριφορά της. Μια εντολή μπορεί να ολοκληρωθεί κανονικά ή μπορεί να διακοπεί πρόωρα για διάφορους λόγους, όπως σήμα διακοπής από τον χρήστη ή από το Unix. Κάθε απλή εντολή έχει μια τιμή που λέγεται κατάσταση εξόδου (exit status).

Αν η εντολή ολοκληρωθεί ομαλά, επιστρέφει την τιμή 0, αλλιώς επιστρέφει μια μη μηδενική τιμή. Αν η εντολή διακοπεί από τον χρήστη ή από το Unix, ένας κωδικός σήματος δείχνει την αιτία της διακοπής. Η κατάσταση εξόδου για πρόωρη διακοπή είναι 120 (200 στο οκταδικό) συν τον κωδικό σήματος. Αυτές οι τιμές της κατάστασης εξόδου χρησιμοποιούνται από το κέλυφος για την υπό συνθήκη εκτέλεση της εντολής.

 

Αγωγοί Εντολών

Το κέλυφος αντιμετωπίζει μια σειρά εντολών που χωρίζονται μεταξύ τους με το σύμβολο | σαν αγωγό εντολών. Στη διάταξη αυτή, ο αγωγός (|) παίρνει τα αποτελέσματα της εντολής που βρίσκεται στα αριστερά του και τα διοχετεύει στην εντολή που βρίσκεται στα δεξιά του, σαν δεδομένα εισόδου. Η τελευταία εντολή σ’ έναν αγωγό εντολών είναι αυτή που στέλνει την έξοδο στην οθόνη ή την ανακατευθύνει σε κάποιο αρχείο ή σ’ άλλη συσκευή.

Είδαμε νωρίτερα ένα παράδειγμα αγωγού εντολών με τις εντολές ls και more. Στο παρακάτω παράδειγμα, η εντολή cat εμφανίζει ένα αρχείο και το αποτέλεσμα φιλτράρεται από την εντολή grep, η οποία ψάχνει σ’ ολόκληρο το αρχείο για να βρει και να εμφανίσει τις γραμμές που περιέχουν τη λέξη Florina.

$ cat /etc/passwd | grep Florina

 

Λίστες Εντολών

Λίστα εντολών είναι μια σειρά εντολών που χωρίζονται μεταξύ τους με κάποιον από τους παρακάτω χαρακτήρες : ; & && και ||. Στο παρακάτω παράδειγμα, με τη χρήση του συμβόλου ; εκτελούνται διαδοχικά δύο εντολές, πρώτα εκτελείται και ολοκληρώνεται η pwd και μετά η ls.

$ pwd ; ls -al

Το διαχωριστικό &, που χρησιμοποιείται για ασύγχρονη εκτέλεση, και τα && και ||, που χρησιμοποιούνται για υπό συνθήκη εκτέλεση, επεξηγούνται αναλυτικά παρακάτω.

 

Οι Μεταβλητές Περιβάλλοντος

Οι μεταβλητές περιβάλλοντος παρέχουν στο κέλυφος και σε άλλα προγράμματα κάποιες απαραίτητες πληροφορίες. Για παράδειγμα, η μεταβλητή περιβάλλοντος PATH λεει στο κέλυφος πού να ψάξει να βρει τα προγράμματα που καλούμε με τις εντολές μας και αν δεν υπήρχε, θα ήταν πολύ δύσκολο να δίνουμε εντολές.

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

 

Η Εντολή set

Με την εντολή set μπορούμε να δούμε τις μεταβλητές περιβάλλοντος καθώς και τις τρέχουσες τιμές τους. Ενα παράδειγμα χρήσης της εντολής αυτής μπορεί να είναι το εξής :

$ set

HOME=/home/john

LOGNAME=john

MAIL=/var/mail/john

PATH=/usr/bin: /usr/dbin: /usr/ldbin

PS1=$

PS2=>

SHELL=/usr/bin/sh

TERM=ansi

Για να δούμε την τιμή μιας μεταβλητής περιβάλλοντος, χρησιμοποιούμε την εντολή echo και προσθέτουμε ένα $ στην αρχή του ονόματος της μεταβλητής, ως εξής :

$ echo $HOME

/home/john

 

Παρουσίαση των Κοινών Μεταβλητών Περιβάλλοντος

Για κάθε μεταβλητή περιβάλλοντος, δίνεται το όνομά της, μια ενδεικτική τιμή και μια σύντομη περιγραφή.

HOME (/home/john). Είναι το πλήρες όνομα διαδρομής (pathname) του οικείου καταλόγου (home directory) του χρήστη. Από εδώ ξεκινάει η σύνδεσή μας με το σύστημα.

LOGNAME (john). Είναι ο κωδικός χρήστη (user ID) ή, αλλιώς, το όνομα του λογαριασμού μας.

MAIL (/var/mail/john). Ορίζει το γραμματοκιβώτιο (mailbox) του χρήστη, που είναι ένα αρχείο του καταλόγου /var/mail όπου εκεί αποθηκεύονται τα μηνύματα που λαμβάνουμε με το ηλεκτρονικό ταχυδρομείο.

MAILCHECK (600). Ορίζει τον αριθμό των δευτερολέπτων που πρέπει να περιμένει το σύστημα μεταξύ δύο ελέγχων άφιξης νέων μηνυμάτων, που στο συγκεκριμένο παράδειγμα είναι τα 10 λεπτά. Οταν περάσει αυτό το χρονικό διάστημα, το σύστημα ελέγχει αν έχει έρθει κάποιο καινούργιο μήνυμα για μας και εμφανίζει το μήνυμα “You have mail”.

PATH (/usr/bin: /usr/dbin: /usr/ldbin). Ορίζει τους καταλόγους στους οποίους πρέπει να αναζητηθούν τα προγράμματα που αναφέρονται στις εντολές που δίνουμε. Ο διαχειριστής του συστήματος δίνει μια προκαθορισμένη τιμή για την PATH, που κληρονομούν όλοι οι χρήστες, αλλά που είμαστε ελεύθεροι να την αλλάξουμε. Τα ονόματα των καταλόγων διαχωρίζονται με τον χαρακτήρα :.

PS1 ($). Είναι το κύριο προτρεπτικό σήμα (prompt string) ή ο ενδείκτης που εμφανίζει το σύστημά μας.

PS2 (>). Είναι ο ενδείκτης δεύτερης γραμμής εντολών, δηλ. όταν μια εντολή δεν χωράει σε μια γραμμή, το κέλυφος μάς ζητάει το υπόλοιπο της εντολής μ’ αυτό το προτρεπτικό σήμα.

SHELL (/usr/bin/sh). Ορίζει το κέλυφος που θα χρησιμοποιηθεί όταν ζητηθεί υποκέλυφος (subshell).

TERM (ansi). Ορίζει τον σωστό τύπο του τερματικού για προγράμματα που χρησιμοποιούν πολύ την οθόνη και που πρέπει να ξέρουν πώς να τοποθετήσουν τον δρομέα, πώς να καθαρίσουν την οθόνη, πώς να ορίσουν ιδιότητες της οθόνης κ.ά.

TZ (:US/Mountain). Ορίζει την ζώνη ώρας (time zone) του συστήματός μας. Το παράδειγμα δείχνει ότι ο χρήστης βρίσκεται στην ορεινή ζώνη ώρας των ΗΠΑ.

 

Η Εντολή unset

Με την εντολή unset μπορούμε να αφαιρέσουμε μια μεταβλητή από το περιβάλλον μας. Οι μεταβλητές που δεν μπορούν να καταργηθούν είναι οι PATH, PS1, PS2, MAILCHECK και IFS. Για παράδειγμα, για να αφαιρέσουμε τη μεταβλητή PROJPATH, δίνουμε την εξής εντολή :

$ unset PROJPATH

 

Η Εντολή export

Οι μεταβλητές που ορίζουμε στο περιβάλλον μας λέγονται τοπικές μεταβλητές (local variables). Οι μεταβλητές αυτές είναι ορατές μέσα στο συγκεκριμένο κέλυφος, αλλά δεν κληρονομούνται από θυγατρικές διαδικασίες, εκτός αν τις “εξάγουμε”.

Με την εντολή export μπορούμε να κάνουμε μια τοπική μεταβλητή να είναι ορατή σε μια θυγατρική διεργασία, όπως στο παρακάτω παράδειγμα, όπου εξάγουμε το όνομα του χρήστη :

$ PERSONAL=Michael; export PERSONAL

 

Η Εντολή env

Με την εντολή env μπορούμε να προσθέτουμε μεταβλητές ή να αλλάζουμε τις τιμές των ήδη ορισμένων μεταβλητών, τη στιγμή που δίνουμε μια εντολή.

$ env όνομα_μεταβλητής=τιμή ... εντολή

 

Η Εντολή readonly

Με την εντολή readonly μπορούμε να δούμε μια λίστα των μεταβλητών που έχουν χαρακτηρισθεί μόνο για ανάγνωση ή μπορούμε να προστατεύσουμε μία ή περισσότερες μεταβλητές από αλλαγές. Μια μεταβλητή που έχει χαρακτηρισθεί μόνο για ανάγνωση (read-only) είναι στην ουσία μια σταθερά και δεν μπορούμε να αλλάξουμε την τιμή της.

$ readonly

$ readonly PERSONAL PROJLIB

 

Αρχεία Καθιερωμένης Εισόδου και Εξόδου

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

Κάθε διεργασία του Unix μπορεί να έχει ανοικτούς μέχρι 20 περιγραφείς αρχείων (file descriptors) κατά την εκτέλεση προγραμμάτων, που είναι αριθμοί από το 0 μέχρι το 19. Όταν δίνουμε μια εντολή για να εκτελεστεί ένα πρόγραμμα, το Unix ανοίγει αυτόματα τρεις απ’ αυτούς και τους συσχετίζει με το αρχείο συσκευής (device file) που αντιστοιχεί στο τερματικό του χρήστη. Οι ανοικτοί περιγραφείς αρχείων είναι γνωστοί με τα παρακάτω ονόματα :

Οι προκαθορισμένες συνδέσεις αυτών των καναλιών είναι το πληκτρολόγιο με την καθιερωμένη είσοδο και η οθόνη με την καθιερωμένη έξοδο και έξοδο λαθών. Τα δεδομένα στην καθιερωμένη είσοδο και έξοδο αποθηκεύονται σε μια περιοχή προσωρινής αποθήκευσης (buffer) κατά γραμμές. Αυτό σημαίνει ότι τα δεδομένα που συγκεντρώνονται στον buffer δεν φθάνουν στον προορισμό τους προτού πατηθεί το πλήκτρο enter.

Πρέπει να έχουμε υπόψη μας ότι η καθιερωμένη έξοδος λαθών δεν έχει περιοχή προσωρινής αποθήκευσης και ο λόγος είναι ότι τα μηνύματα λαθών πρέπει να παρουσιάζονται αμέσως στην οθόνη του χρήστη και όχι να πηγαίνουν σε κάποιο buffer ή σε κάποια άλλη συσκευή. Αντίθετα, η καθιερωμένη είσοδος/έξοδος μπορεί να ανακατευθυνθεί (redirected) από το πληκτρολόγιο ή την οθόνη σε κάποια άλλη συσκευή ή αρχείο.

 

Ανακατεύθυνση της Εισόδου

Υπάρχει περίπτωση να θέλουμε μια εντολή να δέχεται δεδομένα από κάποια πηγή (αρχείο ή συσκευή) διαφορετική από το πληκτρολόγιο. Για παράδειγμα, αντί να γράψουμε και να στείλουμε ένα μήνυμα σ’ έναν άλλον χρήστη απευθείας, το γράφουμε και το επεξεργαζόμαστε μ’ έναν διορθωτή κειμένου και ορίζουμε τα δεδομένα εισόδου της εντολής mail να προέρχονται από το συγκεκριμένο αρχείο.

$ mail john < data_file.dat

Η παραπάνω εντολή εκτελεί το πρόγραμμα mail, με παραλήπτη τον χρήστη john και με δεδομένα εισόδου από το αρχείο data_file.dat. Η μόνη χρήση του πληκτρολογίου σ’ αυτή την περίπτωση είναι ότι μπορούμε να πατήσουμε το πλήκτρο Break για να διακόψουμε το πρόγραμμα. Η ανακατεύθυνση της εισόδου γίνεται με το σύμβολο <.

 

Ανακατεύθυνση της Εξόδου

Η έξοδος μιας εντολής που προορίζεται για την οθόνη, μπορεί να τοποθετηθεί σ’ ένα αρχείο, να διοχετευθεί σε κάποιον αγωγό (pipeline) για να αποτελέσει είσοδο σε μια άλλη εντολή ή να σταλεί σε κάποια άλλη συσκευή. Η ανακατεύθυνση της εξόδου γίνεται με το σύμβολο > και ένα κλασικό παράδειγμα είναι η χρήση της εντολής cat :

$ cat > data.txt

Στην παραπάνω εντολή, γράφουμε το κείμενο που θέλουμε, πατώντας το πλήκτρο enter για να αλλάξουμε γραμμή και τα πλήκτρα Control+D σε μια κενή γραμμή για να κλείσει το αρχείο εξόδου και να τερματιστεί η εντολή cat. Αν δώσουμε την ίδια εντολή όπως παραπάνω, αλλά χωρίς το σύμβολο >, θα δούμε τα περιεχόμενα του αρχείου data.txt.

Πρέπει να είμαστε προσεκτικοί όταν χρησιμοποιούμε ανακατεύθυνση εξόδου σε αρχείο, γιατί το Unix είτε δημιουργεί ένα νέο αρχείο ή διαγράφει ένα ήδη υπάρχον.

 

Ανακατεύθυνση της Εξόδου Λαθών

Για να πάρουμε τα μηνύματα λαθών σε κάποιο αρχείο και όχι στην οθόνη, χρησιμοποιούμε τον συνδυασμό του 2 με το σύμβολο >, αλλά χωρίς κενό ανάμεσά τους, ως εξής :

$ εντολή 2> αρχείο_λαθών

Το 2 αναφέρεται στον περιγραφέα αρχείου της καθιερωμένης εξόδου λαθών, ενώ για την ανακατεύθυνση της καθιερωμένης εξόδου, μπορούμε να χρησιμοποιήσουμε το 1>, που είναι η εξ ορισμού επιλογή.

 

Προσάρτηση της Εξόδου μιας Εντολής σε Αρχείο

Για να προσαρτήσουμε κείμενο στο τέλος κάποιου αρχείου, χρησιμοποιούμε το σύμβολο >>. Η έξοδος (το αποτέλεσμα) μιας εντολής που περιέχει το σύμβολο >>, όπως η εντολή >> αρχείο_προορισμού, προσαρτάται στο τέλος του αρχείου_προορισμού. Αν το αρχείο δεν υπάρχει, δημιουργείται.

$ date >> notes.txt

$ cat >> notes.txt

Στο παραπάνω παράδειγμα, η εντολή date προσαρτεί την ημερομηνία και την ώρα του συστήματος στο αρχείο notes.txt. Μετά, η εντολή cat προσαρτεί ό,τι κείμενο γράψουμε στο ίδιο αρχείο.

 

Η Επικοινωνία με Άλλους Χρήστες

Μια από τις πιο δημοφιλείς ασχολίες για τους χρήστες του Unix είναι η δυνατότητα επικοινωνίας μ’ άλλους χρήστες. Η επικοινωνία αυτή γίνεται πολύ εύκολα και δημιουργεί και την αίσθηση της κοινότητας.

Η επικοινωνία στο Unix περιλαμβάνει την άμεση αποστολή και λήψη απλών και σύντομων μηνυμάτων, που γίνεται με τις εντολές write και talk, καθώς και το ηλεκτρονικό ταχυδρομείο (electronic mail), που γίνεται με την εντολή mail.

 

Η Εντολή mesg

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

Για να δούμε πώς είναι ρυθμισμένο το δικό μας τερματικό, χρησιμοποιούμε την εντολή mesg χωρίς κανένα όρισμα και αν το αποτέλεσμα είναι is n, αυτό σημαίνει ότι εμποδίζονται οι προσπάθειες γραφής στο τερματικό μας, ενώ αν το αποτέλεσμα είναι is y, αυτό σημαίνει ότι μπορούμε να λαμβάνουμε μηνύματα.

Δεν πρέπει να ξεχνάμε ότι ο υπερχρήστης (superuser) μπορεί πάντα να μας στέλνει μηνύματα, άσχετα από τη ρύθμιση του τερματικού μας. Για να επιτρέψουμε τη λήψη μηνυμάτων στο τερματικό μας, δίνουμε την εντολή mesg -y, ενώ για να την αποτρέψουμε, δίνουμε την εντολή mesg -n.

 

Η Εντολή write

Με την εντολή write μπορούμε να έχουμε άμεσο διάλογο με το τερματικό ενός άλλου χρήστη του ίδιου συστήματος. Γράφουμε απλά write και το όνομα του χρήστη που θέλουμε να συνομιλήσουμε, π.χ. write john, και τα μηνύματά μας θα αναμιχθούν στην οθόνη με κείνα του συνομιλητή μας.

Μια συνηθισμένη σύμβαση για να δηλώσουμε το τέλος μιας γραμμής, είναι να γράψουμε ένα ο μόνο του σε μια γραμμή, που σημαίνει over. Στο τέλος της συνομιλίας, μπορούμε να γράψουμε οο, που σημαίνει over and out.

Για να τερματίσουμε τη συνομιλία, μπορούμε να πατήσουμε τα πλήκτρα Control+D και σε παλιότερες εκδόσεις του Unix το τέλος μηνύματος (end of message) μπορεί να εμφανίζεται σαν <ΕΟΤ> (end of transmission).

 

Η Εντολή talk

Η εντολή talk κάνει ουσιαστικά την ίδια δουλειά με την write, αλλά διαιρεί την οθόνη του τερματικού σε δύο τμήματα, δηλ. δεν μπερδεύονται τα μηνύματα του αποστολέα και του παραλήπτη. Για να τερματίσουμε τη συνομιλία, μπορούμε να πατήσουμε τα πλήκτρα Control+D ή το πλήκτρο Break.

Με την εντολή talk όχι μόνο μπορούμε να επικοινωνούμε άμεσα με τους άλλους χρήστες του συστήματος, αλλά και με τους χρήστες ενός τοπικού δικτύου (LAN).

 

Το Ηλεκτρονικό Ταχυδρομείο

Το κύριο πρόβλημα με την άμεση επικοινωνία είναι ότι είναι σύγχρονη (synchronous), δηλ. οι χρήστες πρέπει να είναι και οι δύο συνδεδεμένοι στο σύστημα και διατεθειμένοι να συμμετάσχουν ταυτόχρονα. Ομως, ο παραλήπτης είναι πιθανό να κάνει κάποια σοβαρή δουλειά εκείνη τη στιγμή ή να έχει “κατεβάσει τα ρολά” (mesg -n) ή μπορεί ακόμη και να μην είναι καν συνδεδεμένος στο σύστημα.

Ενα ασύγχρονο (asynchronous) μέσο επικοινωνίας, όπως είναι το ηλεκτρονικό ταχυδρομείο (electronic mail), σέβεται πολύ περισσότερο τον χρόνο και τις επιθυμίες των άλλων χρηστών. Για να μπορεί να γίνει πραγματικότητα το ηλεκτρονικό ταχυδρομείο, υπάρχει ένα σύστημα καταλόγων και αρχείων όπου αποθηκεύονται τα μηνύματα του κάθε χρήστη.

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

Για να συνοψίσουμε, ένας χρήστης στέλνει ένα μήνυμα σ’ έναν άλλον χρήστη, ο οποίος δεν είναι συνδεδεμένος στο σύστημα εκείνη τη στιγμή. Το μήνυμα προσαρτάται στο κατάλληλο αρχείο ταχυδρομείου του παραλήπτη και όταν αυτός συνδεθεί στο σύστημα, θα εμφανισθεί στο τερματικό του το μήνυμα “you have mail”, ειδοποίηση που σημαίνει ότι υπάρχει ένα τουλάχιστον μήνυμα στο όνομά του που δεν έχει διαβάσει.

Ο παραλήπτης μπορεί να διαβάσει το καινούργιο μήνυμα και μετά να το αποθηκεύσει ή να το διαγράψει ή να απαντήσει σ’ αυτό ή μπορεί ακόμη να το αφήσει και να το επεξεργαστεί αργότερα.

 

Αποστολή Αλληλογραφίας

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

Με τα νέα προγράμματα ηλεκτρονικού ταχυδρομείου, μπορούμε να καλούμε ένα πρόγραμμα διόρθωσης κειμένου, όπως το ed, και να γράψουμε το μήνυμά μας, πριν το στείλουμε στον παραλήπτη. Αν δεν χρησιμοποιούμε πρόγραμμα διόρθωσης κειμένου, πρέπει να πατήσουμε τα πλήκτρα Control+D για να τερματίσουμε την καταχώρηση και να σταλεί το μήνυμα.

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

$ mail john

Subject : Greetings from Kostas

Hi John,

Hope you are fine. I am coming to your city next month.

...

Bye. Kostas.

<Control+D>

$

 

Ανάγνωση Αλληλογραφίας

Για να διαβάσουμε την αλληλογραφία μας, δίνουμε την εντολή mail χωρίς κανένα όρισμα. Το σύστημα θα μας ενημερώσει αν υπάρχουν καινούργια μηνύματα, εμφανίζοντας μια λίστα με την ημερομηνία, την ώρα και το θέμα του κάθε μηνύματος. Για να δούμε τα μηνύματα, πατάμε το πλήκτρο enter.

Αν θέλουμε να μάθουμε τι μπορούμε να κάνουμε στη συνέχεια, μπορούμε να γράψουμε ? για να εμφανισθεί μια λίστα με τις βασικές εντολές ταχυδρομείου. Για να αποθηκεύσουμε το τρέχον μήνυμα, γράφουμε s, για να το προσαρτήσουμε στο αρχείο του ταχυδρομείου μας ή s όνομα αρχείου, για να το προσαρτήσουμε σ’ ένα άλλο αρχείο δικής μας επιλογής.

Με την εντολή w, στη θέση της s, μπορούμε να αποθηκεύσουμε το μήνυμα χωρίς τις πληροφορίες της κεφαλίδας του. Για να διαγράψουμε το μήνυμα, δίνουμε d και για να βγούμε από το πρόγραμμα του ηλεκτρονικού ταχυδρομείου, δίνουμε q.

 

Η Εντολή date

Εμφανίζει την τρέχουσα ημερομηνία και ώρα του συστήματος στην οθόνη. Για παράδειγμα :

$ date

Mon Oct 19 14:55:18 pst 1994

 

Η Εντολή cal

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

$ cal

$ cal 10 1999

$ cal 1995

 

Η Εντολή who

Με την εντολή who μπορούμε να δούμε ποιοι είναι συνδεδεμένοι στο σύστημα. Όρισμα της εντολής είναι το am I, που δίνει πληροφορίες μόνο για τη δική μας σύνδεση. Εμφανίζει με τη σειρά το όνομα του χρήστη, το σημείο σύνδεσής του και την ημερομηνία και ώρα σύνδεσης.

 

Η Εντολή man

Εμφανίζει χρήσιμες πληροφορίες για εντολές του Unix. Για παράδειγμα, η επόμενη εντολή

$ man date

δίνει πληροφορίες για την εντολή date.

 

Η Εντολή calendar

Με την εντολή αυτή μπορούμε να κρατάμε ραντεβού και υπομνήσεις, καθώς παρέχει μια ενσωματωμένη στο σύστημα υπηρεσία υπομνήσεων, που τοποθετούνται σ’ ένα αρχείο με την ονομασία calendar. Μέσα στο αρχείο αυτό γράφουμε τα μηνύματα και τις ημερομηνίες που θέλουμε και μόλις συνδεθούμε με το σύστημα, αυτό μάς ενημερώνει μέσω της εντολής mail για τα μηνύματα που αναφέρονται σε ημερομηνίες μια μέρα πιο νωρίς καθώς και την ημέρα του μηνύματος.

 

Η Εντολή time

Η εντολή αυτή μας δίνει τον χρόνο εκτέλεσης μιας εντολής σε τρεις χρόνους. Ο πρώτος είναι ο πραγματικός χρόνος (real) που πέρασε από την αρχή μέχρι το τέλος της εκτέλεσης της εντολής, ο δεύτερος είναι ο χρόνος χειριστή (user) που απασχόλησε την CPU η εντολή και ο τρίτος είναι ο χρόνος του συστήματος (sys) που είναι ο επιπλέον χρόνος που χρειάστηκε η CPU για να εκτελέσει την εντολή.

$ time sort iek.florinas > test

Στην παραπάνω εντολή, το Unix θα δώσει την εξής απάντηση :

              2.3 real

1.0 user

0.2 sys

που σημαίνει ότι για την ταξινόμηση του αρχείου iek.florinas και για τη δημιουργία του αρχείου test χρειάστηκαν 2,3 λεπτά πραγματικός χρόνος, 1 λεπτό απασχολήθηκε η CPU και απαιτήθηκαν 2 επιπλέον δευτερόλεπτα εξυπηρέτησης από την CPU.

 

Η Εντολή wall

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

 

back.gif (9867 bytes)

Επιστροφή