Linux για αρχάριους/Command line crash course
Εισαγωγή
επεξεργασίαΤο κείμενο αυτό είναι ένας συνοπτικός οδηγός για τη χρήση της γραμμής εντολών.
Αυτό που θα σας μάθει είναι να κάνετε απλές εργασίες στον υπολογιστή σας μέσω κονσόλας (πχ αντιγραφή αρχείων). Δεν είναι ένας πλήρης οδηγός καθώς εστιάζει μόνο σε εκείνες τις εντολές οι οποίες συναντώνται καθημερινά.
Προαπαιτούμενα
επεξεργασίαΥπάρχουν μόνο τρία προαπαιτούμενα προκειμένου να καταφέρετε να ολοκληρώσετε τον οδηγό:
- Να έχετε πρόσβαση σε κάποια διανομή Linux.
- Να γνωρίζετε τι θα πει φάκελος σε έναν υπολογιστή.
- Να έχετε όρεξη για γνώση :)
Τερματικό
επεξεργασίαΚαλώς ή κακώς υπάρχει μια πληθώρα λέξεων ή και εκφράσεων που εκφράζουν το ίδιο ακριβώς πράγμα:
- τερματικό (terminal)
- κονσόλα (console)
- κέλυφος (shell)
- γραμμή εντολών (command line)
Δυστυχώς, δεν υπάρχει ένας απολύτως standard τρόπος για να ανοίξετε ένα τερματικό στον υπολογιστή σας. Μία αρκετά συνήθης συντόμευση πληκτρολογίου είναι η εξής: alt+T
, αλλά ενδέχεται στη διανομή σας να χρησιμοποιείται κάποια άλλη σύμβαση. Αν τη δοκιμάσετε και δεν λειτουργεί, τότε ψάξτε στο menu της διανομής σας για οποιαδήποτε αναφορά σε μία από τις παραπάνω εκφράσεις. Αν εξακολουθείτε να μη μπορείτε να ανοίξετε ένα τερματικό, μια αναζήτηση στο internet για:
how to open the terminal on <distribution_name>
θα σας δώσει την απάντηση (φυσικά αντικαταστήστε το «distribution_name» με το όνομα της διανομής σας)
Εντολές
επεξεργασίαΠροκειμένου να γίνει κατανοητή η χρήση των εντολών, θα χρησιμοποιήσουμε το ακόλουθο format: <pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">$ εντολή</pre<noinclude></noinclude>> <pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan"> το output της εντολής το οποίο μπορεί να επεκτείνεται σε πολλές γραμμές </pre<noinclude></noinclude>>
Στην πρώτη γραμμή βρίσκεται η εντολή που πρέπει να γράψουμε, ενώ από τη δεύτερη γραμμή και κάτω φαίνεται το αποτέλεσμα της εντολής (output). Το output μιας εντολής μπορεί να επεκτείνεται σε αρκετές γραμμές, ενώ υπάρχουν και εντολές που δεν δίνουν κανένα output.
Προσέξτε το σύμβολο $
. Το σύμβολο αυτό δεν θα πρέπει να το γράφουμε. Θα το βάζει το τερματικό αυτόματα. Δηλαδή εμείς στο τερματικό θα πρέπει να γράψουμε εντολή
και όχι $ εντολή
. Ο ρόλος αυτού του συμβόλου είναι να δείχνει τα δικαιώματα που έχει ο χρήστης. Αν είστε ένας κανονικός χρήστης τότε το τερματικό βάζει το σύμβολο $
. Αν όμως είστε ο υπερχρήστης του συστήματος (root), τότε στη θέση του θα υπάρχει το σύμβολο #
. Δηλαδή, ένα τερματικό με το σύμβολο $
τρέχει την εντολή που ακολουθεί σαν ένας κανονικός χρήστης ενώ όταν το τερματικό δείχνει το σύμβολο #
τότε θα τρέξει την εντολή σαν υπερχρήστης (root).
Όνομα χρήστη και συστήματος
επεξεργασίαΣτο πλαίσιο του tutorial αυτού, το όνομα του χρήστη μας θα είναι shevek
ενώ το όνομα του υπολογιστή μας, το οποίο θα μας χρειαστεί στη συνέχεια, θα είναι anares
. Όταν θα τρέξετε τα παραδείγματα στον υπολογιστή σας τα ονόματα αυτά θα είναι φυσικά διαφορετικά.
Ασκήσεις
επεξεργασίαΔυστυχώς, ο μόνος τρόπος με τον οποίο μπορείτε να μάθετε εντολές κονσόλας είναι να κάνετε εξάσκηση. Για αυτό το λόγο πρέπει να γράφετε κάθε εντολή που θα δείτε και να κάνετε όλες τις ασκήσεις εμπέδωσης που υπάρχουν στο τέλος της κάθε ενότητας.
Σας προτείνουμε εντόνως να τις κάνετε όλες, ακόμα και αν αυτές δείχνουν απλοϊκές ή επαναλαμβανόμενες, καθώς ο σκοπός τους είναι αφενός να σας διδάξουν τα ονόματα και τη χρήση των εντολών αλλά και αφετέρου να σας βοηθήσουν να ξεφοβηθείτε την κονσόλα (κοινώς, να σας «ξεψαρώσουν» :)).
Μια πρώτη γνωριμία :)
επεξεργασίαΣτην πρώτη αυτή ενότητα θα μάθουμε πως μπορούμε να χρησιμοποιήσουμε το τερματικό, προκειμένου να πάρουμε χρήσιμες πληροφορίες σχετικά με το σύστημά μας.
Ποιος είμαι; (whoami)
επεξεργασίαH πρώτη εντολή που θα μάθουμε είναι η whoami
. Η εντολή αυτή επιστρέφει το όνομα του χρήστη που είναι ενεργός στο τερματικό. Αν λοιπόν, όπως είπαμε και προηγουμένως ο χρήστης μας ονομάζεται shevek
, τότε η whoami
θα μας επιστρέψει το όνομά του:
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">
$ whoami</pre<noinclude></noinclude>>
<pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan">
shevek</pre<noinclude></noinclude>>
Κάθε φορά που δεν ξέρουμε ποιος είναι ο ενεργός χρήστης στο τερματικό χρησιμοποιούμε την whoami για να το μάθουμε. Αν τρέξουμε την whoami
ως υπερχρήστης τότε, φυσικά, θα σας πει πως είστε ο root
:
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">
- whoami</pre<noinclude></noinclude>>
<pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan"> root</pre<noinclude></noinclude>>
Σε ποιον υπολογιστή βρίσκομαι; (hostname)
επεξεργασίαΌλοι οι υπολογιστές που έχουν Linux έχουν ένα όνομα. Προκειμένου να μάθουμε το όνομα του υπολογιστή στον οποίο είμαστε συνδεδεμένοι δίνουμε την εντολή hostname
. Στο παράδειγμά μας, η εντολή θα επιστρέψει το όνομα anares
. Φυσικά, στον υπολογιστή σας θα επιστρέψει κάτι διαφορετικό :)
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">
$ hostname</pre<noinclude></noinclude>>
<pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan">
anares</pre<noinclude></noinclude>>
Σε ποιο φάκελο βρίσκομαι; (pwd)
επεξεργασίαΤο επόμενο πράγμα που πρέπει να μάθουμε πριν προχωρήσουμε σε οποιαδήποτε άλλη ενέργεια είναι να δούμε σε ποιον φάκελο βρισκόμαστε. Η εντολή που χρησιμοποιούμε αυτή τη φορά είναι η pwd
. Το όνομα της προέρχεται από τα αρχικά της φράσης print working directory
η οποία στα ελληνικά μπορεί να μεταφραστεί ως «εκτύπωσε τον ενεργό/τρέχον φάκελο».
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">$ pwd</pre<noinclude></noinclude>> <pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan">/home/shevek</pre<noinclude></noinclude>>
Συνήθως, όταν πρωτοανοίγουμε ένα τερματικό, ο ενεργός φάκελος θα είναι ο προσωπικός φάκελος «home» του χρήστη μας. Αν όμως, για οποιοδήποτε λόγο βρισκόμαστε σε ένα διαφορετικό φάκελο χωρίς να ξέρουμε ποιος είναι αυτός, τότε η παραπάνω εντολή θα μας πληροφορήσει. Παραδείγματος χάριν, η έξοδος της pwd
θα μπορούσε να είναι κάτι τέτοιο:
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">$ pwd</pre<noinclude></noinclude>>
<pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan">/home/shevek/programming/projects/dissertation</pre<noinclude></noinclude>>
Ασκήσεις εμπέδωσης
επεξεργασίαAνοίξτε ένα τερματικό και γράψτε από 10-20 φορές την καθεμία από τις παραπάνω εντολές (whoami
, pwd
, hostname
). Μπορείτε να τις γράψετε με όποια σειρά θέλετε.
Κάθε φορά που θα τις γράφετε, να λέτε φωναχτά τι κάνει η καθεμία (πχ «pwd» -> «print working directory»).
Ναι, μοιάζει ανούσιο, αλλά είναι τελείως ακίνδυνες εντολές και το μόνο βέβαιο είναι ότι θα σας βοηθήσουν να εξοικειωθείτε.
Φάκελοι (directories)
επεξεργασίαHome sweet home (cd ~)
επεξεργασίαΠριν μπούμε στα πιο βαθιά, ας δούμε μια εντολή που μας επιτρέπει να επιστρέφουμε πάντα στο home
του χρήστη μας. Η εντολή αυτή είναι η cd ~
. Προκειμένου να ελέγξουμε ότι όντως μεταφερθήκαμε στον προσωπικό φάκελο του χρήστη μας μπορούμε να χρησιμοποιήσουμε την pwd
.
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">
$ cd ~
$ pwd</pre<noinclude></noinclude>>
<pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan">
/home/shevek
</pre<noinclude></noinclude>>
Προκειμένου να βεβαιωθείτε ότι καταλαβαίνετε τι κανει η cd ~
θα κάνουμε ένα ακόμα παράδειγμα. :
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">
$ cd /etc
$ pwd</pre<noinclude></noinclude>>
<pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan">
/etc
</pre<noinclude></noinclude>>
Η πρώτη εντολή μας μετέφερε σε ένα διαφορετικό φάκελο ενώ η δεύτερη, όπως ήδη ξέρουμε, μας είπε ποιος είναι αυτός. Στην συγκεκριμένη περίπτωση ο τρέχον φάκελος είναι ο /etc
. Τώρα ας ξαναπάμε πίσω στον προσωπικό φάκελο του χρήστη μας («home directory»):
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">
$ cd ~
$ pwd</pre<noinclude></noinclude>>
<pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan">
/home/shevek
</pre<noinclude></noinclude>>
Δημιουργία φακέλων (mkdir)
επεξεργασίαΗ εντολή για τη δημιουργία νέων φακέλων ονομάζεται mkdir
(από το «make directory»). Η σύνταξη της είναι mkdir όνομα_φακέλου
, δηλαδή mkdir
, κενό και το όνομα του φακέλου). Η εντολή αυτή δεν επιστρέφει τίποτα, δηλαδή όταν τη γράψουμε δεν θα δούμε οποιοδήποτε output στη γραμμή εντολών.
Ας πάμε λοιπόν στο home
του χρήστη μας και ας δημιουργήσουμε ένα νέο φάκελο:
<pre<noinclude></noinclude>>
$ cd ~
$ mkdir examples</pre<noinclude></noinclude>>
Αφού δημιουργήσουμε τον πρώτο φάκελο μπορούμε να δημιουργήσουμε και μερικούς υποφακέλους μέσα στον αρχικό φάκελο <pre<noinclude></noinclude>> $ mkdir examples/photos $ mkdir examples/photos/2011 $ mkdir examples/photos/2012 </pre<noinclude></noinclude>> Μπορούμε να δημιουργήσουμε ακόμα και υποφακέλους μέσα στους υποφακέλους! <pre<noinclude></noinclude>> $ mkdir examples/photos/2011/Easter $ mkdir examples/photos/2011/Christmas $ mkdir examples/photos/2011/Summer $ mkdir examples/photos/2011/Birthday $ mkdir examples/photos/2012/Summer $ mkdir examples/photos/2012/Birthday </pre<noinclude></noinclude>>
Προβολή δέντρου φακέλων (tree)
επεξεργασίαΌπως είναι προφανές, έχουμε δημιουργήσει μία αλληλουχία φακέλων οι οποίοι προορίζονται να αρχειοθετήσουν τις φωτογραφίες κάποιου. Πως όμως μπορούμε να δούμε ποιους από τους υποφακέλους έχουμε δημιουργήσει; Πως θα ξέρουμε αν έχουμε δημιουργήσει όλους τους φακέλους που χρειαζόμαστε ή αν χρειαζόμαστε να δημιουργήσουμε κάποιους φακέλους ακόμα;
Η εντολή που χρειαζόμαστε για την περίπτωση αυτή ονομάζεται tree
(είναι η αγγλική λέξη για το δέντρο). Η σύνταξή της είναι tree όνομα_φακέλου
.
Ας την δούμε στην πράξη: <pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan"> $ cd ~ $ tree examples</pre<noinclude></noinclude>> <pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan"> examples └── photos
├── 2011 │ ├── Birthday │ ├── Christmas │ ├── Easter │ └── Summer └── 2012 ├── Birthday └── Summer
9 directories, 0 files </pre<noinclude></noinclude>>
Πιστεύουμε ότι η μεγάλη εποπτεία που προσφέρει η tree
είναι εμφανής.
Διαγραφή φακελων (rmdir)
επεξεργασίαΚοιτάζοντας το output της tree
συνειδητοποιούμε ότι δεν έχουμε φωτογραφίες για τα γενέθλια του 2011. Άρα κακώς δημιουργήσαμε τον φάκελο αυτό και θα είναι καλύτερα αν τον σβήσουμε. Για να το κάνουμε αυτό θα χρησιμοποιήσουμε την εντολή rmdir
(από το remove directory). Η σύνταξη της συγκεκριμένης εντολής είναι rmdir όνομα_φακέλου
ενώ η εντολή αυτή δεν επιστρέφει κάποιο output. Ας τη δούμε στην πράξη
<pre<noinclude></noinclude>>$ rmdir examples/photos/2011/Birthday</pre<noinclude></noinclude>>
Καθαρά για διδακτικούς λόγους ας σβήσουμε ένα φάκελο ακόμα. Παραδείγματος χάριν τον φάκελο με τις φωτογραφίες του καλοκαιριού του 2012:
<pre<noinclude></noinclude>>$ rmdir examples/photos/2012/Summer</pre<noinclude></noinclude>>
Τώρα, μετά τις αλλαγές που κάναμε, μπορούμε να τρέξουμε την εντολή tree
και να δούμε αν η υπάρχουσα δομή των φακέλων μας ικανοποιεί:
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">$ tree examples</pre<noinclude></noinclude>>
<pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan">
examples
└── photos
├── 2011 │ ├── Christmas │ ├── Easter │ └── Summer └── 2012 └── Birthday
7 directories, 0 files</pre<noinclude></noinclude>> Όπως βλέπουμε οι δύο φάκελοι έχουν διαγραφεί.
Μετακίνηση μεταξύ φακέλων (cd)
επεξεργασίαΗ εντολή για να μεταβούμε σε έναν διαφορετικό φάκελο είναι η εντολή cd
(από τα αρχικά της φράσης «change directory»). Για να μεταβούμε σε έναν φάκελο αρκεί να γράψουμε cd όνομα_φακέλου
(δηλαδή "cd" (κενό) και το όνομα του φακέλου). Η εντολή αυτή δεν επιστρέφει τίποτα, δηλαδή όταν τη γράψουμε δεν θα δούμε οποιοδήποτε output στη γραμμή εντολών.
Παραδείγματος χάριν, ας μεταβούμε στον προσωπικό φάκελο του χρήστη μας και στη συνέχεια ας μεταβούμε στον φάκελο examples/photos
. Προκειμένου να δούμε σε ποιο φάκελο είμαστε μπορούμε να χρησιμοποιήσουμε την pwd
.
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">
$ cd ~
$ cd examples/photos
$ pwd</pre<noinclude></noinclude>>
<pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan">
/home/shevek/examples/photos</pre<noinclude></noinclude>>
Τώρα ας πάμε μέσα στον φάκελο 2011
:
<pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan">
$ cd 2011
$ pwd</pre<noinclude></noinclude>>
<pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan">
/home/shevek/examples/photos/2011</pre<noinclude></noinclude>>
Προκειμένου να πάμε στον υπερφάκελο του τρέχοντος φακέλου, χρησιμοποιούμε την εξής εντολή: <pre<noinclude></noinclude> style="margin-bottom: 0; border-bottom:none; padding-bottom:0.8em; background-color:LightCyan"> $ cd .. $ pwd</pre<noinclude></noinclude>> <pre<noinclude></noinclude> style="margin-top: 0; border-top-style:dashed; padding-top: 0.8em; background-color:LightCyan"> /home/shevek/examples/photos</pre<noinclude></noinclude>>
Αν θελήσουμε να πάμε δύο φακέλους πάνω τότε έχουμε 2 (ισοδύναμες) επιλογές. Μπορούμε να δώσουμε δύο φορές την εντολή cd ..
δηλαδή κάτι τέτοιο:
<pre<noinclude></noinclude>>$ cd ..
$ cd ..</pre<noinclude></noinclude>>
ή να γράψουμε το εξής:
<pre<noinclude></noinclude>>$ cd ../..</pre<noinclude></noinclude>>