ΠΕΡΙΕΧΟΜΕΝΑ ΠΡΟΛΟΓΟΣ xiii ΜΕΡΟΣ I 1. Εισαγωγή 3 1.1 Περί Λειτουργικών Συστημάτων 3 1.1.1 Τι είναι Λειτουργικό Σύστημα (Operating System) 3 1.1.2 To UNIX 4 1.1.3 Η δομή ενός Λειτουργικού Συστήματος 5 1.2 Η αρχιτεκτονική του UNIX 6 1.2.1 Ο πυρήνας (kernel) 8 1.2.2 Η διαχείριση της Κεντρικής Μονάδας Επεξεργασίας (Κ.Μ.Ε.) 9 1.2.3 Η διαχείριση μνήμης 10 1.2.4 Οι διεργασίες (processes) 11 1.2.5 Ο φλοιός (shell) 13 1.2.6 Τα βοηθητικά προγράμματα (Utilities) 15 1.3 Ιστορία - Εξέλιξη του UNIX 17 1.3.1 Ιστορική αναδρομή - Εκδόσεις του UNIX 17
iv A UNIX: Θεωρία & πράξη 1.3.2 Η εξέλιξη του UNIX - Ο ανταγωνισμός των εταιριών 20 1.3.3 Τα Interfaces του UNIX 22 1.4 Απαντήσεις σε συνήθη ερωτήματα 24 1.4.1 Συνδέεται το UNIX με PCs (DOS); 24 1.4.2 UNIX, αλλά ποιο UNIX; 27 2. Η πρώτη γνωριμία 29 2.1 Σύνθεση ενός τυπικού υπολογιστικού συστήματος UNIX 29 2.2 Βασικά χαρακτηριστικά του UNIX 31 2.3 Σύνδεση με το σύστημα (logging in) 32 2.4 Μερικές βασικές διαταγές (commands) 33 2.5 Μια σύντομη ματιά στα αρχεία 36 2.5.1 Η δομή των αρχείων 36 2.5.2 Οι κατάλογοι (directories) 37 2.5.3 Τα κανονικά αρχεία (regular files) 40 2.5.4 Τα ειδικά αρχεία (special files) 45 2.6 Μια πρώτη προσέγγιση του φλοιού (shell) 46 2.6.1 Ανακατεύθυνση εισόδου-εξόδου (I/O Redirection) 47 2.6.2 Σωληνώσεις (Pipelines) 51 2.6.3 Μεταχαρακτήρες (Metacharacters) 53 2.6.4 Μεταβλητές (Variables) - Περιβάλλον (Environment) 56 2.6.5 Ο φλοιός είναι και μία γλώσσα προγραμματισμού 58 2.7 Εκτυπώσεις 59 2.7.1 Εκτύπωση σε εκτυπωτή του συστήματος 59 2.7.2 Εκτύπωση σε τοπικό εκτυπωτή 61 2.8 Επικοινωνία μεταξύ των χρηστών 61 2.9 Οι διεργασίες (processes) 63 2.10 Η διαχείριση του UNIX 66 3. Το σύστημα αρχείων 69 3.1 Ονομασία των αρχείων 70 3.2 Το Λογικό Σύστημα Αρχείων 71 3.3 Οι κατάλογοι (directories) 74 3.3.1 Movon0Tia(Paths) 74 3.3.2 Η πραγματική μορφή ενός καταλόγου 77 3.4 Το Φυσικό Σύστημα Αρχείων 80
ΠΕΡΙΕΧΟΜΕΝΑ ν Ν 3.5 Προστασία των αρχείων 84 3.5.1 Ο ιδιοκτήτης ενός αρχείου 84 3.5.2 Αρχεία και ομάδες χρηστών 84 3.5.3 Τα δικαιώματα προσπέλασης 86 3.5.4 To SUID και το SGID bit 89 3.6 Οι σύνδεσμοι (links) 90 3.7 Τα ειδικά αρχεία (special files) 91 3.7.1 Ονοματολογία ίων ειδκών αρχείων 93 3.7.2 Μείζων και ελάσσων αριθμός συσκευής 95 3.7.3 Πολλαπλά ειδικά αρχεία 96 3.8 Δημιουργία συστήματος αρχείων σε δισκέτα 96 3.9 Η εγκατάσταση ενός εκτυπωτή 97 3.10 Διαταγές που έχουν σχέση με αρχεία και καταλόγους 100 4. Η διαδικασία σύνδεσης - αποσύνδεσης 103 4.1 Η διαδικασία εισόδου στο σύστημα (logging in) 103 4.1.1 Η διεργασία init και το αρχείο/etc/inittab 103 4.1.2 Η διεργασία getty και το αρχείο /etc/gettydefs 106 4.1.3 Η διεργασία login και το αρχείο/etc/passwd 107 4.2 Η διαδικασία αποσύνδεσης (logging out) 111 5. Bourne shell και ο προγραμματισμός του 115 5.1 Γενικά χαρακτηριστικά 116 5.2 Απλές διαταγές (Simple commands) - Κατάσταση εξόδου (Exit status) 117 5.3 Σωληνώσεις (Pipelines) 119 5.4 Φίλτρα (Filters) 121 5.5 Λίστα διαταγών (Command list) 122 5.6 Ομαδοποίηση διαταγών (Command grouping) 124 5.7 Οι δομημένες διαταγές (structured commands) 127 5.7.1 Η διαταγή if 128 5.7.2 Η διαταγή case 131 5.7.3 Η διαταγή for 133 5.7.4 Η διαταγή while 135 5.7.5 Η διαταγή until 137 5.7.6 Οι διαταγές true και false 138
vi A UNIX: Θεωρία & πράξη 5.7.7 Διαταγές επανάληψης και σωληνώσεις 138 5.8 Αρχεία Διαταγών (Shell Scripts ή Procedures) 140 5.9 Μεταβλητές (Shell variables) ή Παράμετροι (Parameters) 141 5.9.1 Μεταβλητές που ορίζονται από το χρήστη 141 5.9.2 Αντικατάσταση των παραμέτρων (Parameter substitution) 143 5.9.3 Οι ενσωματωμένες στο φλοιό παράμετροι 147 5.9.4 Παράμετροι θέσης (Positional parameters) 153 5.9.5 Αυτόματες παράμετροι (Automatic parameters) 156 5.10 Αντικατάσταση ονόματος αρχείων (Filename substitution) 158 5.11 Ανακατεύθυνση Εισόδου-Εξόδου (I/O Redirection) 160 5.11.1 Οι μορφές ανακατεύθυνσης 161 5.11.2 Περισσότερα για είσοδο-έξοδο 166 5.11.3 Πολλαπλή ανακατεύθυνση (Multiple redirection) 168 5.11.4 Ανακατεύθυνση και διαταγές επανάληψης 168 5.12 Οι ενσωματωμένες διαταγές (Built-in commands) 169 5.12.1 Η διαταγή : (null) 170 5.12.2 Η διαταγή. (τελεία) 171 5.12.3 Η διαταγή break 173 5.12.4 Η διαταγή continue 173 5.12.5 Η διαταγή eval 174 5.12.6 Η διαταγή exec 176 5.12.7 Η διαταγή exit 179 5.12.8 Η διαταγή export 180 5.12.9 Η διαταγή getopts 182 5.12.10 Η διαταγή hash 185 5.12.11 Η διαταγή newgrp 186 5.12.12 Η διαταγή read 186 5.12.13 Η διαταγή readonly 190 5.12.14 Η διαταγή return 190 5.12.15 Η διαταγή set 191 5.12.16 Η διαταγή shift 193 5.12.17 Η διαταγή times 195 5.12.18 Η διαταγή trap 196 5.12.19 Η διαταγή type 198 5.12.20 Η διαταγή ulimit 199
ΠΕΡΙΕΧΟΜΕΝΑ vii 5.12.21 Η διαταγή umask 200 '5.12.22 Η διαταγή unset 202 5.12.23 Η διαταγή wait 203 5.13 Αντικατάσταση διαταγών (Command substitution) 204 5.14 Ακύρωση της σημασίας των ειδικών χαρακτήρων 205 5.14.1 Ο χαρακτήρας \ (backslash) 206 5.14.2 Μονά εισαγωγικά (Single quotes) 207 5.14.3 Διπλά εισαγωγικά (Double quotes) 208 5.15 Συναρτήσεις (Functions) 210 ^5.16 Εκτέλεση των διαταγών (Command execution) 212 5.17 Πως καλούμε το φλοιό sh 213 5.18 Ο περιορισμένος φλοιός (restricted shell) rsh 214 5.19 Το περιβάλλον (environment) του φλοιού 215 5.20 Ένα αρχείο διαταγών (shell script) 218 6. C-shell και ο προγραμματισμός του 225 6.1 Ιδιαίτερα χαρακτηριστικά 226 6.2 Συντομογραφίες 227 6.3 Η ιστορική λίστα (History list) 228 6.3.1 Προσδιορισμός και εμφάνιση της ιστορικής λίστας 229 6.3.2 Απλή επανεκτέλεση διαταγών 230 6.3.3 Επανεκτέλεση διαταγών με διόρθωση 232 6.4 Μεταβλητές (C-shell variables) 236 6.4.1 Απλές μεταβλητές 237 6.4.1.1 Ορισμός μεταβλητών 237 6.4.1.2 Διαγραφή μεταβλητών 240 6.4.1.3 Εκτύπωση μεταβλητών - Έλεγχος 241 6.4.2 Οι μεταβλητές-πίνακες (Wordlist variables) 242 6.4.3 Οι ενσωματωμένες στο φλοιό C μεταβλητές 244 6.4.3.1 Μεταβλητές που δέχονται τιμή 245 6.4.3.2 Μεταβλητές-διακόπτες 248 6.5 Ψευδώνυμα (Alias) 250 6.5.1 Ορισμός και χρήση των ψευδώνυμων 250 6.5.2 Η λίστα των ψευδώνυμων 251 6.5.3 Διαγραφή των ψευδώνυμων 252 6.5.4 Τα ψευδώνυμα έρχονται πρώτα 252
viii A UNIX: Θεωρία & πράξη 6.6 Έλεγχος εργασιών (Job control) 254 6.6.1 Εμφάνιση των παρασκηνιακών εργασιών 255 6.6.2 Διακοπή εργασιών από το παρασκήνιο και το προσκήνιο 256 6.6.3 Επανεκκίνηση εργασιών που έχουν διακοπεί 257 6.6.4 Τερματισμός εργασιών 258 6.7 Οι δομές ελέγχου 259 6.7.1 Η διαταγή if 259 6.7.2 Η διαταγή switch 262 6.7.3 Η διαταγή foreach 263 6.7.4 Η διαταγή while 265 6.7.5 Η διαταγή goto 265 6.7.6 Η διαταγή onintr 266 6.8 Ανακατεύθυνση Εισόδου-Εξόδου (I/O Redirection) 267 6.8.1 Διαφορές με το φλοιό sh 267 6.8.2 Ασφάλεια κατά την αλλαγή προορισμού των αρχείων 269 6.9 Σωληνώσεις (Pipelines) 269 6.10 Κλήση και τερματισμός του C-shell 270 6.11 Οι ενσωματωμένες διαταγές (Built-in commands) 272 6.12 Αντιστοιχία διαταγών C-shell και Bourne shell 274 6.13 Ένα αρχείο διαταγών (shell script) 275 7. Ο κειμενογράφος ed 279 7.1 Βασικά χαρακτηριστικά του ed 279 7.2 Σύνταξη 280 7.3 Οι διαταγές (commands) του ed 281 8. Ο κειμενογράφος νΐ 291 8.1 Βασικά χαρακτηριστικά του vi 291 8.2 Είσοδος - έξοδος από τον vi 293 8.3 Οι ενταμιευτές (buffers) του vi 294 8.4 Οι διαταγές (commands) του vi 295 8.5 Οι διαταγές (commands) του ex 312 8.6 Οι παράμετροι σύνταξης του vi 325
ΠΕΡΙΕΧΟΜΕΝΑ ix ΜΕΡΟΣ II Η διαταγή at 331 Η διαταγή awk 334 Η διαταγή banner 350 Η διαταγή basename 351 Η διαταγή batch 352 Η διαταγή cal 353 Η διαταγή cancel 354 Η διαταγή cat 355 Η διαταγή cd 358 Η διαταγή chgrp 359 Η διαταγή chmod 361 Η διαταγή chown 366 Η διαταγή cmp 367 Η διαταγή cp 369 Η διαταγή cpio 371 Οι διαταγές cron και crontab 375 Η διαταγή cut 378 Η διαταγή date 380 Η διαταγή dd 383 Η διαταγή df 386 Η διαταγή diff 388 Η διαταγή du 391 Η διαταγή echo 393 Η διαταγή expr 396 Η διαταγή find 400 Η διαταγή grep 404 Η διαταγή head 407 Η διαταγή id 408 Η διαταγή kill 409 Η διαταγή 1η 411 Η διαταγή logname 413 Η διαταγή 1ρ 414 Η διαταγή lpstat 417 Η διαταγή Is 419
viii A UNIX: Θεωρία & πράξη Η διαταγή mail 425 Η διαταγή mesg 429 Η διαταγή mkdir 430 Η διαταγή mv 431 Η διαταγή nohup 433 Η διαταγή od 434 Η διαταγή passwd 437 Η διαταγή paste 438 Η διαταγή pg 441 Η διαταγή pr 445 Η διαταγή ps 447 Η διαταγή pwd 451 Η διαταγή rm 452 Η διαταγή rmdir 454 Η διαταγή sed 455 Η διαταγή sleep 462 Η διαταγή sort 464 Η διαταγή split 470 Η διαταγή su 471 Η διαταγή tail 472 Η διαταγή tar 474 Η διαταγή tee 478 Η διαταγή test 480 Η διαταγή touch 484 Η διαταγή tr 485 Η διαταγή tty 487 Η διαταγή wall 488 Η διαταγή wc 489 Η διαταγή who 491 Η διαταγή write 494 ΠΑΡΑΡΤΗΜΑΤΑ ΠΑΡΑΡΤΗΜΑ I: Κανονικές Παραστάσεις 1. Βασικές Κανονικές Παραστάσεις 497 498
ΠΕΡΙΕΧΟΜΕΝΑ xi 2. Περιορισμένες Κανονικές Παραστάσεις 499 3. Επέκταση των I Ιεριορισμένων Κανονικών Παραστάσεων 500 4. Πλήρεις Κανονικές Παραστάσεις 501 ΠΑΡΑΡΤΗΜΑ II : Διαχείριση τηλεφωνικού καταλόγου 503 ΒΙΒΛΙΟΓΡΑΦΙΑ 525 ΕΥΡΕΤΗΡΙΟ 529