Από Coder σε Engineer
Linux & το Terminal
Εισαγωγή στο DevOps
Στοιχειώδες Networking
HTTP επικοινωνία
Git vs Github
Εισαγωγή στο Cloud
Ρόλοι στο Tech
Πώς να τα καταφέρεις στο Interview
Take-Home Assignments
Απορίες;
Το Μαύρο Κουτί: Terminal & Shell
Αν υπάρχει ένα πράγμα που ξεχωρίζει αυτόν που "ξέρει να γράφει κώδικα" από αυτόν που μπορεί να δουλέψει σε ένα πραγματικό περιβάλλον, είναι η άνεση με το terminal.
Στα tutorials και στη σχολή όλα γίνονται με κουμπάκια και γραφικά. Στην πραγματικότητα; Δεν υπάρχουν κουμπάκια. Όταν συνδεθείς σε έναν server που τρέχει το app της εταιρείας, δεν θα δεις επιφάνεια εργασίας, εικονίδια ή ποντίκι. Θα δεις ένα μαύρο κουτί που περιμένει να γράψεις. Σε αυτό το μάθημα θα σταματήσεις να το φοβάσαι.
1. Terminal, Shell, Command Line - Τι είναι τι;
Αυτές οι τρεις λέξεις μπερδεύουν τους πάντες, γιατί τις χρησιμοποιούμε σαν συνώνυμα. Ας τις ξεκαθαρίσουμε με μια αναλογία.
Φαντάσου ότι παραγγέλνεις φαγητό σε ένα εστιατόριο:
- Terminal είναι το τραπέζι και το μενού - το παράθυρο μέσα από το οποίο επικοινωνείς. Είναι απλά το πρόγραμμα που σου δείχνει το κείμενο και δέχεται αυτά που πληκτρολογείς.
- Shell είναι ο σερβιτόρος - αυτός που παίρνει την παραγγελία σου, την καταλαβαίνει, την πάει στην κουζίνα και σου φέρνει πίσω το αποτέλεσμα. Η Shell είναι το πρόγραμμα που διαβάζει τις εντολές σου και τις εκτελεί.
- Command Line (ή CLI) είναι ο τρόπος που παραγγέλνεις - δηλαδή με κείμενο, γράφοντας, αντί να δείχνεις με το δάχτυλο.
Δεν χρειάζεται να κάθεσαι να τα ξεχωρίζεις στην καθημερινότητα. Όλοι λένε "άνοιξε το terminal". Απλά να ξέρεις ότι πίσω από το terminal τρέχει μια Shell που κάνει την πραγματική δουλειά.
2. Bash & Zsh - Οι δύο που θα συναντήσεις
Shell δεν υπάρχει μόνο μία. Οι δύο που θα δεις στο 99% των περιπτώσεων είναι:
- Bash - η κλασική, η πιο διαδεδομένη. Σχεδόν κάθε Linux server στον κόσμο τρέχει Bash. Αν μάθεις Bash, είσαι καλυμμένος παντού.
- Zsh - μια πιο μοντέρνα εκδοχή με ωραιότερα χρώματα και autocomplete. Είναι η default shell στα σύγχρονα Mac.
Η καλή είδηση: Οι βασικές εντολές είναι ακριβώς ίδιες και στις δύο. Ό,τι μάθεις εδώ δουλεύει και στις δύο. Μη χάνεις χρόνο διαλέγοντας - απλά γράψε.
3. Το Prompt: Πού πατάς
Όταν ανοίξεις το terminal, θα δεις κάτι σαν αυτό:
bashioannis@server:~$
Αυτό λέγεται prompt και σου δίνει πληροφορίες πριν καν γράψεις κάτι:
ioannis→ ο χρήστης (user) με τον οποίο είσαι συνδεδεμένος.server→ το όνομα του μηχανήματος (hostname). Χρήσιμο όταν είσαι συνδεδεμένος σε απομακρυσμένο server και θες να ξέρεις πού ακριβώς βρίσκεσαι.~→ ο φάκελος μέσα στον οποίο βρίσκεσαι αυτή τη στιγμή (το~σημαίνει "ο προσωπικός σου φάκελος"). Θα το δούμε αναλυτικά στο επόμενο μάθημα.$→ το σύμβολο που λέει "είμαι έτοιμος, γράψε". Αν δεις#αντί για$, προσοχή - σημαίνει ότι είσαι root (ο διαχειριστής με απόλυτη εξουσία).
Όταν δεις παραδείγματα στο internet που ξεκινάνε με$, μην αντιγράφεις το$μέσα στην εντολή σου. Είναι απλά το σύμβολο του prompt. Γράφεις μόνο ό,τι ακολουθεί μετά το$.
4. Η ανατομία μιας εντολής
Σχεδόν κάθε εντολή που θα γράψεις ακολουθεί το ίδιο μοτίβο τριών μερών:
bashls -l /home
ls→ η εντολή (το ρήμα: "τι θέλω να κάνω").-l→ ένα flag ή option (πώς να το κάνει - εδώ "δείξε μου αναλυτική λίστα")./home→ το argument (σε ποιον στόχο να το κάνει).
Μόλις καταλάβεις αυτό το pattern, σταματάς να αποστηθίζεις και αρχίζεις να διαβάζεις εντολές. Τα flags ξεκινάνε σχεδόν πάντα με
- (ένα ή δύο παύλες) και αλλάζουν τη συμπεριφορά της εντολής.5. Όταν κολλήσεις: --help & man
Κανείς δεν θυμάται όλα τα flags. Ούτε οι senior engineers. Αυτό που τους ξεχωρίζει είναι ότι ξέρουν πού να κοιτάξουν.
Κάθε εντολή σου εξηγεί τον εαυτό της:
bashls --help # γρήγορη περίληψη των επιλογών man ls # το πλήρες εγχειρίδιο (manual)
Το
man (από το manual) ανοίγει το επίσημο εγχειρίδιο της εντολής. Για να βγεις από αυτό, πάτα το πλήκτρο q (quit). Θυμήσου αυτό το q - είναι ο πιο συνηθισμένος τρόπος που "κολλάνε" οι αρχάριοι, νομίζοντας ότι πάγωσε το terminal.Σύνοψη
- Terminal = το παράθυρο, Shell = το πρόγραμμα που εκτελεί τις εντολές, CLI = ο τρόπος (με κείμενο).
- Bash και Zsh είναι οι δύο shells που θα δεις, οι βασικές εντολές είναι ίδιες.
- Το prompt σού λέει ποιος είσαι, πού είσαι και αν είσαι απλός χρήστης (
$) ή root (#). - Κάθε εντολή = command + flags + arguments.
- Όταν χαθείς, ρώτα την ίδια την εντολή με
--helpήman. Από τοmanβγαίνεις μεq.
Θες να συνεχίσεις;
Αυτό το μάθημα είναι δωρεάν. Κάνε σύνδεση για να κρατάς την πρόοδο και τις σημειώσεις σου, ή απόκτησε το course για να ξεκλειδώσεις τα υπόλοιπα μαθήματα, τα labs και την κοινότητα.