Menu
ΠΡΟΗΓ. ΚΕΦ.   ΕΠΟΜΕΝΟ ΚΕΦ.
Menu and Table of Contents

Εισαγωγή στο Σύστημα Αρχείων

Οργάνωση του Συστήματος Αρχείων

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

Ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Windows
Σχήμα 1: Ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Windows.
Σύστημα Αρχείων Τύπος Συστήματος Αρχείων File System File System Type

Ο όρος Σύστημα Αρχείων (File System) σημαίνει το σύνολο των αρχείων-καταλόγων και αποθηκευτικών μέσων που διαχειρίζεται ένας υπολογιστής. Ως όρος Τύπος Συστήματος Αρχείων (File System Type) εννοείται η δομή και ο αλγόριθμος για την αντιστοίχηση των αρχείων σε φυσικά τμήματα του δίσκου. Γνωστοί Τύποι Συστημάτων Αρχείων είναι οι:

Πολλές φορές για λόγους συντομίας, αντί του όρου «Τύπος Συστήματος Αρχείων», χρησιμοποιείται ο όρος «Σύστημα Αρχείων». Η δημιουργία του Συστήματος Αρχείων γίνεται με τη διαδικασία της «διαμόρφωσης» (format). Επίσης, κάθε συσκευή αποθήκευσης μπορεί να έχει διαφορετικό Τύπο Συστήματος Αρχείων. Ο τύπος FAT είναι ο πιο απλός και αναγνωρίζεται από όλα τα Λειτουργικά (συμπεριλαμβανομένων συσκευών τηλεοράσεων, Media Players, τηλέφωνα, εκτυπωτές κτλ.). Γι' αυτό και προτιμάται για συσκευές αποθήκευσης τύπου USB Stick ή SD Cards. Ο τύπος NTFS αναγνωρίζεται από τα περισσότερα Λειτουργικά Συστήματα (και συσκευές), και πλέον χρησιμοποιείται όλο και περισσότερο ακόμη και για φορητές συσκευές (USB Sticks). Ο τύπος ext αναγνωρίζεται μόνο από Λειτουργικά Συστήματα της οικογένειας UNIX.

Υπάρχει η έννοια του «Υπολογιστή μου» (“My Computer”). Αυτό αποτελεί τον αρχικό κόμβο στην ιεραρχία των αρχείων. Κάτω ακριβώς από τον «Υπολογιστή μου» υπάρχουν κόμβοι των οποίων τα ονόματα αποτελούνται από ένα λατινικό γράμμα και το σύμβολο “:”. Παράδειγμα C:, D: κτλ. Καθένας από αυτούς τους κόμβους αντιστοιχεί σε μια συσκευή αποθήκευσης: CD-ROM, USB Stick, τόμο σκληρού δίσκου (disk partition). Σχεδόν πάντα ο πρωτεύων σκληρός δίσκος (και ο πρωτεύων τόμος του) αντιστοιχίζονται στο γράμμα C:. Ο δεύτερος τόμος ή το CD-Rom στο D: κ.ο.κ.

Ένα ερώτημα που μπορεί να δημιουργηθεί στον αναγνώστη είναι γιατί η αρίθμηση ξεκινά από το γράμμα “C:” και όχι από το “A:”. Η απάντηση βασίζεται στην ιστορία των προσωπικών υπολογιστών (PCs) και των Λειτουργικών συστημάτων που αναπτύχθηκαν από την Microsoft (MS-DOS, MS-Windows). Αρχικά οι προσωπικοί υπολογιστές, συμβατοί με την αρχιτεκτονική IBM, δεν είχαν σκληρό δίσκο, αλλά μόνο συσκευή δισκέτας. Η αρχιτεκτονική υποστήριζε μέχρι δυο συσκευές δισκέτας. Η πρώτη δισκέτα συμβολιζόταν με το “Α:” και η δεύτερη με το “Β:”. Αργότερα (τέλη της δεκαετίας του 1980) αναπτύχθηκαν οι σκληροί δίσκοι. Κάθε προσωπικός υπολογιστής μπορούσε να έχει μέχρι τέσσερις σκληρούς δίσκους και δυο δισκέτες. Επειδή όλα τα προγράμματα θεωρούσαν μέχρι τότε ότι οι συσκευές Α: και “Β:” είναι δισκέτες, χρησιμοποιήθηκαν τα επόμενα γράμματα για να συμβολίσουν τους σκληρούς δίσκους (C:, D:, ...). Όταν κυκλοφόρησαν οι επανεγγράψιμοι οπτικοί δίσκοι (CD-RW), η χρήση των δισκετών άρχισε να φθίνει (περίπου το 2000). Παρόλα αυτά, επειδή ακόμη κάποιοι χρήστες χρησιμοποιούσαν προγράμματα φτιαγμένα την προηγούμενη δεκαετία, η σύμβαση για τα γράμματα Α: και Β: διατηρήθηκε και οι χρήστες συνήθισαν την ιδέα ότι ο πρώτος σκληρός δίσκος είναι το C:. Η Microsoft διατήρησε αυτόν τον συμβολισμό προκειμένου να μην αλλάξει τη συνήθεια των χρηστών και αυτή η σύμβαση συνεχίζεται μέχρι και σήμερα παρότι οι προσωπικοί υπολογιστές δεν διαθέτουν πλέον συσκευή δισκέτας, αλλά ούτε χρησιμοποιούνται προγράμματα της προηγούμενης τριακονταετίας - είναι «πρωτόγονα» συγκρινόμενα με τις σημερινές δυνατότητες. Ο συμβολισμός του C: όμως έχει παραμείνει, ίσως για να θυμίζει στους παλαιότερους λίγο από ιστορία.

Root Directory

Σε σύγκριση με το σύστημα αρχείων των MS-Windows και το πώς αυτό παρουσιάζεται προς τους χρήστες, σε ένα σύστημα Unix έχουμε παρόμοια φιλοσοφία. Υπάρχουν, όμως, και διαφορές. Σε ένα σύστημα αρχείων UNIX υπάρχει η έννοια του “/” το οποίο είναι η ρίζα του δέντρου. Το “/” ονομάζεται και “root directory” (ριζικός κατάλογος). Σε αντιπαραβολή με τα MS-Windows αντιστοιχεί στο “My Computer”. Σημαντική, όμως, διαφορά είναι ότι η ρίζα του δέντρου αντιστοιχεί σε έναν τόμο (partition) που είναι ο πρωτεύων τόμος που έχει οριστεί. Για κάθε επιπλέον συσκευή αποθήκευσης που είναι συνδεδεμένη, δεν αντιστοιχίζονται γράμματα του αγγλικού αλφαβήτου. Αντίθετα, κάθε συσκευή εμφανίζεται ως τμήμα του δέντρου. Ο διαχειριστής του συστήματος μπορεί να ορίσει σε ποιο σημείο στην ήδη υπάρχουσα ιεραρχία. Έτσι, στο θα μπορούσε ο κατάλογος SPARE να αντιστοιχεί σε έναν δεύτερο τόμο του δίσκου. Επίσης, ο κατάλογος MOVIE θα μπορούσε να αντιστοιχεί σε ένα DVD. Τέλος, ο κατάλογος remote_files θα μπορούσε να αντιστοιχεί σε κάποιο άλλο δίσκο ή δικτυακό δίσκο. Στο αναπαριστώνται με ίδια χρώματα οι κατάλογοι που ανήκουν στο ίδιο σύστημα αρχείων (τόμο ή συσκευή αποθήκευσης). Οι περισσότερες διαμονές Linux, έχουν προ-ρυθμισμένη συμπεριφορά να αντιστοιχούν κάθε νέα συσκευή που αναγνωρίζεται κάτω από τον φάκελο /media, εφόσον δεν έχει οριστεί διαφορετικά.

Τυπική ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Unix
Σχήμα 1: Τυπική ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Unix.
Home Directory

Σε κάθε σύστημα UNIX αντιστοιχίζεται ένας φάκελος για κάθε χρήστη. Αυτός ο φάκελος ονομάζεται “home directory” του χρήστη. Στο παρουσιάζεται ένα υποτιθέμενο σύστημα αρχείων, που μοιάζει αρκετά με την οργάνωση που ακολουθείται στον κεντρικό εξυπηρέτη (server) του ΑΤΕΙ.Θ-Τ.Μ.Υ (ΑΤΕΙ Θεσσαλονίκης - Τμήματος Μηχανικών Υπολογιστών). Σε αυτόν τον υπολογιστή, επειδή υπάρχουν εκατοντάδες λογαριασμοί χρηστών (περίπου 1600 κατά τη διάρκεια του 2015), ακολουθείται κάποια ομαδοποίηση σε σχέση με τα home directories των χρηστών. Για τους χρήστες που είναι φοιτητές του τμήματος, δημιουργούνται φάκελοι κάτω από τη θέση students που βρίσκεται κάτω από τη θέση /home. Μάλιστα, οι φοιτητές ομαδοποιούνται με βάση το εξάμηνο εγγραφής τους στο τμήμα. Έτσι, βλέπουμε στο παραπάνω παράδειγμα ότι φάκελος για τον χρήστη abliouka, βρίσκεται μέσα στον φάκελο x1112, που σημαίνει ότι ο συγκεκριμένος φοιτητής εγγράφηκε στο τμήμα κατά το χειμερινό εξάμηνο 2011-12. Αντίστοιχα, υπάρχει ο φάκελος staff για τους εργαζόμενους, οι οποίοι και αυτοί ομαδοποιούνται σε κατηγορίες: it, ektaktoi κτλ.

Συνήθως, όταν εγκαθιστούμε ένα σύστημα Unix ή Linux, τα home directories των χρηστών, δημιουργούνται αμέσως κάτω από τον φάκελο /home. Παράδειγμα, εάν στον υπολογιστή του σπιτιού μας (με linux) δημιουργήσουμε τον χρήστη asidirop, θα δημιουργηθεί ο φάκελος /home/asidirop, εκτός βέβαια και αν ρυθμίσουμε διαφορετικά. Αντίστοιχα, οι νέες εκδόσεις των MS-Windows (Windows 7 και 8), δημιουργούν τα home directories των χρηστών μέσα στον φάκελο C:\Users ().

Τυπική ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Unix
Σχήμα 1: Τυπική ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Unix.

Η δημιουργία και χρήση της μεθόδου με τα home directories των χρηστών βοηθά στην καλύτερη ασφάλεια του συστήματος. Συνήθως, ο κάθε χρήστης έχει πλήρη δικαιώματα στον προσωπικό φάκελο αλλά κανένα δικαίωμα έξω από αυτόν. Δηλαδή ένας χρήστης μπορεί στον προσωπικό του φάκελο να δημιουργεί αρχεία, καταλόγους και να τα διαγράφει. Έξω από τον προσωπικό του φάκελο δεν έχει το δικαίωμα να δημιουργήσει αρχεία ή καταλόγους και συνήθως δεν έχει το δικαίωμα να 'δει' ή να χρησιμοποιήσει τα αρχεία των υπολοίπων χρηστών. Περισσότερα για τα δικαιώματα στο σύστημα αρχείων θα δούμε στο Kef;alaio x.

Περιορισμοί - κανόνες για ένα Σύστημα Αρχείων

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

Ανάλογα με τον Τύπο Συστήματος Αρχείων που χρησιμοποιείται μπορεί να υπάρχουν και άλλοι περιορισμοί. Στον τύπο συστήματος αρχείων που χρησιμοποιείται από τα Windows (NTFS file system) ισχύουν οι εξής περιορισμοί:

  1. Το όνομα ενός αρχείου μπορεί να είναι οποιαδήποτε σειρά από χαρακτήρες. Δεν επιτρέπεται μέσα σε όνομα αρχείου (ή καταλόγου) να υπάρχουν οι χαρακτήρες: \, /, :, *, ?, ", <, >, |.
  2. Οι κεφαλαίοι με τους πεζούς χαρακτήρες είναι ισοδύναμοι.

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

Τι συμβαίνει με τους ελληνικούς χαρακτήρες; Επιτρέπονται;

Διαδρομές

Απόλυτες Διαδρομές

Στο υποτιθέμενο σύστημα αρχείων του σχήματος , πώς θα μπορούσαμε να αναφερθούμε στο αρχείο Test1.txt (1) και στο αρχείο Test1.txt (2); Αν χρησιμοποιούμε μια γραφική εφαρμογή χειρισμού αρχείων (πχ. Windows Explorer στα Windows, nautilus και dolphin στο Linux), είναι εύκολο, διότι εντοπίζουμε στον περιηγητή το αρχείο που επιθυμούμε και κάνοντας κλικ επιλέγουμε την ενέργεια που θέλουμε να κάνουμε. Πώς, όμως, μπορούμε να αναφερθούμε στα δυο παραπάνω αρχεία μέσα από τη γραμμή εντολών;

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

Για την αντιμετώπιση του παραπάνω προβλήματος χρησιμοποιούνται οι Διαδρομές (paths). Μια Διαδρομή είναι το μονοπάτι που ακολουθούμε από τη ρίζα του δέντρου ("/") μέχρι το αρχείο ή το φάκελο που μας ενδιαφέρει. Κάθε τμήμα του μονοπατιού αποτελείται από το όνομα του κόμβου στον οποίο κατευθυνόμαστε. Έτσι, όπως αναπαρίσταται το δέντρο στο Σχήμα, με μια διαδρομή μπορούμε να μετακινηθούμε μόνο από πάνω προς τα κάτω (αργότερα θα δούμε και τον έμμεσο τρόπο για μετακίνηση προς τα επάνω). Τα τμήματα μιας Διαδρομής χωρίζονται μεταξύ τους με τον χαρακτήρα "/". Έτσι, η Διαδρομή προς το αρχείο (1) είναι η: /home/staff/ektaktoi/asidirop/Test1.txt, ενώ για το αρχείο (2) είναι η: /tmp/Test1.txt. Ο πρώτος χαρακτήρας "/" συμβολίζει τη ρίζα του δέντρου.

Τυπική ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Unix
Σχήμα 1: Τυπική ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Unix.

Αντίστοιχα σε ένα σύστημα με Windows οι Διαδρομές διατυπώνονται ως: C:\TMP\Test1.txt. Εδώ δεν υπάρχει ο συμβολισμός για τη ρίζα του δέντρου, υπάρχει όμως η σήμανση "C:". Στα Λειτουργικά των Windows και του DOS, ως διαχωριστής των τμημάτων της Διαδρομής χρησιμοποιείται ο χαρακτήρας "\" (back-slash) και όχι ο χαρακτήρας "/" (slash). Αυτή η διαφοροποίηση δημιουργούσε πάντα σύγχυση και στους χρήστες, αλλά και στα προγράμματα που λειτουργούν και στα δυο Λειτουργικά Συστήματα. Οι νεότερες εκδόσεις όμως των Windows αναγνωρίζουν ως διαχωριστή τμημάτων μιας Διαδρομής και τον χαρακτήρα "/".

Διαδρομή Path Απόλυτη Διαδρομή Absolute Path
OK Μέσα σε μια Διαδρομή τα «μονοπάτια» ή οι «κόμβοι» που ακολουθούμε διαχωρίζονται με τον χαρακτήρα / (slash).
OK Αν μια διαδρομή ξεκινάει με τον χαρακτήρα /, τότε ξεκινάει από τη ρίζα του δέντρου (root directory).
OK Μια διαδρομή που ξεκινάει από την ρίζα του δέντρου ονομάζεται Απόλυτη Διαδρομή (Absolute Path).
Σχετική Διαδρομή Relative Path Current Working Directory (cwd) Τρέχων Κατάλογος Εργασίας

Σχετικές Διαδρομές

Είναι όμως δύσκολο, κάθε φορά που θέλουμε να αναφερθούμε στο αρχείο (1), να γράφουμε ολόκληρη τη διαδρομή: /home/staff/ektaktoi/asidirop/Test1.txt. Φανταστείτε το αρχείο, στο οποίο θέλουμε να αναφερθούμε, να βρίσκεται 20 επίπεδα μακριά από τη ρίζα. Τότε η Απόλυτη Διαδρομή θα ήταν πολύ μεγάλη και ασύμφορο να χρησιμοποιηθεί. Για συντομία, μπορούμε να χρησιμοποιήσουμε Σχετική Διαδρομή (Relative path), για να αναφερθούμε σε ένα αρχείο. Μια σχετική διαδρομή ξεκινάει από τη θέση στην ιεραρχία που ονομάζεται Τρέχων Κατάλογος Εργασίας (Current Working Directory) και η συντομογραφία του είναι cwd. Όταν γράφουμε μόνο το όνομα ενός αρχείου (χωρίς Διαδρομή από μπροστά), τότε εννοείται πως το αρχείο βρίσκεται στον Τρέχοντα Κατάλογο Εργασίας. Στο , αν έχουμε Τρέχοντα Κατάλογο Εργασίας τον κατάλογο asidirop, γράφοντας Test1.txt εννοείται το αρχείο νούμερο (1).

OK Κάθε διεργασία (άρα και κάθε κέλυφος) που εκτελείται έχει ανά πάσα στιγμή έναν Τρέχοντα Κατάλογο Εργασίας (cwd).
OK Όταν ένας χρήστης κάνει είσοδο στο σύστημα (login) και εκτελείται ένα κέλυφος, τότε ορίζεται αρχικά ως cwd το home directory του χρήστη.

Όταν ο χρήστης asidirop () κάνει είσοδο στο σύστημα, τότε αυτόματα το κέλυφος το οποίο ξεκινά να εκτελείται έχει ως Τρέχοντα Κατάλογο Εργασίας τον φάκελο με αριθμό (4), δηλαδή τον: /home/staff/ektaktoi/asidirop. Αντίστοιχα, όταν θα κάνει είσοδο ο χρήστης abliouka, θα οριστεί αρχικά στο κέλυφος που θα εκτελεστεί ο φάκελος /home/students/x1112/abliouka ως τρέχων φάκελος εργασίας.

Τυπική ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Unix
Σχήμα 1: Τυπική ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Unix.

Ωστόσο, με Σχετική Διαδρομή μπορούμε να οδηγηθούμε και σε αρχεία ή καταλόγους που βρίσκονται και εκτός του home directory μας. Ο χρήστης μπορεί να αλλάξει Τρέχοντα Κατάλογο Εργασίας χρησιμοποιώντας την εντολή cd. Η εντολή cd δέχεται ως όρισμα μια Διαδρομή προς έναν κατάλογο (Απόλυτη ή Σχετική) και ορίζει τον νέο κατάλογο ως τρέχοντα. Πχ:

cd /tmp

Στην παραπάνω περίπτωση, το όρισμα στην εντολή cd είναι Απόλυτη Διαδρομή και οδηγεί στον κατάλογο με την σήμανση (3) του Σχήματος . Συνεπώς, αν μετά ακριβώς από την είσοδο του στο σύστημα ο χρήστης asidirop δώσει την παρακάτω ακολουθία εντολών:

cat Test1.txt
cd /tmp
cat Test1.txt

τότε η πρώτη εντολή θα έχει ως αποτέλεσμα την εμφάνιση του αρχείου (1), ενώ η τρίτη θα εμφανίσει το αρχείο (2).

Τυπική ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Unix
Σχήμα 1: Τυπική ιεραρχία του Συστήματος Αρχείων του Λειτουργικού Συστήματος Unix.

Αντίστοιχα στο έστω ότι κάνει είσοδο ο χρήστης "abliouka". Το home directory του χρήστη αυτού είναι το /home/students/x1112/abliouka και είναι σημειωμένο με τον αριθμό (4). Το κέλυφος που θα δημιουργηθεί αμέσως μετά τη διαδικασία εισόδου θα έχει ως Τρέχοντα Κατάλογο Εργασίας τον (4). Συνεπώς, η πρώτη εντολή από την προηγούμενη ακολουθία εντολών θα εμφανίσει τα περιεχόμενα του αρχείου (1), δηλαδή αυτού με απόλυτη διαδρομή την: /home/students/x1112/abliouka/Test1.txt. Η τρίτη εντολή θα έχει ως αποτέλεσμα την εμφάνιση του αρχείου /tmp/Test1.txt με τον αριθμό (2).

Έστω ότι από τον χρήστη abliouka δίνονται οι παρακάτω εντολές:

cat /home/students/x1112/abliouka/Test1.txt       # Εντολή 1
cd /home/students                                 # Εντολή 2
cat x1112/abliouka/Test1.txt                      # Εντολή 3  

Από μια Σχετική Διαδρομή μπορούμε να βρούμε την Απόλυτη, αν στη συμβολοσειρά που εκφράζει τον Τρέχοντα Κατάλογο Εργασίας (δηλαδή την Απόλυτη Διαδρομή προς τον Τρέχοντα Κατάλογο Εργασίας) ενώσουμε τη συμβολοσειρά της Σχετικής Διαδρομής ().

Κατασκευή Απόλυτης Διαδρομής από την Σχετική
Σχήμα 1: Κατασκευή Απόλυτης Διαδρομής από τη Σχετική.
OK Κατά τη χρήση του κελύφους επιλέγουμε αν θα χρησιμοποιήσουμε Απόλυτη ή Σχετική Διαδρομή με βάση το ποια είναι συντομότερη στην πληκτρολόγηση.
OK Όταν εισάγουμε Διαδρομές σε αρχεία ρυθμίσεων εφαρμογών, τότε συνήθως απαιτείται να χρησιμοποιηθεί Απόλυτη Διαδρομή. Σε μερικές περιπτώσεις απαιτείται η χρήση Σχετικής Διαδρομής με αφετηρία τον φάκελο εγκατάστασης της εφαρμογής.

Αν δε δώσουμε ορίσματα στην εντολή cd, τότε αυτή θεωρεί το home directory του τρέχοντα χρήστη. Συνεπώς, ορίζει ως Τρέχοντα Φάκελο Εργασίας το home directory. Στο παράδειγμα παραπάνω (), αν ο χρήστης "abliouka" δώσει την εντολή:

cd 

τότε θα οριστεί ως Τρέχων Κατάλογος Εργασίας ο φάκελος (4).

Μετακίνηση προς τα επάνω με Σχετική Διαδρομή

Είδαμε στην προηγούμενη παράγραφο πώς αναφερόμαστε σε αρχεία που βρίσκονται στο τμήμα του δέντρου κάτω από τον τρέχοντα φάκελο. Πώς, όμως, μπορούμε να αναφερθούμε σε κάποιο αρχείο που βρίσκεται πιο ψηλά στην ιεραρχία από τον τρέχοντα φάκελο χρησιμοποιώντας Σχετική Διαδρομή; Ακόμη, πώς μπορούμε να αναφερθούμε σε αρχεία τα οποία μπορεί να μην είναι ψηλότερα στην ιεραρχία, αλλά το μονοπάτι που πρέπει να ακολουθήσουμε περιλαμβάνει και τμήματα μετακίνησης προς τα επάνω; Για παράδειγμα στο , έχοντας ως Τρέχοντα Κατάλογο Εργασίας τον κατάλογο abliouka (2), η Διαδρομή που θα πρέπει να διατυπώσουμε φαίνεται με τα καφέ βέλη στο σχήμα.

Σχήμα 1: Διαδρομή προς τα επάνω.

Θα έλεγε κάποιος ότι, εφόσον η Διαδρομή εμπεριέχει τα τμήματα με όνομα: x1112, abacharo, file1, η Σχετική Διαδρομή θα είναι: x1112/abacharo/file1. Όμως το παραπάνω ΔΕΝ είναι σωστό. Δεν είναι σωστό, διότι ξεκινώντας από τον φάκελο abliouka (2), χρησιμοποιώντας το όνομα x1112, εννοείται ο φάκελος x1112 που βρίσκεται μέσα στον φάκελο abliouka, δηλαδή ο (3).

OK Μέσα σ’ ένα φάκελο είναι έγκυρα μόνο τα ονόματα αρχείων και φακέλων που βρίσκονται μέσα στο φάκελο. Στον κάθε κόμβο του δέντρου είναι γνωστά μόνο τα «παιδιά» του. Όχι, όμως, τα ονόματα φακέλων που είναι «πρόγονοί» του.

Συνεπώς, η διαδρομή x1112/abacharo/file1 είναι εσφαλμένη, αν Τρέχων Φάκελος Εργασίας είναι το (2).

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

OK Ο υποφάκελος με το όνομα ".", ο οποίος «δείχνει» προς τον ίδιο τον φάκελο.
OK Ο υποφάκελος με το όνομα "..", ο οποίος «δείχνει» προς τον γονικό φάκελο.

Έτσι, μέσα στον φάκελο abliouka (2), υπάρχει ο υποφάκελος με το όνομα ".." (). Εάν ακολουθήσουμε το μονοπάτι "..", οδηγούμαστε στον φάκελο (4). Συνεπώς, η Σχετική Διαδρομή από τον φάκελο (2) προς το αρχείο (1) είναι η:

 ../abacharo/file1
Οι υποκατάλογοι "." και "..".

Στο , παρουσιάζεται ένα μικρότερο τμήμα του συστήματος αρχείων, αλλά αναπαριστώνται όλοι οι φάκελοι "." και "..". Εδώ βλέπουμε ότι ο φάκελος /home/students περιέχει τον υποφάκελο "..", ο οποίος «δείχνει» στον /home. Επίσης, ο φάκελος /home/students περιέχει τον υποφάκελο ".", ο οποίος δείχνει στον ίδιο τον φάκελο /home/students. Όλοι οι φάκελοι περιέχουν αυτούς τους δυο υποφακέλους, ακόμη και ο "/" (το root directory - ριζικός φάκελος). Βέβαια, στην περίπτωση του ριζικού φακέλου, είναι προφανές ότι έτσι κι αλλιώς ο υποφάκελος "." δείχνει στον ίδιο τον ριζικό φάκελο. Ο υποφάκελος ".." όμως που δείχνει; Προφανώς δεν μπορεί να δείχνει κάπου πιο πάνω από τον ριζικό φάκελο γιατί εκεί είναι η αρχή του συστήματος αρχείων και δεν υπάρχει κάτι πιο επάνω. Σε αυτήν την περίπτωση, λοιπόν, ο ".." δημιουργείται με τέτοιον τρόπο, ώστε να δείχνει στον ίδιο τον ριζικό φάκελο.

Οι υποκατάλογοι "." και ".." αναλυτικά.

Οι κατάλογοι "." και ".." μπορούν να χρησιμοποιηθούν μέσα σε μια διαδρομή όπως κάθε άλλος φάκελος. Έστω το σύστημα αρχείων του Σχήματος και έστω ότι Τρέχων Φάκελος Εργασίας είναι ο /home/students/x1112. Στον πίνακα φαίνονται κάποιες Σχετικές Διαδρομές και οι ισοδύναμες Απόλυτες, δεδομένου του Τρέχοντος Φακέλου Εργασίας.

Παραδείγματα Σχετικών και Απόλυτων Διαδρομών.
A/AΣχετική ΔιαδρομήΑπόλυτη Διαδρομή
1 . /home/students/x1112
2 .. /home/students
3 ../.. /home
4 ../../.. /
5 ../x1011 /home/students/x1011
6 ../../../tmp/Test1.txt /tmp/Test1.txt

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

Παραδείγματα ισοδύναμων Σχετικών και Απόλυτων Διαδρομών.
A/AΑπόλυτη ΔιαδρομήΙσοδύναμες Σχετικές Διαδρομές
1 /home/students/x1112 . ./ ./. ././.
2 /home/students .. ../. ./.. ./../

Μερικές φορές βέβαια μπορεί να είναι υποχρεωτική η χρήση του "." (θα το μελετήσουμε στο Κεφάλαιο Χ).

OK Πολλές φορές, όταν συντάσσεται μια Διαδρομή προς Κατάλογο, χρησιμοποιείται ο χαρακτήρας "/" στο τέλος της διαδρομής. Παράδειγμα /tmp/ αντί του /tmp . Αυτό διευκολύνει τους χρήστες ώστε να αντιληφθούν άμεσα ότι η διαδρομή είναι προς φάκελο και όχι προς αρχείο. Από την άλλη είναι έτοιμη η συμβολοσειρά να συνενωθεί με ένα όνομα αρχείου, όταν την χρησιμοποιούμε μέσα από πρόγραμμα.
Παράδειγμα ιεραρχίας καταλόγων.

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

Παραδείγματα Σχετικών και Απόλυτων Διαδρομών.
A/AΔιαδρομήΤρέχων Κατάλογος ΕργασίαςΣχόλια
1 /home/students/x1112 οποιοσδήποτε Είναι η Διαδρομή προς τον φάκελο (8) ανεξάρτητα από τον Τρέχοντα (cwd)
2 /home/students οποιοσδήποτε Είναι η Διαδρομή προς τον φάκελο (5) ανεξάρτητα από τον Τρέχοντα (cwd)
3 /home/students/ οποιοσδήποτε Είναι η Διαδρομή προς τον φάκελο (5) ανεξάρτητα από τον Τρέχοντα (cwd) με κατάληξη "/".
4 /home/students/x1112/../x1011 οποιοσδήποτε Είναι η Διαδρομή προς τον φάκελο (9) ανεξάρτητα από τον Τρέχοντα (cwd). Δεν είναι η βέλτιστη διαδρομή διότι περιέχει "παράκαμψη", είναι όμως σωστή.
5 /tmp/../home οποιοσδήποτε Είναι η Διαδρομή προς τον φάκελο (2) ανεξάρτητα από τον Τρέχοντα (cwd). Δεν είναι η βέλτιστη Διαδρομή, διότι περιέχει "παράκαμψη", είναι όμως σωστή.
6 /tmp/Test1.txt/../../home οποιοσδήποτε ΛΑΘΟΣ. Αν το στοιχείο Test1.txt δεν ήταν αρχείο αλλά φάκελος, η διαδρομή θα ήταν σωστή. Είναι όμως αρχείο, και ένα αρχείο δεν μπορεί να είναι τμήμα μιας διαδρομής. Μπορεί να είναι μόνο προορισμός.
7 x1112/../x1011 /home/students Είναι η Διαδρομή προς τον φάκελο (9) σχετική με τον Τρέχοντα (cwd). Δεν είναι η βέλτιστη διαδρομή, διότι περιέχει «παράκαμψη», είναι όμως σωστή.
8 students/x1011 /home/students ΛΑΘΟΣ. Ξεκινώντας από το φάκελο (5), δεν υπάρχει μέσα σε αυτόν φάκελος με το όνομα students. Άρα, η Διαδρομή είναι λάθος.
9 ./x1011 /home/students Είναι η Διαδρομή προς τον φάκελο (9) σχετική με τον Τρέχοντα (cwd). Υπάρχει ο πλεονασμός χρήσης του "./".
10 home /home/students ΛΑΘΟΣ. Ξεκινώντας από το φάκελο (5), δεν υπάρχει μέσα σε αυτόν φάκελος με το όνομα home. Άρα, η Διαδρομή είναι λάθος. Η αναφορά προς τον φάκελο (2) πρέπει να γίνει με τη χρήση του "..".
11 tmp/Test1.txt /home/students ΛΑΘΟΣ. Ξεκινώντας από το φάκελο (5), δεν υπάρχει μέσα σε αυτόν φάκελος με το όνομα tmp. Άρα, η Διαδρομή είναι λάθος.
12 /tmp/Test1.txt /home/students Είναι η Διαδρομή προς το αρχείο (6). Είναι Απόλυτη Διαδρομή και άρα ανεξάρτητη από τον cwd.
13 /tmp///Test1.txt /home/students Είναι η Διαδρομή προς το αρχείο (6). Είναι Απόλυτη Διαδρομή. Υπάρχει ο πλεονασμός χρήσης πολλών "/" ως διαχωριστών. Αυτό δεν ενοχλεί, και μάλιστα είναι πιθανό να προκύπτουν τέτοιου τύπου Διαδρομές, όταν κατασκευάζονται από πρόγραμμα. Δεν ενοχλούν τα πολλαπλά "/".
14 ././///Test1.txt /tmp Είναι η Διαδρομή προς το αρχείο (6). Είναι Σχετική Διαδρομή ξεκινώντας από το (4). Υπάρχει ο πλεονασμός χρήσης πολλών "/" και πολλών αναφορών στον τρέχοντα φάκελο "./". Αυτό δεν ενοχλεί, και, όπως στην προηγούμενη περίπτωση είναι πιθανό να προκύπτουν τέτοιου τύπου διαδρομές, όταν κατασκευάζονται από πρόγραμμα. Δεν ενοχλούν τα πολλαπλά "./".

Ο φάκελος HOME των χρηστών

Tilde Περισπωμένη Κυματοειδής Γραμμή HOME

Για το κέλυφος o χαρακτήρας ~ (tilde ή κυματοειδής γραμμή ή περισπωμένη) έχει ειδική σημασία, όταν εμφανίζεται μόνος του ή στην αρχή μιας συμβολοσειράς που εκφράζει διαδρομή. Στον εμφανίζονται οι πιθανές περιπτώσεις και η αντίστοιχη σημασία τους.

Περιπτώσεις χρήσης του Ειδικού χαρακτήρα μπαλαντέρ "~".
ΣυμβολισμόςΕξήγηση
~ Ο χαρακτήρας ~, χωρίς να ακολουθείται από κάτι σημαίνει το home directory του τρέχοντος χρήστη.
~/ Ο χαρακτήρας ~, ακολουθούμενος από την "/", σημαίνει το home directory του τρέχοντος χρήστη.
~/file1.txt Ο χαρακτήρας ~, ακολουθούμενος από την "/", σημαίνει το home directory του τρέχοντος χρήστη. Μετά ακολουθεί η υπόλοιπη διαδρομή προς αρχεία ή καταλόγους. Το συγκεκριμένο παράδειγμα σημαίνει το αρχείο file1.txt μέσα στο home directory του τρέχοντος χρήστη.
~antonis Ο χαρακτήρας ~, ακολουθούμενος από οτιδήποτε εκτός από "/", σημαίνει το home directory του χρήστη, του οποίου το username ακολουθεί το ~. Το παράδειγμα σημαίνει το home directory του χρήστη antonis.

Πιο συγκεκριμένα, στο φαίνεται ένα παράδειγμα (τμήμα) ενός συστήματος αρχείων. Αν σε αυτό το σύστημα υπάρχουν οι χρήστες με τα ονόματα χρηστών asidirop, vassik και dimitris, το home directory του asidirop είναι το /home/asidirop (9), το home directory του vassik είναι το /home/others/vassik (10), ενώ το home directory του dimitris είναι το /var/usr/spare (11).

Συνηθίζεται, όταν ορίζεται το home directory ενός καινούργιου χρήστη, να ορίζεται ότι έχει ίδιο όνομα με το όνομα του χρήστη (όπως στο παράδειγμα οι asidirop, vassik). Αυτό, βέβαια, δεν είναι απαραίτητο.

OK Το home directory ενός χρήστη μπορεί να έχει οποιοδήποτε όνομα και να δημιουργηθεί (από το διαχειριστή) σε οποιοδήποτε σημείο του δίσκου.

Αν τρέχων χρήστης είναι ο asidirop, όλες οι παρακάτω Διαδρομές είναι ισοδύναμες και αναφέρονται στον (9):

~
~/
~asidirop
/home/asidirop

Αντίστοιχα ισοδύναμες μεταξύ τους είναι και οι παρακάτω Διαδρομές οι οποίες οδηγούν στο αρχείο (2):

~/file2.txt
~asidirop/file2.txt
/home/asidirop/file2.txt

Αν τρέχων χρήστης είναι ο vassik, τότε στην προηγούμενη περίπτωση, μόνο οι δυο τελευταίες διαδρομές δείχνουν στο αρχείο (2). Η πρώτη Διαδρομή θα δείχνει στο αρχείο file2.txt που βρίσκεται μέσα στο home directory του τρέχοντος χρήστη, δηλαδή του vassik. Το αρχείο αυτό είναι το (5).

Παράδειγμα ιεραρχίας καταλόγων με καταλόγους χρηστών.

Στην πραγματικότητα το κέλυφος, όταν σε μια γραμμή εντολής δει τον χαρακτήρα "~", πριν εκτελέσει την εντολή, ερμηνεύει τον χαρακτήρα αυτόν. Μπορούμε να χρησιμοποιήσουμε την εντολή echo [], για να επιβεβαιώσουμε το παραπάνω. Η εντολή echo δέχεται ως όρισμα μια συμβολοσειρά και απλά την τυπώνει στο τερματικό. Είναι κάτι ανάλογο των εντολών print ή write που υπάρχουν σε διάφορες γλώσσες προγραμματισμού.

asidirop@asidirop:~$ echo "Hello World"
Hello World
asidirop@asidirop:~$ echo /home/asidirop
/home/asidirop
asidirop@asidirop:~$ echo ~
/home/asidirop
asidirop@asidirop:~$ echo \~
~
asidirop@asidirop:~$ echo ~/file2.txt
/home/asidirop/file2.txt
asidirop@asidirop:~$

Στο προηγούμενο παράδειγμα η πρώτη εντολή echo, απλά τυπώνει το μήνυμα "Hello World". Στη δεύτερη εντολή, έχουμε δώσει ως όρισμα το /home/asidirop και η εντολή προφανώς απλά το τυπώνει. Στην τρίτη εντολή, δώσαμε ως όρισμα το "~"και βλέπουμε το ίδιο αποτέλεσμα με την προηγούμενη εντολή. Αυτό συμβαίνει, διότι το κέλυφος, πριν εκτελέσει την εντολή echo, ερμηνεύει τους ειδικούς χαρακτήρες που υπάρχουν στη γραμμή εντολής. Τον χαρακτήρα "~" τον αντικαθιστά με αυτό που αντιπροσωπεύει, δηλαδή με το /home/asidirop. Όταν το κέλυφος εκτελέσει την εντολή echo, θα περάσει ως όρισμα το /home/asidirop και όχι το "~".

Εάν θέλαμε η εντολή echo να τυπώσει τον ίδιο τον χαρακτήρα "~", τότε θα έπρεπε να ακυρώσουμε την ειδική του σημασία. Η ακύρωση της ειδικής σημασίας γίνεται με τον χαρακτήρα "\" (εντολή τέταρτη).

Τέλος, στην πέμπτη και τελευταία εντολή του παραδείγματος, το κέλυφος πάλι ερμηνεύει τον χαρακτήρα "~" και τον αντικαθιστά με το /home/asidirop. Έτσι, η συμβολοσειρά που προκύπτει είναι η /home/asidirop/file2.txt και αυτό δίνεται ως όρισμα στην εντολή echo.

Τύποι αρχείων

Όπως αναφέρθηκε στην , υπάρχουν αρκετοί τύποι αρχείων στο σύστημα UNIX. Αυτοί συνοψίζονται στο . Στην παρούσα φάση θα ασχοληθούμε μόνο με τις δυο πρώτες κατηγορίες: Κανονικά Αρχεία και Φακέλους (Καταλόγους).

Τύποι αρχείων σε ένα τυπικό σύστημα UNIX.
Τύποι αρχείων σε ένα τυπικό σύστημα UNIX.

Εντολές Διαχείρισης Φακέλων

Οι βασικές εντολές που αφορούν τη διαχείριση φακέλων είναι οι:

Όλες οι παραπάνω εντολές (εκτός της pwd) δέχονται ως ορίσματα Διαδρομές Καταλόγων (Απόλυτες ή Σχετικές). Παράδειγμα:

cd /tmp
mkdir ./test

Θα οριστεί ως Τρέχων Φάκελος Εργασίας ο /tmp και έπειτα θα δημιουργηθεί ο φάκελος με όνομα test μέσα στον Τρέχοντα Φάκελο (δηλαδή τον /tmp).

mkdir /tmp/test

Εναλλακτικά των δυο προηγούμενων εντολών, θα μπορούσαμε, χωρίς να έχουμε αλλάξει Τρέχοντα Φάκελο Εργασίας, να δημιουργήσουμε απ’ ευθείας τον /tmp/test, δηλαδή τον test μέσα στο /tmp.

Οι εντολές mkdir και rmdir επιδέχονται ορίσματα που αντιστοιχούν σε περισσότερες από μια Διαδρομές Καταλόγων ().

Εντολές Διαχείρισης Φακέλων και Αρχείων

Οι βασικές εντολές που χρησιμοποιούνται για τη διαχείριση αρχείων αλλά και φακέλων είναι οι:

Σε όλες τις παραπάνω εντολές δίνονται ως ορίσματα αρχεία ή φάκελοι. Αυτά εκφράζονται είτε με Σχετικές είτε με Απόλυτες Διαδρομές.

cp a.txt b.txt 

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

cp /etc/passwd ./ 

Στην παραπάνω εντολή δίνουμε δυο ορίσματα. Το πρώτο εκφράζει το αρχείο πηγή και το δεύτερο εκφράζει το φάκελο προορισμού. Το αρχείο πηγή είναι το /etc/passwd και χρησιμοποιήθηκε Απόλυτη Διαδρομή προς αυτό. Ο φάκελος προορισμού είναι ο "./", δηλαδή ο τρέχων φάκελος και εκφράστηκε με Σχετική Διαδρομή. Η εντολή θα έχει ως αποτέλεσμα την αντιγραφή του αρχείου πηγή μέσα στο φάκελο προορισμού, δηλαδή μέσα στον τρέχοντα φάκελο.

cp /etc/passwd ./test 

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

Mε την εντολή cp μπορεί να γίνει αντιγραφή ενός αρχείου σε ένα άλλο, αλλά και αντιγραφή περισσοτέρων αρχείων σε ένα φάκελο προορισμό ().

Με την option –r (recursive) μπορεί να αντιγραφεί ένας φάκελος με όλα τα περιεχόμενά του μέσα σε έναν άλλο φάκελο/προορισμό (βλέπε Άσκηση 4.6).

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

mv/etc/passwd ./ 
mv /etc/passwd ./test 

Η εντολή mv χρησιμοποιείται επίσης και για μετονομασία αρχείων, όπως:

mv a.txt b.txt 

Θα γίνει μετονομασία του αρχείου a.txt σε b.txt.

rm /etc/passwd /tmp/x ./test

Η εντολή rm, δέχεται και αυτή ως ορίσματα ονόματα αρχείων (ή και φακέλων) και τα διαγράφει. Η προηγούμενη εντολή θα διαγράψει τα αρχεία: passwd από τον φάκελο /etc, x από τον φάκελο /tmp και test από τον τρέχοντα φάκελο.

Εξ’ ορισμού η εντολή rm, δεν διαγράφει φακέλους, αλλά με την σημαία –r (recursive) μπορεί να διαγράψει φάκελο μαζί με όλα τα περιεχόμενά του (βλέπε Άσκηση 4.8).

Τέλος, η εντολή ls εμφανίζει τα περιεχόμενα ενός φακέλου (και όχι μόνο).

Παραδείγματα χρήσης της εντολής ls.
ΕντολήΕξήγηση
ls /tmp εμφανίζει τα περιεχόμενα του καταλόγου /tmp.
ls /etc ./test εμφανίζει τα περιεχόμενα του καταλόγου /etc και του καταλόγου ./test.
ls εάν δεν δοθεί όρισμα όνομα καταλόγου ή αρχείου, τότε εμφανίζει τα περιεχόμενα του τρέχοντος καταλόγου.
ls /etc/passwd file1.txt file2.txt εμφανίζει τα ονόματα των αρχείων που της δώσαμε ως ορίσματα – έχει νόημα μόνο όταν συνδυάζεται με σημαίες της ls και συνήθως την "-l", ώστε να εμφανιστούν επιπλέον πληροφορίες για τα αρχεία.

Συνήθεις σημαίες της ls φαίνονται στον :

Συνήθεις σημαίες της ls.
ΣημαίαΕξήγηση
-a (all) εμφανίζει και τα κρυφά αρχεία/καταλόγους.
-l (long listing format) εμφανίζει αναλυτικές πληροφορίες για τα αρχεία/καταλόγους.
-t (time) ταξινομεί το αποτέλεσμα με βάση την ώρα τροποποίησης.
-d εάν το όρισμα είναι κατάλογος, τότε δεν εμφανίζει τα περιεχόμενα του καταλόγου το οποίο είναι η συνήθης συμπεριφορά, αλλά εμφανίζει πληροφορίες για τον ίδιο τον κατάλογο.
-R (recursive) εμφανίζει και όλους τους υποκαταλόγους και τα περιεχόμενά τους και τα περιεχόμενα αυτών και οποιωνδήποτε καταλόγων κάτω από τον τρέχοντα (ή κάτω από τον φάκελο που δόθηκε ως όρισμα).

Η περισσότερο συχνή σημαία στην εντολή ls είναι η -l, η οποία δίνει την οδηγία στην εντολή να εμφανίσει περισσότερες πληροφορίες για κάθε αρχείο. Στο παρουσιάζονται οι στήλες οι οποίες εμφανίζονται από τη σημαία -l.

Σχήμα 1: Οι στήλες της ls -l.

Κρυφά αρχεία

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

Σχήμα 1: Χρήση της ls με τον συνδυασμό "-la".
OK Οι φάκελοι ".", ".." είναι κρυφοί.
OK Σε έναν φάκελο μπορούν να συνυπάρχουν τα αρχεία .file1 και file1. Είναι δυο διαφορετικά ονόματα αρχείων. Το πρώτο είναι κρυφό.
OK Στα windows κρυφό είναι ένα αρχείο που έχει την ιδιότητα “hidden”, η οποία ορίζεται για κάθε αρχείο/κατάλογο, και είναι εντελώς διαφορετική έννοια σε σχέση με το UNIX.

Ασκήσεις για εξάσκηση

Στόχος

Εξοικείωση με τη διαχείριση αρχείων και καταλόγων.

Άσκηση 1

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

Πίνακας Συχνών Εντολών
ΕντολήΒασικά ΟρίσματαΕξήγηση
mkdir[ονόματα καταλόγων] Δημιουργεί καταλόγους.
rmdir[ονόματα καταλόγων] Διαγράφει άδειους καταλόγους.
cp[-i] [-f] [-r] [πηγή/ές] [προορισμός] Αντιγράφει αρχεία ή καταλόγους από την πηγή στον προορισμό.
mv[-i] [-f] [πηγή/ές] [προορισμός] Μετακινεί/μετονομάζει αρχεία ή καταλόγους από την πηγή στον προορισμό.
rm[-i] [-f] [-r] [ονόματα αρχείων ή καταλόγων] Διαγράφει αρχεία ή καταλόγους.
cd[όνομα καταλόγου] Αλλαγή τρέχοντος καταλόγου.
ls[-l] [-a] [ονόματα αρχείων ή καταλόγων] Εμφανίζει τα περιεχόμενα καταλόγων ή/και πληροφορίες για τα αρχεία.
pwd ?
cat[ονόματα αρχείων] ?
more[ονόματα αρχείων] ?
head[-νούμερο] [ονόματα αρχείων] ?
tail[-νούμερο] [ονόματα αρχείων] ?

Άσκηση 2

  1. Ανοίξτε ένα τερματικό τοπικά και εργαστείτε σε αυτό.
  2. Βρείτε ποιος είναι ο τρέχων κατάλογος εργασίας (current working directory – cwd).
  3. Δείτε ποια αρχεία/κατάλογοι περιέχονται σε αυτόν.
  4. Αλλάξτε τρέχοντα κατάλογο εργασίας. Μεταβείτε στον κατάλογο /tmp. Δείτε ποια αρχεία/κατάλογοι περιέχονται εδώ.
  5. Ανοίξτε ακόμη ένα τερματικό και συνδεθείτε στον aetos.it.teithe.gr ή σε ένα άλλο απομακρυσμένο σύστημα στο οποίο έχετε πρόσβαση.
  6. Επαναλάβετε τα βήματα 2-4 στο νέο τερματικό (δηλαδή στον απομακρυσμένο υπολογιστή).
  7. Εκτελέστε (στον aetos) την εντολή finger xxx, όπου xxx το όνομα χρήστη (username) που έχετε στον aetos. Τι σχέση έχει η πληροφορία "Directory:" που μας εμφάνισε η εντολή finger με τον τρέχοντα κατάλογο εργασίας μας;

Άσκηση 3

Η εντολή touch [] μπορεί να χρησιμοποιηθεί για τη δημιουργία νέων (κενών) αρχείων. Η εντολή touch file3.txt θα δημιουργήσει (στον τρέχοντα κατάλογο) το αρχείο με όνομα file3.txt εφόσον αυτό δεν προϋπήρχε. Αν υπάρχει ήδη το αρχείο file3.txt, τότε δεν θα επηρεάσει τα περιεχόμενά του. Θα αλλάξει, όμως, όλες τις χρονοσφραγίδες (timestamps) που έχουν σχέση με την στιγμή τελευταίας πρόσβασης και δημιουργίας του αρχείου στην τρέχουσα χρονική στιγμή.

  1. Να δημιουργήσετε τον κατάλογο test01 κάτω από το home directory σας (στον αετό). Κάντε cd (change directory) στον test01.
  2. Να δημιουργήσετε δύο κενά αρχεία με ονόματα file1 και file2.
  3. Να αλλάξετε το όνομα του αρχείου file1 σε test1.
  4. Να χρησιμοποιήσετε την εντολή ls για να ελέγξετε τα αποτελέσματα.
  5. Να δημιουργήσετε ένα νέο κατάλογο temp μέσα στον test01.
  6. Να αντιγράψετε όλα τα αρχεία του test01 στον κατάλογο temp.
  7. Να εκτελέσετε την εντολή tree και κατανοήστε το αποτέλεσμά της.
  8. Να διαγράψετε το αρχείο file2 χρησιμοποιώντας την εντολή rm –ri. Τι παρατηρείτε;
  9. Να διαγράψετε τον κατάλογο temp με την εντολή rmdir.

ΥΠΌΔΕΙΞΗ : Να χρησιμοποιείτε την εντολή pwd για να ελέγχετε κάθε φορά ποιος είναι ο Τρέχων Φάκελος Εργασίας.

Άσκηση 4

  1. Μέσα στο home directory σας (στον αετό) δημιουργήστε τον κατάλογο transport.
  2. Δημιουργήστε τους εξής υποκαταλόγους (μέσα στον transport):
    transport/
    |-- cars
    |   |-- ford
    |   |-- honda
    |   |   |-- accord
    |   |   `-- civic
    |   `-- renault
    |-- planes
    |   |-- airbus
    |   `-- learjet
    `-- trains
    
  3. Χρησιμοποιήστε την εντολή cd, για να περιηγηθείτε σε αυτούς τους καταλόγους.
  4. Χρησιμοποιήστε την εντολή ls, για να δείτε τα περιεχόμενά τους.
  5. Μεταβείτε στον κατάλογο cars (με την εντολή cd) και δείτε με την εντολή ls τα περιεχόμενα του καταλόγου planes.
  6. Αντιγράψτε τον κατάλογο planes μέσα στον κατάλογο cars. Πώς μπορείτε να το κάνετε με την εντολή cp;
  7. Μεταβείτε στον κατάλογο transport και δείτε με την εντολή tree το αποτέλεσμα.
  8. Μεταβείτε στον κατάλογο honda και προσπαθήστε να διαγράψετε τους φακέλους . (current) και .. (parent) με την εντολή rm. Τι παρατηρείτε;

Άσκηση 5

Εκτελέστε τις παρακάτω εντολές (στον aetos ή σε ένα σύστημα με πολλούς χρήστες) και ερμηνεύστε τα αποτέλεσμά τους:

cat /etc/passwd
more /etc/passwd
head -15 /etc/passwd
tail -10 /etc/passwd
cd /etc
tail -10 passwd
tail -10 /etc/mtools.conf
tail –n +10 /etc/mtools.conf

Άσκηση 6

Βρείτε το αποτέλεσμα της εκτέλεσης (στον aetos) των παρακάτω εντολών :

echo ~
echo ~/
echo ~asidirop
echo ~klefturi
echo $HOME
echo ~studin
echo ~root
echo ~asidirop/tmp
echo ~asidirop/denyparxei/fakelos
cd ~asidirop/denyparxei/fakelos
ls ~asidirop/denyparxei/fakelos
echo ~asidirop/..
ls ~asidirop/..

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

Άσκηση 7

Στο παρακάτω διαδραστικό σχήμα () παρουσιάζεται ένα τυχαίο σύστημα αρχείων. Μπορείτε χρησιμοποιώντας την επιλογή «Νέο Σύστημα Αρχείων» να δημιουργήσετε νέο διαφορετικό. Όταν πατήσετε το κουμπί «Έναρξη παιχνιδιού», θα εμφανίζονται στο μπλε πλαίσιο κάποιες διαδρομές. Θα πρέπει να κάνετε κλικ επάνω στο σχήμα, στον κόμβο που αντιστοιχεί στη διαδρομή που σας εμφανίζεται. Αν η διαδρομή που εμφανίζεται είναι λανθασμένη, θα πρέπει να πατήσετε το κουμπί «Είναι Λάθος». Συνολικά, έχετε 30 δευτερόλεπτα για να βρείτε όσο περισσότερες διαδρομές μπορείτε.
Άσκηση-Παιχνίδι με απόλυτες διαδρομές.

Άσκηση 8

Υποθέστε ότι το δικό σας home directory περιέχει τους φακέλους alice, bob, καθώς και τα αρχεία carol, eve, fred, όπως φαίνονται στο παρακάτω σχήμα:

Άσκηση τύπου Σωστό-Λάθος με διαδρομές
  1. Ποια είναι η Απόλυτη Διαδρομή για το δικό σας home directory;
  2. Ποια είναι η Απόλυτη Διαδρομή για τον παραπάνω κατάλογο alice;
  3. Να δημιουργήσετε την παραπάνω δομή καταλόγων (χρησιμοποιήστε την εντολή touch για τη δημιουργία των αρχείων, mkdir για τη δημιουργία καταλόγων)
  4. Υποθέτοντας ότι ο τρέχων κατάλογος εργασίας (cwd) είναι ο φάκελος bob, ποιες από τις παρακάτω διαδρομές είναι σωστές; Να δικαιολογήσετε την απάντησή σας.
    Ερωτήσεις Σωστό-Λάθος για τις Διαδρομές
  5. Ελέγξτε την ορθότητα των παραπάνω διαδρομών χρησιμοποιώντας την εντολή stat.

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

  6. Μπορείτε να ελέγξετε την ορθότητα των παραπάνω διαδρομών χρησιμοποιώντας (αντί την stat) την εντολή ls;
  7. Μπορείτε να ελέγξετε την ορθότητα των παραπάνω διαδρομών χρησιμοποιώντας (αντί την stat) την εντολή cd;
  8. Υποθέτοντας ότι ο τρέχων κατάλογος είναι ο bob, ποιες είναι οι εντολές για:
    1. μετακίνηση των carol και eve μέσα στον κατάλογο bob (με μια εντολή),
    2. μετακίνηση του bob (άρα και των περιεχομένων του) μέσα στον κατάλογο alice,
    3. αντιγραφή του fred μέσα στον κατάλογο alice με ένα νέο όνομα.
  9. Υποθέτοντας ότι ο τρέχων κατάλογος είναι το δικό σας home directory
    1. τι πρέπει να πληκτρολογήσετε για τη διαγραφή του directory bob;
    2. να δώσετε μια εντολή για τη διαγραφή των carol, και eve.

Άσκηση 9

Στο παρακάτω διαδραστικό σχήμα () παρουσιάζεται ένα τυχαίο σύστημα αρχείων (όπως και στην Άσκηση 7). Όταν πατήσετε το κουμπί «Έναρξη παιχνιδιού», θα εμφανίζονται στο μπλε πλαίσιο κάποιες διαδρομές. Θα πρέπει να κάνετε κλικ επάνω στο σχήμα, στον κόμβο που αντιστοιχεί στη διαδρομή που σας εμφανίζεται. Επιπλέον, αν η διαδρομή είναι σχετική, τότε παίζει ρόλο και ο τρέχων κατάλογος εργασίας. Το ποιος είναι κάθε φορά εμφανίζεται στο κόκκινο πλαίσιο. Αν η διαδρομή που εμφανίζεται είναι λανθασμένη, θα πρέπει να πατήσετε το κουμπί «Είναι Λάθος». Συνολικά έχετε 30 δευτερόλεπτα για να βρείτε όσο περισσότερες διαδρομές μπορείτε.
Άσκηση-Παιχνίδι με απόλυτες και σχετικές διαδρομές.

Αναφορές