Κεφάλαιο 8 Το Κέλυφος Σε ένα γραφικό περιβάλλον, η διεπαφή παρέχεται από ένα πρόγραμμα που δημιουργεί παράθυρα, μπάρες κύλισης, μενού κλπ. Σε ένα περιβάλλον γραμμής εντολών, η διεπαφή χρήστη παρέχεται από ένα κέλυφος, το οποίο διερμηνεύει εντολές και γενικά κάνει τα πράγματα χρηστικά. Αμέσως μετά την επιβεβαίωση χρήστη (login, η οποία καλύπτεται σε αυτό το κεφάλαιο), οι χρήστες μεταφέρονται σε ένα κέλυφος και τους επιτρέπεται να κοιτάξουν τη δουλειά τους. Αυτό το κεφάλαιο λειτουργεί σαν μια εισαγωγή στο κέλυφος, και στο πιο διαδεδομένο κέλυφος μεταξύ των χρηστών Linux Το Bourne Again Shell (bash). Για αναλυτικότερη περιγραφή οποιουδήποτε σημείου αυτού του κεφαλαίου, ανατρέξτε στη σελίδα man του bash(1). 8.1 Χρήστες 8.1.1 Κάνοντας logging Λοιπόν, μόλις ο υπολογιστής ξεκίνησε και βλέπετε κάτι σαν αυτό: Welcome to Linux 2.4.18 Last login: Wed Jan 1 15:59:14-0500 2005 on tty6. darkstar login: Κανείς δεν μίλησε για επιβεβαίωση χρήστη. Και τι είναι ένα darkstar; Μην ανησυχείτε, πιθανότατα δεν πυροδοτήσατε έναν κοινοτικό υπερδιαστημικό σύνδεσμο στο τεχνητό φεγγάρι της αυτοκρατορίας (φοβάμαι ότι το πρωτόκολλο του κοινοτικού υπερδιαστημικού συνδέσμου δεν υποστηρίζεται αυτή τη στιγμή από τον Linux πυρήνα. Ίσως το κλαδί 2.8 του πυρήνα θα παρέχει επιτέλους αυτή την πολυαναμενόμενη υποστήριξη). Όχι, darkstar είναι απλά το όνομα ενός από τους υπολογιστές σας, και είναι το προεπιλεγμένο του όνομα. Αν καθορίσατε ένα όνομα για τον υπολογιστή σας κατά τη ρύθμιση, θα πρέπει να βλέπετε αυτό αντί για το darkstar. Σχετικά με την επιβεβαίωση χρήστη... Αν είναι η πρώτη σας φορά, θα θέλετε να εισέλθετε ως root. Θα σας ζητηθεί ένας κωδικός. Αν καθορίσατε έναν κατά τη διαδικασία ρύθμισης, είναι αυτός που ζητάτε. Αν όχι, απλά πατήστε enter. Αυτό είναι είστε μέσα! 8.1.2 Root: Ο Υπερχρήστης OK, ποιος ή τι είναι root; Και τι κάνει με έναν λογαριασμό στο δικό σας σύστημα; Λοιπόν, στον κόσμο του Unix και των παρόμοιων λειτουργικών συστημάτων (όπως το Linux), υπάρχουν χρήστες και χρήστες. Θα το δούμε με περισσότερες λεπτομέρειες αργότερα, αλλά το σημαντικό που πρέπει να ξέρετε τώρα είναι ότι ο root είναι ο χρήστης πάνω από όλους τους άλλους. Ο root είναι πανίσχυρος, τα ξέρει όλα και κανείς δεν είναι ανυπάκουος στον root. Απλά δεν επιτρέπεται. Ο root είναι αυτό που αποκαλούμε υπερχρήστης, και δίκαια. Και το καλύτερο από όλα, ο root είστε εσείς. Ωραία; Αν δεν είστε σίγουροι: ναι, πολύ ωραία. Το μειονέκτημα είναι, ωστόσο, ότι στον root επιτρέπεται εκ φύσεως να καταστρέψει ότι θέλει. Ίσως να θέλετε να προτρέξετε στην ενότητα 12.1.1 και να δείτε πως θα προσθέσετε έναν χρήστη. Μετά θα εισέλθετε ως εκείνος ο χρήστης και θα δουλέψετε από εκεί. Η παραδοσιακή σοφία είναι ότι είναι καλύτερα να γίνετε υπερχρήστης μόνο όταν είναι απολύτως απαραίτητο, ώστε να μειώσετε την πιθανότατα κατά λάθος να χαλάσετε κάτι. Με την ευκαιρία, αν αποφασίσετε ότι θέλετε να γίνετε root ενώ έχετε εισέλθει ως κάποιος άλλος, κανένα πρόβλημα. Απλά χρησιμοποιήστε την εντολή su(1). Θα σας ζητηθεί ο κωδικός του root και μετά θα σας κάνει root μέχρι να δώσετε την εντολή exit ή logout. Μπορείτε επίσης να γίνετε οποιοσδήποτε άλλος χρήστης με την su, αρκεί να ξέρετε τον κωδικό αυτού του χρήστη: su logan, για παράδειγμα, θα σας έκανε εμένα.
Στον root επιτρέπεται με την su να γίνει οποιοσδήποτε χρήστης, χωρίς κωδικό. 8.2 Η Γραμμή Εντολών 8.2.1 Τρέχοντας Προγράμματα Είναι δύσκολο να καταφέρετε πολλά χωρίς να τρέξετε ένα πρόγραμμα. Ίσως να καταφέρετε να στηρίξετε κάτι με τον υπολογιστή σας ή να κρατήσετε μια πόρτα ανοικτή, και μερικοί κάνουν τον πιο υπέροχο θόρυβο όταν τρέχουν, αλλά ως εκεί. Και νομίζω όλοι μπορούμε να συμφωνήσουμε ότι η χρήση του ως ένα στήριγμα πόρτας που μουγκρίζει δεν είναι αυτό που εξασφάλισε στον προσωπικό υπολογιστή την δημοτικότητα που τώρα απολαμβάνει. Άρα, θυμάστε πως οτιδήποτε σχεδόν στο Linux είναι αρχείο; Λοιπόν, αυτό ισχύει και για τα προγράμματα. Κάθε εντολή που τρέχετε (που δεν είναι ενσωματωμένη στο κέλυφος) βρίσκεται κάπου σε ένα αρχείο. Τρέχετε ένα πρόγραμμα απλά καθορίζοντας το πλήρες μονοπάτι προς αυτό. Για παράδειγμα, θυμάστε την εντολή su από την προηγούμενη ενότητα; Λοιπόν, στην πραγματικότητα βρίσκεται στον κατάλογο /bin: το /bin/su θα την έτρεχε μια χαρά. Γιατί λοιπόν, τότε, πληκτρολογώντας απλά su δουλεύει; Εν τέλει δεν είπατε ότι βρίσκεται στο /bin. Θα μπορούσε το ίδιο εύκολα να βρίσκεται στο /usr/local/share, σωστά; Πως ήξερε; Η απάντηση σε αυτό βρίσκεται στην PATH μεταβλητή περιβάλλοντος. Τα περισσότερα κελύφη έχουν είτε την PATH ή κάτι που μοιάζει πολύ με αυτή. Βασικά περιέχει μια λίστα καταλόγων στους οποίους το κέλυφος αναζητά τα προγράμματα που προσπαθείτε να τρέξετε. Έτσι, μόλις τρέξατε την su, το κέλυφος διέτρεξε τη λίστα καταλόγων του, ελέγχοντας κάθε ένα για ένα εκτελέσιμο αρχείο su το οποίο θα μπορούσε να τρέξει. Το πρώτο που βρήκε το έτρεξε. Αυτό συμβαίνει κάθε φορά που τρέχετε ένα πρόγραμμα χωρίς να καθορίσετε ένα πλήρες μονοπάτι προς αυτό. Αν λάβετε ένα σφάλμα command not found (η εντολή δεν βρέθηκε), αυτό σημαίνει μόν ότι το πρόγραμμα που προσπαθήσατε να τρέξετε δεν βρίσκεται στο PATH σας. (Φυσικά, αυτό θα συνέβαινε και αν το πρόγραμμα δεν υπάρχει γενικά...) Θα μιλήσουμε για τις μεταβλητές περιβάλλοντος πιο αναλυτικά στην ενότητα 8.3.1. Θυμηθείτε επίσης ότι το. είναι συντομογραφία για τον ενεργό κατάλογο, άρα αν έτυχε να βρίσκεστε στο /bin, το./su θα δούλευε ως ρητό πλήρες μονοπάτι. 8.2.2 Ταίριασμα χαρακτήρων Σχεδόν κάθε κέλυφος αναγνωρίζει μερικούς χαρακτήρες ως υποκατάστατα ή συντομογραφίες που σημαίνουν πως οτιδήποτε μπορεί να έρθει εδώ. Τέτοιοι χαρακτήρες εύστοχα ονομάζονται wildcards. Οι πιο συνηθισμένοι είναι το * και το?. Κατά σύμβαση, το? συνήθως ταιριάζει έναν μοναδικό χαρακτήρα. Για παράδειγμα, ας υποθέσουμε ότι βρίσκεστε σε έναν κατάλογο με τρία αρχεία: ex1.txt, ex2.txt και ex3.txt. Θέλετε να αντιγράψετε όλα αυτά τα αρχεία (χρησιμοποιώντας την εντολή cp που καλύπτουμε στην ενότητα 10.5.1) σε έναν άλλο κατάλογο, ας πούμε τον /tmp. Λοιπόν, το να πληκτρολογήσετε cp ex1.txt ex2.txt ex3.txt /tmp είναι υπερβολικά πολλή δουλειά. Είναι πολύ ευκολότερο να πληκτρολογήσετε cp ex?.txt /tmp. Το? θα ταιριάξει με κάθε έναν από τους χαρακτήρες 1, 2 και 3, και θα αντικατασταθεί για καθέναν από αυτούς. Τι λέτε; Ακόμα και αυτό είναι πολλή δουλειά; Σωστά. Είναι αποκρουστικό. Έχουμε εργασιακούς νόμους να μας προστατεύουν από τέτοια πράγματα. Ευτυχώς έχουμε και το *. Όπως ήδη αναφέραμε το * ταιριάζει με οποιονδήποτε αριθμό χαρακτήρων, συμπεριλαμβανομένου του 9. Άρα αν υπάρχουν τρία αρχεία και είναι τα μόνα σε έναν κατάλογο, θα μπορούσαμε απλά να έχουμε πει cp * /tmp και να τα μαζεύαμε όλα μαζί. Ας υποθέσουμε, ωστόσο, ότι υπάρχει και ένα αρχείο που λέγεται ex.txt και ένα που λέγεται hejaz.txt. Θέλουμε να αντιγράψουμε το ex.txt αλλά όχι το hejaz.txt. Η cp ex* /tmp θα κάνει αυτό για εμάς. Η cp ex?.txt /tmp θα συμπεριλάμβανε, φυσικά, μόνο τα τρία αρχικά αρχεία μας. Δεν υπάρχει χαρακτήρας στο ex.txt για να ταιριάξει με το?, άρα θα έμενε έξω.
Μια ακόμη συνηθισμένη wildcard είναι το ζεύγος αγκυλών []. Οποιοιδήποτε χαρακτήρες στις αγκύλες θα αντικατασταθούν στη θέση του [] για να βρεθούν ταιριάσματα. Ακούγεται περίπλοκο; Δεν είναι τόσο άσχημο. Ας υποθέσουμε για παράδειγμα ότι έχουμε έναν κατάλογο που περιλαμβάνει τα εξής 8 αρχεία: a1, a2, a3, a4, aa, ab, ac και ad. Θέλουμε να βρούμε μόνο τα αρχεία που τελειώνουν με αριθμούς. Η [] θα το κάνει αυτό. % ls a[1-4] a1 a2 a3 a4 Αλλά τι γίνεται αν θέλουμε μόνο τα a1, a2, a4; Στο προηγούμενο παράδειγμα χρησιμοποιήσαμε το εννοώντας όλες τις τιμές από 1 έως 4. Μπορούμε επίσης να χωρίσουμε μεμονωμένες τιμές με κόμματα. % ls a[1,2,4] a1 a2 a4 Ξέρω τι σκέφτεστε τώρα, τι γίνεται με τα γράμματα;. Το Linux είναι ευαίσθητο στα κεφαλαία και τα πεζά (case sensitive) που σημαίνει ότι το a και το A είναι διαφορετικοί χαρακτήρες και σχετίζονται μόνο στο μυαλό σας. Τα κεφαλαία πάντα είναι μπροστά από τα μικρά, άρα τα A και B είναι πριν τα a και b. Συνεχίζοντας το προηγούμενο παράδειγμα, αν θα θέλαμε τα αρχεία a1 και A1 θα μπορούσαμε να τα βρούμε γρήγορα με []. % ls [A,a]1 A1 a1 Σημειώστε ότι αν περιλαμβάναμε παύλα αντί για κόμμα θα παίρναμε λάθος αποτελέσματα. % ls [A-a]1 A1 B1 C1 D1 a1 Μπορείτε επίσης να συνδυάσετε συμβολοσειρές με παύλες και κόμματα. % ls [A,a-d] A1 a1 b1 c1 d1 8.2.3 Ανακατεύθυνση Εισόδου/Εξόδου και Διασωλήνωση (Έρχεται κάτι θαυμάσιο) % ps > blargh Ξέρετε τι είναι αυτό; Είμαι εγώ που τρέχω το ps για να δω ποιες διεργασίες τρέχουν. Το ps καλύπτεται στην ενότητα 11.3. Δεν είναι αυτό το ενδιαφέρον μέρος. Το ενδιαφέρον είναι το > blargh, που σημαίνει, χοντρικά, πάρε την έξοδο της ps και γράψε την σε ένα αρχείο που λέγεται blargh. Αλλά περιμένετε, γίνεται ακόμα καλύτερο. % ps less Αυτό παίρνει την έξοδο της ps και την διασωληνώνει μέσω της less, άρα μπορώ να κυλώ μέσω αυτής με την ησυχία μου. % ps >> blargh Αυτή είναι ο τρίτη πιο συχνά χρησιμοποιούμενη ανακατεύθυνση. Κάνει το ίδιο με το >, εκτός του ότι το >> προσθέτει την έξοδο της ps στο αρχείο blargh, αν αυτό υπάρχει. Αν όχι, ακριβώς όπως με την >, θα δημιουργηθεί. (το > θα εξαφανίσει το τωρινό περιεχόμενο του blargh.)
Υπάρχει επίσης ο τελεστής <, που σημαίνει πάρε την είσοδό σου από το εξής, αλλά δεν χρησιμοποιείται τόσο συχνά. % fromdos < dosfile.txt > unixfile.txt Η ανακατεύθυνση γίνεται πραγματικά διασκεδαστική όταν αρχίσετε να τη στοιβάζετε: % ps tac >> blargh Αυτό θα τρέξει το ps, θα αντιστρέψει τις γραμμές της εξόδου του και θα τις προσθέσει στο αρχείο blargh. Μπορείτε να στοιβάσετε όσες από αυτές θέλετε. Απλά να θυμάστε ότι διερμηνεύονται από τα αριστερά προς τα δεξιά. Δείτε τη σελίδα man του bash(1) για πιο αναλυτική περιγραφή της ανακατεύθυνσης. 8.3 Το κέλυφος Bourne Again (bash) 8.3.1 Μεταβλητές Περιβάλλοντος Ένα σύστημα Linux είναι ένα περίπλοκο τέρας, και υπάρχουν πολλά τα οποία πρέπει να παρακολουθείτε, πολλές μικρές λεπτομέρειες που έρχονται στο παιχνίδι στην κανονική διεπαφή σας με διάφορα προγράμματα (μερικά από τα οποία μπορεί ακόμα και να μην τα γνωρίζετε). Κανείς δεν θέλει να περάσει μια δέσμη επιλογών σε κάθε πρόγραμμα που τρέχει, λέγοντάς του τι τερματικό χρησιμοποιείται, το όνομα του υπολογιστή, πως πρέπει να φαίνεται η γραμμή εντολών... Άρα ως μηχανισμό αντιγραφής οι χρήστες έχουν αυτό που λέμε περιβάλλον. Το περιβάλλον καθορίζει τις συνθήκες στις οποίες τρέχουν τα προγράμματα, και μέρος του ορισμού του είναι μεταβλητό. Ο χρήστης μπορεί να το τροποποιήσει και να παίξει με αυτό, όπως είναι σωστό σε ένα σύστημα Linux. Σχεδόν κάθε κέλυφος έχει μεταβλητές περιβάλλοντος (αν όχι, δεν είναι και πολύ χρηστικό κέλυφος). Εδώ θα δώσουμε μια επισκόπηση των εντολών που παρέχει ο bash για την επεξεργασία των μεταβλητών περιβάλλοντός του. H set από μόνη της θα σας δείξει όλες τις μεταβλητές περιβάλλοντος που έχουν οριστεί, όπως επίσης και τις τιμές τους. Όπως οι περισσότερες ενσωματωμένες στο κέλυφος εντολές, μπορεί να κάνει πολλά άλλα πράγματα (με παραμέτρους). Θα αφήσουμε ωστόσο στη σελίδα man του bash(1) να τα καλύψει αυτά. Το παράδειγμα 8-1 δείχνει ένα απόσπασμα μιας εντολής set να τρέχει σε έναν από τους υπολογιστές του συγγραφέα. Παρατηρήστε σε αυτό το παράδειγμα την μεταβλητή PATH που περιγράψαμε νωρίτερα. Τα προγράμματα σε αυτούς τους καταλόγους μπορούν να τρέξουν απλά πληκτρολογώντας το βασικό τους όνομα αρχείου. % set PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin PIPESTATUS=([0]="0") PPID=4978 PS1='\h:\w\$ ' PS2='> ' PS4='+ ' PWD=/home/logan QTDIR=/usr/local/lib/qt REMOTEHOST=ninja.tdn SHELL=/bin/bash % unset VARIABLE
Η unset θα αφαιρέσει τις μεταβλητές που τις δίνετε, εξαφανίζοντας και τη μεταβλητή και την τιμή της. Ο bash θα ξεχάσει ότι αυτή η μεταβλητή υπήρξε κάποτε. (Μην ανησυχείτε. Αν δεν ήταν κάτι το οποίο ορίσατε ρητά σε αυτή τη σύνοδο του κελύφους, θα ξαναοριστεί πιθανότατα σε κάθε άλλη σύνοδο.) % export VARIABLE=some_value Τώρα, η export είναι πραγματικά χρήσιμη. Χρησιμοποιώντας τη δίνετε στη μεταβλητή περιβάλλοντος VARIABLE την τιμή some_value. Αν η VARIABLE δεν υπήρχε τώρα υπάρχει. Αν η VARIABLE είχε κάποια τιμή τώρα χάθηκε. Αυτό δεν είναι τόσο καλό αν απλά προσπαθείτε να προσθέσετε έναν κατάλογο στο PATH σας. Σε αυτή την περίπτωση, μάλλον θέλετε να κάνετε κάτι σαν αυτό: % export PATH=$PATH:/some/new/directory Προσέξτε τη χρήση του PATH εδώ: όταν θέλετε ο bash να διερμηνεύσει μια μεταβλητή (να την αντικαταστήσει με την τιμή της), βάλτε ένα $ μπροστά στο όνομα της μεταβλητής. Για παράδειγμα, η echo $PATH θα εμφανίσει την τιμή της PATH, στην περίπτωσή μου: % echo $PATH /usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/x11r6/bin: /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin 8.3.2 Συμπλήρωση με Tab (Και τώρα κάτι άλλο θαυμάσιο.) 1. Μια διεπαφή γραμμής εντολών σημαίνει πολλή πληκτρολόγηση 2. Η πληκτρολόγηση είναι δουλειά 3. Σε κανέναν δεν αρέσει η δουλειά. Από τα 3 και 2 μπορούμε να συμπεράνουμε ότι (4) σε κανέναν δεν αρέσει να πληκτρολογεί. Ευτυχώς, ο bash μας σώνει από το (5) (σε κανέναν δεν αρέσει μια διεπαφή γραμμής εντολών). Ρωτάτε πως καταφέρνει ο bash αυτόν τον υπέροχο άθλο; Επιπλέον της αντικατάστασης των wildcards που περιγράψαμε νωρίτερα, ο bash προσφέρει συμπλήρωση με tab. Η συμπλήρωση με tab δουλεύει ως εξής: Πληκτρολογείτε το όνομα ενός αρχείου. Ίσως βρίσκεται στο PATH σας, ίσως το καθορίζετε ρητά. Αυτό που πρέπει να κάνετε είναι να πληκτρολογήσετε όσο από το όνομα αρχείου είναι αρκετό για να αναγνωριστεί. Μετά πατήστε το πλήκτρο TAB. Ο bash θα καταλάβει τι θέλετε και θα τελειώσει την πληκτρολόγηση για εσάς! Ώρα για παράδειγμα. Το /usr/src περιλαμβάνει δύο υποκαταλόγους: /usr/src/linux και /usr/src/linuxold. Αν πληκτρολογήσω /usr/src/l και πατήσω TAB, o bash θα συμπληρώσει όσο μπορεί, και θα πάρω το /usr/src/linux. Μπορώ να σταματήσω εδώ, ή μπορώ να ξαναπατήσω το TAB, και ο BASH θα μου δείξει μια λίστα καταλόγων που ταιριάζουν με ότι έχω πληκτρολογήσει μέχρι στιγμής. Άρα, λιγότερη πληκτρολόγηση (και άρα, μπορούν να αρέσουν στους ανθρώπους οι διεπαφές γραμμής εντολών). Σας είπα ότι είναι θαυμάσιο. 8.4 Εικονικά Τερματικά Λοιπόν, βρίσκεστε στη μέση της δουλειάς και αποφασίζετε ότι θέλετε κάτι άλλο. Θα μπορούσατε απλά να αφήσετε αυτό που κάνετε και να αλλάξετε εργασίες, αλλά αυτό είναι πολυχρηστικό σύστημα, σωστά; Και μπορείτε να εισέλθετε όσες φορές θέλετε ταυτόχρονα, σωστά; Άρα γιατί θα έπρεπε να κάνετε ένα πράγμα κάθε φορά;
Δεν χρειάζεται. Δεν μπορούμε όλοι να έχουμε πολλά πληκτρολόγια, ποντίκια και οθόνες για το ίδιο μηχάνημα. Οι πιθανότητες είναι ότι οι περισσότεροι από εμάς δεν τα χρειαζόμαστε. Καθαρά το υλικό δεν είναι η λύση. Αυτό μας αφήνει το λογισμικό, και το Linux βαδίζει σε αυτό, παρέχοντας εικονικά τερματικά (virtual terminals) ή Vts. Πατώντας το Alt και ένα πλήκτρο F μπορείτε να μεταβείτε μεταξύ εικονικών τερματικών. Κάθε πλήκτρο F αντιστοιχεί σε ένα. Το Slackware έχει οθόνες εισόδου σε 6 VΤ ως προεπιλογή. Το Alt+F2 θα σας πάει στο δεύτερο, το Alt+F3 στο τρίτο κλπ. Τα υπόλοιπα πλήκτρα F είναι δεσμευμένα για συνόδους X. Κάθε σύνοδος X χρησιμοποιεί το δικό της VT, ξεκινώντας από το έβδομο (Alt+F7) και συνεχίζοντας. Όταν βρίσκεστε σε X, ο συνδυασμός Alt+Πλήκτρο F αντικαθίσταται από τον Ctrl+Alt+F. Άρα αν βρίσκεστε σε Χ και θέλετε να επιστρέψετε σε μη γραφική οθόνη εισόδου (χωρίς να βγείτε από την X σύνοδο), τo Ctrl+Alt+F3 θα σας πάει στην τρίτη. (με το Alt+F7 θα επιστρέψετε, υποθέτοντας ότι χρησιμοποιείτε την πρώτη σύνοδο X). 8.4.1 Screen Αλλά τι γίνεται στις περιστάσεις που δεν υπάρχουν εικονικά τερματικά; Τι κάνουμε τότε; Ευτυχώς, το Slackware περιλαμβάνει έναν όμορφο διαχειριστή οθόνης που εύστοχα λέγεται screen. H screen είναι ένας προσομοιωτής τερματικού (terminal emulator) που έχει δυνατότητες ενός εικονικού τερματικού. Εκτελώντας screen εμφανίζεται μια σύντομη εισαγωγή, μετά πετάγεται σε ένα τερματικό. Σε αντίθεση με τα βασικά εικονικά τερματικά, Η screen έχει δικές τις εντολές. Όλες οι εντολές της screen ξεκινούν με τον συνδυασμό πλήκτρων Ctrl+A. Για παράδειγμα, το Ctrl+A+C θα δημιουργήσει μια νέα σύνοδο τερματικού. Με το Ctrl+A+N θα μεταβείτε στο επόμενο τερματικό. Με το Ctrl+A+P θα μεταβείτε στο προηγούμενο τερματικό. Η screen επίσης υποστηρίζει αποπροσάρτηση και προσάρτηση ξανά σε συνόδους screen που είναι ιδιαίτερα χρήσιμο σε απομακρυσμένες συνόδους με ssh και telnet (περισσότερα σχετικά με αυτά αργότερα). Με το Ctrl+A+D θα αποπροσαρτηθείτε από την screen που τρέχει εκείνη τη στιγμή. Η εκτέλεση της screen -r θα εμφανίσει όλες τις συνόδους screen που τρέχουν και στις οποίες μπορείτε να προσαρτηθείτε. % screen -r There are several suitable screens on: 1212.pts-1.redtail (Detached) 1195.pts-1.redtail (Detached) 1225.pts-1.redtail (Detached) 17146.pts-1.sanctuary (Dead???) Remove dead screens with 'screen -wipe'. Type "screen [-d] -r [pid.]tty.host" to resume one of them. Τρέχοντας screen -r 1212 θα σας προσαρτούσε ξανά στην πρώτη screen που εμφανίζεται. Ανέφερα νωρίτερα πόσο χρήσιμο είναι αυτό για απομακρυσμένες συνόδους. Αν ήθελα να εισέλθω σε έναν απομακρυσμένο Slackware διακομιστή μέσω ssh, και η σύνοδός μου διακοπτόταν από ένα πιθανό συμβάν όπως μια τοπική διακοπή ρεύματος, οτιδήποτε έκανα εκείνη τη στιγμή στιγμιαία θα χανόταν, κάτι που μπορεί να είναι απαίσιο για τον διακομιστή σας. Η χρήση της screen το αποτρέπει αυτό με την αποπροσάρτηση από τη σύνοδο αν χαθεί η σύνδεση. Μόλις επανέλθει η σύνδεσή μου, μπορώ να προσαρτηθώ ξανά στη σύνοδο screen και να συνεχίσω από εκεί που βρισκόμουν.