Από Coder σε Engineer
    Linux & το Terminal

    Το Μαύρο Κουτί: Terminal & Shell

    Filesystem & Paths

    Permissions & Root

    Εισαγωγή στο DevOps
    Στοιχειώδες Networking
    HTTP επικοινωνία
    Git vs Github
    Εισαγωγή στο Cloud
    Ρόλοι στο Tech
    Πώς να τα καταφέρεις στο Interview
    Take-Home Assignments
Απορίες;

Filesystem & Paths

Πριν μάθεις να κάνεις πράγματα στο terminal, πρέπει να μάθεις να κινείσαι σε αυτό. Γιατί σε αντίθεση με τα Windows ή το Finder, εδώ δεν βλέπεις φακέλους με εικονίδια. Είσαι σαν να περπατάς σε ένα κτίριο με κλειστά μάτια - και οι εντολές αυτού του μαθήματος είναι τα μάτια σου.

1. Το filesystem είναι ένα δέντρο

Στο Linux όλα ξεκινάνε από μία ρίζα: Τον φάκελο / (λέγεται root directory). Φαντάσου το σαν ένα πολυώροφο κτίριο όπου το / είναι η είσοδος στο ισόγειο, και κάθε φάκελος μέσα του είναι ένας διάδρομος που οδηγεί σε άλλα δωμάτια.
ascii
/
├── home/
│   └── ioannis/      ← εδώ "μένεις" εσύ
├── etc/              ← ρυθμίσεις του συστήματος
├── var/
│   └── log/          ← εδώ ζουν τα logs
└── usr/
Δύο φάκελοι που θα συναντάς συνεχώς:
  • /home/<user> → ο προσωπικός σου φάκελος. Εδώ έχεις πλήρη δικαιώματα να φτιάχνεις και να σβήνεις.
  • /var/log → εδώ τα προγράμματα γράφουν τα logs τους. Όταν κάτι χαλάσει στην παραγωγή, εδώ θα ψάξεις.

2. Πού είμαι; - pwd

Η πρώτη εντολή που γράφεις όταν χαθείς:
bash
pwd
Σημαίνει print working directory - "πες μου σε ποιον φάκελο στέκομαι αυτή τη στιγμή". Σου τυπώνει το πλήρες μονοπάτι, π.χ. /home/ioannis. Απλό, αλλά θα το χρησιμοποιείς εκατοντάδες φορές.

3. Τι υπάρχει εδώ; - ls

bash
ls            # δείξε τα περιεχόμενα του φακέλου
ls -l         # αναλυτική λίστα (δικαιώματα, μέγεθος, ημερομηνία)
ls -a         # δείξε ΚΑΙ τα κρυφά αρχεία
ls -la        # τα δύο μαζί
Το -a είναι κρίσιμο: Στο Linux τα αρχεία που ξεκινάνε με τελεία (π.χ. .env, .gitignore) είναι κρυφά και δεν εμφανίζονται με σκέτο ls. Πολλά "μυστηριώδη" προβλήματα ρυθμίσεων λύνονται μόλις θυμηθείς το ls -a.

4. Μετακίνηση - cd

bash
cd /var/log     # πήγαινε στον φάκελο /var/log
cd projects     # μπες στον φάκελο "projects" που είναι εδώ μέσα
cd ..           # ανέβα έναν φάκελο προς τα πάνω
cd ~            # γύρνα στον προσωπικό σου φάκελο
cd              # σκέτο cd κάνει το ίδιο: γυρνάει στο home
cd -            # γύρνα στον προηγούμενο φάκελο που ήσουν
Το cd σημαίνει change directory. Τα .. (πήγαινε πάνω) και ~ (home) θα τα χρησιμοποιείς ασταμάτητα.

5. Absolute vs Relative Paths - Η πιο σημαντική έννοια

Εδώ μπερδεύονται οι περισσότεροι. Υπάρχουν δύο τρόποι να περιγράψεις πού βρίσκεται ένα αρχείο:
  • Absolute path - ξεκινάει πάντα από τη ρίζα /. Είναι σαν να δίνεις πλήρη ταχυδρομική διεύθυνση: "Ελλάδα, Αθήνα, Σταδίου 10". Δουλεύει από οπουδήποτε κι αν στέκεσαι.
    bash
    cd /home/ioannis/projects/app
  • Relative path - ξεκινάει από εκεί που στέκεσαι τώρα. Είναι σαν να λες "δύο πόρτες παρακάτω, στρίψε δεξιά". Εξαρτάται από το πού βρίσκεσαι.
    bash
    cd projects/app     # μόνο αν είσαι ήδη μέσα στο /home/ioannis
Ο κανόνας για να μην μπερδεύεσαι: Αν το μονοπάτι ξεκινάει με /, είναι absolute. Αν ξεκινάει με όνομα φακέλου, . ή .., είναι relative.
Δύο σύμβολα-κλειδιά: Το . σημαίνει "ο φάκελος που είμαι τώρα" και το .. σημαίνει "ο από πάνω φάκελος". Θα τα δεις παντού - π.χ. ./script.sh σημαίνει "τρέξε το script που είναι εδώ".
Δες το στην πράξη: Περιηγήσου στο δέντρο παρακάτω και άλλαξε μεταξύ Relative και Absolute για να δεις ότι η ίδια κίνηση γράφεται με δύο τρόπους - και πώς αλλάζει το pwd:
Περιήγηση στο Filesystem
/
home
ioannis
projects
app
notes
etc
var
log
Μορφή εντολής:
Relative
Absolute
Πήγαινε σε:

$

$ pwd

/home/ioannis

6. Tab completion - Το πιο χρήσιμο πλήκτρο

Δεν χρειάζεται να γράφεις ολόκληρα ονόματα φακέλων. Γράψε τα πρώτα γράμματα και πάτα Tab:
bash
cd pro<Tab>     # γίνεται αυτόματα cd projects/
Το terminal συμπληρώνει μόνο του. Αν υπάρχουν πολλές επιλογές, πάτα Tab δύο φορές για να τις δεις όλες. Αυτό δεν είναι απλά για ταχύτητα - σε γλιτώνει από ορθογραφικά λάθη στα μονοπάτια, που είναι η νούμερο ένα αιτία "δεν δουλεύει η εντολή μου".

Σύνοψη

  • Το filesystem είναι ένα δέντρο με ρίζα το /.
  • pwd → πού είμαι, ls → τι υπάρχει εδώ (-la για κρυφά & αναλυτικά), cd → μετακίνηση.
  • .. = πάνω, ~ = home, . = εδώ.
  • Absolute path ξεκινάει από / και δουλεύει παντού, relative path ξεκινάει από εκεί που στέκεσαι.
  • Πάτα Tab για αυτόματη συμπλήρωση και μηδέν ορθογραφικά λάθη.

Θες να συνεχίσεις;

Αυτό το μάθημα είναι δωρεάν. Κάνε σύνδεση για να κρατάς την πρόοδο και τις σημειώσεις σου, ή απόκτησε το course για να ξεκλειδώσεις τα υπόλοιπα μαθήματα, τα labs και την κοινότητα.