4.7.1 Δομή συστήματος αρχείων στο Linux
4.7.1 Δομή συστήματος αρχείων στο Linux
Στο λειτουργικό σύστημα Linux τα αρχεία αποθηκεύονται σε καταλόγους (directories) και υποκαταλόγους μιας ενιαίας δομής δέντρου ανεξάρτητα αν ανήκουν σε διαφορετικές μονάδες αποθήκευσης. Σε αντίθεση με το Linux στα Windows κάθε μονάδα αποθήκευσης είναι η κορυφή μιας νέας δενδροειδούς δομής.
Εικόνα 4.7.1 - Δενδροειδής δομή αρχείων σε Windows (αριστερά) και Linux (δεξιά)
Ο βασικός κατάλογος του συστήματος αρχείων στο Ubuntu είναι ο κατάλογος "/" (root). Σημαντικοί υποκατάλογοι του συστήματος αρχείων είναι:
- /bin: Περιέχει εκτελέσιμα αρχεία που απαιτούνται κατά την εκκίνηση του συστήματος και για τη βασική λειτουργία του.
- /boot: Αρχεία που απαιτούνται για την εκκίνηση του συστήματος, όπως τον πυρήνα του Linux.
- /home: Είναι ο κατάλογος χρήστη, όπου αποθηκεύονται τα προσωπικά αρχεία και οι ρυθμίσεις των χρηστών. Για κάθε χρήστη του Linux υπάρχει αντίστοιχος προσωπικός φάκελος home.
- /etc: Περιέχει τα ρυθμίσεις του συστήματος.
- /var: Περιέχει μεταβλητά αρχεία, όπως αρχεία καταγραφής, μηνύματα ηλεκτρονικού ταχυδρομείου και αρχεία βάσης δεδομένων.
- /tmp: Είναι ο κατάλογος προσωρινών αρχείων που δημιουργούνται από εφαρμογές ή διεργασίες κατά τη διάρκεια της εκτέλεσής τους.
- /mnt: Όταν συνδεθεί μια νέα συσκευή στο Linux (για παράδειγμα ένας δίσκος flash) τότε αυτή εμφανίζεται στον φάκελο mnt (mount). Στις περισσότερες διανομές αυτό γίνεται αυτόματα με μία διαδικασία που ονομάζεται automount.
Αρχεία
Σε ένα σύστημα αρχείων, τα αρχεία (files) είναι ουσιαστικά μια συλλογή δεδομένων στην οποία έχει αποδοθεί ένα όνομα. Τα ονόματα συνήθως αποτελούνται από χαρακτήρες ([a, .. z], [A, .. Z]) και αριθμούς. Επιπλέον ανάλογα με το Λ.Σ. επιτρέπονται και άλλοι χαρακτήρες ενώ υπάρχουν και διαφορετικές συμβάσεις για τα αποδεκτά ονόματα.
|
|||||||||||||||
Διαφοροποίηση πεζών -κεφαλαίων: Τα λειτουργικά συστήματα Windows δεν ξεχωρίζουν μεταξύ κεφαλαίων και πεζών γραμμάτων δηλαδή τα ονόματα “myfile.txt” και “MyFilE.txt” αναφέρονται στο ίδιο αρχείο. Ενώ για ένα λειτουργικό που προέρχεται από το Unix, όπως το Linux τα παραπάνω ονόματα αναφέρονται σε διαφορετικά αρχεία το καθένα [1] . Πλέον τα σύγχρονα συστήματα αρχείων επιτρέπουν στο όνομα του αρχείου και χαρακτήρες Unicode ώστε να υποστηρίζονται διαφορετικές γλώσσες. Μορφή ονόματος: Τα ονόματα των αρχείων, συμβατικά [2] χωρίζονται σε δύο μέρη. Το κύριο μέρος (ή απλά όνομα) και την επέκταση (extension). Το όνομα του αρχείου αποτελείται από τους χαρακτήρες πριν την τελευταία τελεία, ενώ η επέκταση του αρχείου είναι η τελευταία τελεία και οι χαρακτήρες που ακολουθούν. (Στον πίνακα που ακολουθεί δίνονται τέσσερα επεξηγηματικά παραδείγματα).
|
Είδη αρχείων
Το σύνολο των αρχείων σε ένα Λ.Σ. μπορεί να ενταχθεί σε πολλές κατηγοριοποιήσεις. Ίσως η πλέον χρήσιμη είναι αυτή που τα διαχωρίζει μεταξύ αρχείων κειμένου (text files) και σε δυαδικά αρχεία (binary files). Ως αρχεία κειμένου χαρακτηρίζονται αυτά που είναι αποθηκευμένα σε μορφή αναγνώσιμη απ’ ευθείας από τον χρήστη. Τα δυαδικά αρχεία είναι αποθηκευμένα στη μορφή που συνήθως αποκωδικοποιεί το πρόγραμμα που τα δημιουργεί και τα χρησιμοποιεί [3] . Ένα ενδεικτικό παράδειγμα για να κατανοήσουμε τη διαφορά είναι τα αρχεία .docx που παράγονται και διαβάζονται από το πρόγραμμα MS Word. Όταν ανοίγουμε το αρχείο αυτό μέσω προγράμματος που το αναγνωρίζει [4] βλέπουμε κείμενο το οποίο μπορούμε να αναγνώσουμε. Ενώ αν χρησιμοποιήσουμε πχ. την εντολή type για να δούμε τα περιεχόμενα του αρχείου δεν θα μπορέσουμε να διαβάσουμε το περιεχόμενο του.
Κατάλογοι
Οι κατάλογοι (directories) ή φάκελοι (folders) για ένα σύστημα αρχείων είναι ειδικά αρχεία τα οποία περιέχουν είτε αρχεία είτε άλλους φακέλους. Με αυτό τον τρόπο το σύστημα επιτρέπει στους χρήστες να οργανώνουν την ιεραρχία των καταλόγων σε μία δομή αναστραμμένου δέντρου.
Εικόνα 4.7.2 - Ενδεικτική δενδρική μορφή καταλόγων σε διανομή Linux
Πλοήγηση στη δομή καταλόγων
Στην ενότητα αυτή θα παρουσιαστούν εντολές που μπορούμε να δώσουμε στο τερματικό (command line) για πλοήγηση μέσα στο "δέντρο" της δομής καταλόγων του Linux.
Ας δούμε την παρακάτω δομή καταλόγων του linux
.Στη δομή αυτή παρατηρούμε ότι υπάρχει ο κατάλογος του χρήστη nikos23 και μέσα
σε αυτόν έχουν δημιουργηθεί δύο νέοι κατάλογοι ο python και ο html.
Με την είσοδό του στο σύστημα ο χρήστης nikos23 μεταφέρεται στον προσωπικό του κατάλογο (home directory) που έχει το όνομά του.
Η βασική εντολή μετακίνησης από ένα κατάλογο σε άλλον είναι η cd (change directory). Η εντολή αυτή μπορεί να μας μεταφέρει σε οποιοδήποτε κατάλογο αρκεί να προσδιορίσουμε τη θέση του.
Η θέση του προσδιορίζεται από το λεγόμενο μονοπάτι (path) και υπάρχουν δύο τέτοιοι προσδιορισμοί θέσης.
Απόλυτο μονοπάτι (absolute path): Καθορίζεται η διαδρομή από τη ρίζα "/" μέχρι τον κατάλογο. Παράδειγμα: Το απόλυτο μονοπάτι για τον κατάλογο python είναι το /home/nikos23/python. Η αντίστοιχη εντολή μετακίνησης είναι cd /home/nikos23/python.
Σχετικό μονοπάτι (relative path). Καθορίζει τη διαδρομή από τον κατάλογο που βρισκόμαστε μέχρι τον κατάλογο που θέλουμε να πάμε.
Για τον καθορισμό του σχετικού μονοπατιού συχνά συμμετέχουν δύο κατάλογοι με "περίεργα" ονόματα αρχεία ο ένας έχει όνομα τελεία "." και ο άλλος έχει όνομα δύο τελείες ".." (τους καταλόγους αυτούς μπορείτε να του δείτε στην εικόνα 4.7.5 με τα αποτελέσματα της εντολής ls -al). Ο κατάλογος "." αντιστοιχεί στον τρέχοντα κατάλογο που βρισκόμαστε κάθε φορά, ενώ ο κατάλογος ".." αντιστοιχεί στον γονικό του κατάλογο. Οι δύο αυτοί κατάλογοι δημιουργούνται αυτόματα μέσα σε κάθε κατάλογο που δημιουργείται από οποιονδήποτε χρήστη.
Παράδειγμα σχετικού μονοπατιού: Είμαστε στον κατάλογο python και θέλουμε να πάμε στον κατάλογο html. Το σχετικό μονοπάτι είναι ../html δηλαδή πήγαινε ένα πάνω και μετά κάτω στον html. Το σχετικό μονοπάτι θα μπορούσε να γραφτεί ./../html δηλαδή από εδώ που είσαι "." πήγαινε ένα πάνω και μετά κάτω στον html. Οι αντίστοιχες εντολές μετακίνησης είναι οι cd ../html και cd ./../html.
Σημείωση: Η εντολή cd χωρίς καμία παράμετρο μας μεταφέρει από όπου και αν βρισκόμαστε στο προσωπικό κατάλογο εργασίας (home directory)
Η διάκριση μεταξύ απόλυτου και σχετικού μονοπατιού υπάρχει σε κάθε Λ.Σ. Ο πίνακας που ακολουθεί δείχνει τη διαφορά μεταξύ των Windows και του inux.
Linux |
Windows |
||||
working dir |
absolute |
relative |
working dir |
absolute |
relative |
/home |
/home/notes.txt |
notes.txt |
C:\dev |
C:\dev\notes.txt |
notes.txt |
/home/usr |
/home/usr/dir |
dir |
C:\dev\usr |
C\dev\usr\dir |
dir |
|
Παλαιότερα λειτουργικά συστήματα είχαν και τη δυνατότητα κατηγοριοποίησης των αρχείων σε σχέση με το τρόπο προσπέλασής τους (access mode). Έτσι τα αρχεία χωρίζονταν σε αρχεία σειριακής προσπέλασης (sequential access) και σε αρχεία τυχαίας προσπέλασης (random access). Τα σειριακά αρχεία διαβάζονταν (μπορούσαν να προσπελαστούν) με τη σειρά byte προς byte. Ενώ στα αρχεία τυχαίας προσπέλασης μπορούσαν να διαβαστούν οποιοδήποτε κομμάτι του αρχείου ζητούσε ο χρήστης. |

[1] Τα συγκεκριμένα Λ.Σ. αναφέρονται και ως case sensitivity.
[2] Οι επεκτάσεις αρχείων είναι συμβάσεις μεταξύ των προγραμματιστών των διαφόρων εφαρμογών και των χρηστών τους. Μοναδική εξαίρεση αποτελεί το MS-DOS όπου υπάρχουν επέκτασεις αρχείων όπως .exe, .bat και .com που συμβολίζουν εκτελέσιμα αρχεία.
[3] Είναι σημαντικό εδώ να τονίσουμε πως αναφερόμαστε στον τρόπο που τα αρχεία κωδικοποιούνται κατά την αποθήκευσή τους. αποθηκεύονται
[4] Για παράδειγμα Open Office Writer, MS Word, Autodesk Quark.