2.3 Μάθημα 1
Εισαγωγή
Πιστοποιητικό: |
Linux Essentials |
---|---|
Έκδοση: |
1.6 |
Θέμα: |
2 Βρίσκοντας το Δρόμο σας σε ένα Σύστημα Linux |
Σκοπός: |
2.3 Χρήση Καταλόγων και Παράθεση Αρχείων |
Μάθημα: |
1 απο 2 |
Αρχεία και Κατάλογοι
Το σύστημα αρχείων Linux είναι παρόμοιο με το σύστημα αρχείων άλλων λειτουργικών συστημάτων στο ότι περιέχει αρχεία και καταλόγους. Τα αρχεία περιέχουν δεδομένα όπως κείμενο αναγνώσιμο από τον άνθρωπο, εκτελέσιμα προγράμματα ή δυαδικά δεδομένα που χρησιμοποιούνται από τον υπολογιστή. Οι κατάλογοι χρησιμοποιούνται για τη δημιουργία οργάνωσης μέσα στο σύστημα αρχείων. Οι κατάλογοι μπορούν να περιέχουν αρχεία και άλλους καταλόγους.
$ tree Documents ├── Mission-Statement.txt └── Reports └── report2018.txt 1 directory, 2 files
Σε αυτό το παράδειγμα, Documents
είναι ένας κατάλογος που περιέχει ένα αρχείο (Mission-Statement.txt
) και ένα υποκατάλογο (Reports
). Ο κατάλογος Reports
με τη σειρά του περιέχει ένα αρχείο που ονομάζεται report2018.txt
. Ο κατάλογος Documents
λέγεται ότι είναι ο parent του καταλόγου Reports
.
Tip
|
Εάν η εντολή |
Ονόματα Αρχείων και Καταλόγων
Τα ονόματα αρχείων και καταλόγων στο Linux μπορούν να περιέχουν πεζά και κεφαλαία γράμματα, αριθμούς, κενούς χαρακτήρες και ειδικούς χαρακτήρες. Ωστόσο, δεδομένου ότι πολλοί ειδικοί χαρακτήρες έχουν μια ιδιαίτερη σημασία στο shell του Linux, είναι καλή πρακτική να μην χρησιμοποιούνται κενά ή ειδικοί χαρακτήρες κατά την ονομασία αρχείων ή καταλόγων. Τα διαστήματα, για παράδειγμα, χρειάζονται τον χαρακτήρα διαφυγής \
για την σωστή είσαγωγή τους:
$ cd Mission\ Statements
Επίσης, ανατρέξτε στο όνομα αρχείου report2018.txt
. Τα ονόματα αρχείων μπορούν να περιέχουν ένα suffix [επίθεμα] το οποίο έρχεται μετά την περίοδο (.
). Σε αντίθεση με τα Windows, αυτό το επίθημα δεν έχει ιδιαίτερη σημασία στο Linux· είναι εκεί για ανθρώπινη κατανόηση. Στο παράδειγμά μας, το .txt
υποδεικνύει σε εμάς ότι πρόκειται για ένα αρχείο απλού κειμένου, αν και θα μπορούσε τεχνικά να περιέχει κάθε είδους δεδομένα.
Πλοήγηση του Συστήματος Αρχείων
Λήψη της Τρέχουσας Τοποθεσίας
Δεδομένου ότι τα Linux shells όπως το Bash βασίζονται σε κείμενο, είναι σημαντικό να θυμάστε την τρέχουσα τοποθεσία σας κατά την πλοήγηση στο σύστημα αρχείων. H γραμμή εντολών παρέχει αυτές τις πληροφορίες:
user@hostname ~/Documents/Reports $
Λάβετε υπόψη ότι πληροφορίες όπως user
και hostname
θα καλυφθούν σε μελλοντικές ενότητες. Από το prompt, τώρα γνωρίζουμε ότι η τρέχουσα τοποθεσία μας βρίσκεται στον κατάλογο Reports
. Ομοίως, η εντολή pwd
(print working directory) θα εκτυπώσει κατάλογο εργασίας:
user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports
Η σχέση των καταλόγων αναπαρίσταται με μια κάθετο (/
). Γνωρίζουμε ότι το Reports
είναι ένας υποκατάλογος των Documents
, ο οποίος είναι ένας υποκατάλογος του user
, ο οποίος βρίσκεται σε έναν κατάλογο που ονομάζεται home
. Το home
δεν φαίνεται να έχει parent κατάλογο, αλλά αυτό δεν ισχύει καθόλου. Ο γονέας του home
ονομάζεται root και αντιπροσωπεύεται από την πρώτη κάθετο (/
). Θα συζητήσουμε τον root κατάλογο σε επόμενη ενότητα.
Παρατηρήστε ότι η έξοδος της εντολής pwd
διαφέρει ελαφρώς από τη διαδρομή που δίνεται στη γραμμή εντολών. Αντί /home/user
, η γραμμή εντολών περιέχει μια περισπωμένη [tilde] (~
). Η περισπωμένη είναι ένας ειδικός χαρακτήρας που αντιπροσωπεύει τον κατάλογο αφετηρίας του χρήστη. Αυτό θα αναλυθεί με περισσότερες λεπτομέρειες στο επόμενο μάθημα.
==== Παράθεση Περιεχομένων Καταλόγου
Τα περιεχόμενα του τρέχοντος καταλόγου παρατίθενται με την εντολή ls
:
user@hostname ~/Documents/Reports $ ls report2018.txt
Σημειώστε ότι το ls
δεν παρέχει πληροφορίες σχετικά με τον parent κατάλογο. Ομοίως, από προεπιλογή το ls
δεν εμφανίζει πληροφορίες σχετικά με το περιεχόμενο των υποκαταλόγων. Το ls
μπορεί μόνο να “δεί” αυτό που υπάρχει στον τρέχοντα κατάλογο.
Αλλαγή Τρέχοντος Καταλόγου
Η πλοήγηση στο Linux γίνεται κυρίως με την εντολή cd
. Η εντολή αλλάζει κατάλογο (change directory). Χρησιμοποιώντας την εντολή pwd
από πριν, γνωρίζουμε ότι ο τρέχων κατάλογός μας είναι`/home/user/Documents/Reports`. Μπορούμε να αλλάξουμε τον τρέχοντα κατάλογο εισάγοντας ένα νέο path:
user@hostname ~ $ cd /home/user/Documents user@hostname ~/Documents $ pwd /home/user/Documents user@hostname ~/Documents $ ls Mission-Statement.txt Reports
Από τη νέα μας τοποθεσία, μπορούμε να “δούμε” το αρχείο Mission-Statement.txt
και τον υποκατάλογο Reports
, αλλά όχι τα περιεχόμενα του υποκαταλόγου μας. Μπορούμε να επιστρέψουμε στον κατάλογο Reports
όπως:
user@hostname ~/Documents $ cd Reports user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports user@hostname ~/Documents/Reports $ ls report2018.txt
Είμαστε τώρα πίσω από εκεί που ξεκινήσαμε.
Απόλυτα και Σχετικά Paths
Η εντολή pwd
τυπώνει πάντα ένα απόλυτο path. Αυτό σημαίνει ότι το path περιέχει κάθε βήμα του path, από την κορυφή του συστήματος αρχείων (/
) έως το κάτω μέρος (Reports
). Τα απόλυτα paths ξεκινούν πάντα με ένα /
.
/ └── home └── user └── Documents └── Reports
Το απόλυτο path περιέχει όλες τις πληροφορίες που απαιτούνται για να φτάσετε στον κατάλογο Reports
από οπουδήποτε στο σύστημα αρχείων. Το μειονέκτημα είναι ότι είναι κουραστικό να πληκτρολογείτε.
Το δεύτερο παράδειγμα (cd Reports
) ήταν πολύ πιο εύκολο να το πληκτρολογήσετε. Αυτό είναι ένα παράδειγμα ενός σχετικού path. Τα σχετικά paths είναι μικρότερα αλλά έχουν νόημα μόνο σε σχέση με την τρέχουσα τοποθεσία σας. Σκεφτείτε αυτήν την αναλογία: σας επισκέπτομαι στο σπίτι σας. Μου λες ότι ο φίλος σου μένει δίπλα. Θα καταλάβω αυτήν την τοποθεσία επειδή σχετίζεται με την τρέχουσα τοποθεσία μου. Αλλά αν μου το πεις αυτό από το τηλέφωνο, δεν θα μπορέσω να βρω το σπίτι του φίλου σου. Θα πρέπει να μου δώσετε την πλήρη διεύθυνση του δρόμου.
Ειδικά Σχετικά Paths
Το Linux shell μας δίνει τρόπους να συντομεύσουμε τα paths μας κατά την πλοήγηση. Για να αποκαλύψουμε τα πρώτα ειδικά paths, εισάγουμε την εντολή ls
με τη σημαία -a
. Αυτή η σημαία τροποποιεί την εντολή ls
έτσι ώστε να εμφανίζονται όλα τα αρχεία και οι κατάλογοι, συμπεριλαμβανομένων κρυφών αρχείων και καταλόγων:
user@hostname ~/Documents/Reports $ ls -a . .. report2018.txt
Note
|
Μπορείτε να ανατρέξετε στη σελίδα |
Αυτή η εντολή αποκάλυψε δύο επιπλέον αποτελέσματα: Αυτά είναι ειδικά paths. Δεν αντιπροσωπεύουν νέα αρχεία ή καταλόγους, αλλά αντιπροσωπεύουν καταλόγους που γνωρίζετε ήδη:
.
-
Υποδεικνύει την _ τρέχουσα τοποθεσία_ (στην περίπτωση αυτή,
Reports
). ..
-
Υποδεικνύει τον parent κατάλογο (στην περίπτωση αυτή,
Documents
).
Συνήθως είναι περιττή η χρήση του ειδικού σχετικού path για την τρέχουσα τοποθεσία. Είναι πιο εύκολο και πιο κατανοητό να πληκτρολογήσετε report2018.txt
παρά να πληκτρολογήσετε ./Report2018.txt
. Αλλά το .
έχει χρήσεις που θα μάθετε σε μελλοντικές ενότητες. Προς το παρόν, θα επικεντρωθούμε στη σχετικό path για τον parent κατάλογο:
user@hostname ~/Documents/Reports $ cd .. user@hostname ~/Documents $ pwd /home/user/Documents
Το παράδειγμα του cd
είναι πολύ πιο εύκολο όταν χρησιμοποιείτε ..
αντί για το απόλυτο path. Επιπλέον, μπορούμε να συνδυάσουμε αυτό το μοτίβο για να περιηγηθούμε στο δέντρο αρχείων πολύ γρήγορα.
user@hostname ~/Documents $ cd ../.. $ pwd /home
Καθοδηγούμενες Ασκήσεις
-
Για καθένα από τα παρακάτω paths, προσδιορίστε αν είναι απόλυτο ή σχετικό:
/home/user/Downloads
../Reports
/var
docs
/
-
Παρατηρήστε την ακόλουθη δομή αρχείων. Σημείωση: Οι κατάλογοι τελειώνουν με κάθετο (
/
) όταν καλούμε την εντολήtree
με την επιλογή-F
. Θα χρειαστείτε αυξημένα δικαιώματα για να εκτελέσετε την εντολήtree
στον κατάλογο root (/
). Το παρακάτω είναι παράδειγμα εξόδου και δεν είναι ενδεικτικό μιας πλήρους δομής καταλόγου. Χρησιμοποιήστε το για να απαντήσετε στις ακόλουθες ερωτήσεις:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Χρησιμοποιήστε αυτήν τη δομή για να απαντήσετε στις ακόλουθες ερωτήσεις.
Ένας χρήστης εισάγει τις ακόλουθες εντολές:
$ cd /etc/udev $ ls -a
Ποια θα είναι η έξοδος της εντολής
ls -a
; -
Εισαγάγετε τη συντομότερη δυνατή εντολή για καθένα από τα ακόλουθα:
-
Η τρέχουσα τοποθεσία σας είναι ο κατάλογος root (
/
). Εισαγάγετε την εντολή για να μεταβείτε στον κατάλογο με όνομαlost+found
που βρίσκεται μέσα στον κατάλογοhome
(παράδειγμα):$ cd home/lost+found
-
Η τρέχουσα τοποθεσία σας είναι ο κατάλογος root (
/
). Εισαγάγετε την εντολή για να μεταβείτε στον κατάλογο με όνομα/etc/network/
. -
Η τρέχουσα τοποθεσία σας είναι
/home/user/Documents/
. Μεταβείτε στον κατάλογο με όνομα/etc/
. -
Η τρέχουσα τοποθεσία σας είναι
/etc/systemd/system/
. Μεταβείτε στον κατάλογο με όνομα/home/user/
.
-
-
Εξετάστε τις ακόλουθες εντολές:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Ποια είναι η έξοδος της τελικής εντολής
pwd
;
Ασκήσεις Εξερεύνησης
-
Ας υποθέσουμε ότι ένας χρήστης έχει εισαγάγει τις ακόλουθες εντολές:
$ mkdir "this is a test" $ ls this is a test
Ποια εντολή
cd
θα σας επιτρέψει να εισέλθετε σε αυτόν τον κατάλογο; -
Δοκιμάστε το ξανά αυτό, αλλά αφού πληκτρολογήσετε
cd this
, πατήστε το πλήκτρο TAB. Τι εμφανίζεται τώρα στο prompt;Αυτό είναι ένα παράδειγμα αυτόματης ολοκλήρωσης [autocompletion], το οποίο είναι ένα ανεκτίμητο εργαλείο όχι μόνο για την εξοικονόμηση χρόνου, αλλά και για την πρόληψη ορθογραφικών λαθών.
-
Προσπαθήστε να δημιουργήσετε έναν κατάλογο του οποίου το όνομα περιέχει τον χαρακτήρα
\
. Εμφανίστε το όνομα του καταλόγου μεls
και διαγράψτε τον κατάλογο.
Σύνοψη
Σε αυτό το μάθημα μάθατε:
-
Τις θεμελιώδεις αρχές του συστήματος αρχείων Linux
-
Την διαφορά μεταξύ parent καταλόγων και υποκαταλόγων
-
Την διαφορά μεταξύ απόλυτων paths αρχείου και σχετικών paths αρχείου
-
Τα ειδικά σχετικά paths
.
και..
-
Πλοήγηση του συστήματος αρχείων με την χρήση της εντολής
cd
-
Εμφάνιση της τρέχουσας τοποθεσίας σας χρησιμοποιώντας την εντολή
pwd
-
Παράθεση όλων των αρχείων και καταλόγων χρησιμοποιώντας
ls -a
Οι ακόλουθες εντολές συζητήθηκαν σε αυτό το μάθημα:
cd
-
Αλλάξτε τον τρέχοντα κατάλογο
pwd
-
Εκτυπώστε το path του τρέχοντος καταλόγου εργασίας
ls
-
Παραθέστε τα περιεχόμενα ενός καταλόγου και εμφανίστε τις ιδιότητες των αρχείων
mkdir
-
Δημιουργήστε έναν νέο κατάλογο
tree
-
Εμφάνιση ιεραρχικής λίστας ενός δέντρου καταλόγου
Απαντήσεις στις Καθοδηγούμενς Ασκήσεις
-
Για καθένα από τα παρακάτω paths, προσδιορίστε αν είναι απόλυτο ή σχετικό:
/home/user/Downloads
απόλυτο
../Reports
σχετικό
/var
απόλυτο
docs
σχετικό
/
απόλυτο
-
Παρατηρήστε την ακόλουθη δομή αρχείων. Σημείωση: Οι κατάλογοι τελειώνουν με κάθετο (
/
) όταν καλούμε την εντολήtree
με την επιλογή-F
. Θα χρειαστείτε αυξημένα δικαιώματα για να εκτελέσετε την εντολήtree
στον κατάλογο root (/
). Το παρακάτω είναι παράδειγμα εξόδου και δεν είναι ενδεικτικό μιας πλήρους δομής καταλόγου. Χρησιμοποιήστε το για να απαντήσετε στις ακόλουθες ερωτήσεις:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Ένας χρήστης εισάγει τις ακόλουθες εντολές:
$ cd /etc/udev $ ls -a
Ποια θα είναι η έξοδος της εντολής
ls -a
;. .. rules.d udev.conf
-
Εισαγάγετε τη συντομότερη δυνατή εντολή για καθένα από τα ακόλουθα:
-
Η τρέχουσα τοποθεσία σας είναι ο κατάλογος root (
/
). Εισαγάγετε την εντολή για να μεταβείτε στον κατάλογο με όνομαlost+found
που βρίσκεται μέσα στον κατάλογοhome
(παράδειγμα):$ cd home/lost+found
-
Η τρέχουσα τοποθεσία σας είναι ο κατάλογος root (
/
). Εισαγάγετε την εντολή για να μεταβείτε στον κατάλογο με όνομα/etc/network/
:$ cd etc/network
-
Η τρέχουσα τοποθεσία σας είναι
/home/user/Documents/
. Μεταβείτε στον κατάλογο με όνομα/etc/
.$ cd /etc
-
Η τρέχουσα τοποθεσία σας είναι
/etc/systemd/system/
. Μεταβείτε στον κατάλογο με όνομα/home/user/
.$ cd /home/user
-
-
Εξετάστε τις ακόλουθες εντολές:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Ποια είναι η έξοδος της τελικής εντολής
pwd
;/etc/systemd
Απαντήσεις στις Ασκήσεις Εξερεύνησης
-
Ας υποθέσουμε ότι ένας χρήστης έχει εισαγάγει τις ακόλουθες εντολές:
$ mkdir "this is a test" $ ls this is a test
Ποια εντολή
cd
θα σας επιτρέψει να εισέλθετε σε αυτόν τον κατάλογο;$ cd this\ is\ a\ test
-
Δοκιμάστε το ξανά αυτό, αλλά αφού πληκτρολογήσετε
cd this
, πατήστε το πλήκτρο TAB. Τι εμφανίζεται τώρα στο prompt;$ cd this\ is\ a\ test
Αυτό είναι ένα παράδειγμα αυτόματης ολοκλήρωσης, το οποίο είναι ένα ανεκτίμητο εργαλείο όχι μόνο για την εξοικονόμηση χρόνου, αλλά και για την πρόληψη ορθογραφικών λαθών.
-
Προσπαθήστε να δημιουργήσετε έναν κατάλογο του οποίου το όνομα περιέχει τον χαρακτήρα
\
. Εμφανίστε το όνομα του καταλόγου μεls
και διαγράψτε τον κατάλογο.Μπορείτε είτε να διαφύγετε την ανάστροφη κάθετο χρησιμοποιώντας μια άλλη ανάστροφη κάθετο (
\\
) είτε να χρησιμοποιήσετε μονά ή διπλά εισαγωγικά για ολόκληρο το όνομα του καταλόγου:$ mkdir my\\dir $ ls 'my\dir' $ rmdir 'my\dir'