Αν τρέχετε μια διανομή Linux και χρησιμοποιείτε μόνο το γραφικό περιβάλλον, δεν ξέρετε τι χάνετε. Το τερματικό Linux είναι ένα πανίσχυρο εργαλείο, με σημαντικά περισσότερες δυνατότητες από το γραφικό περιβάλλον. Σε αυτό τον οδηγό θα βρείτε τις πιο σημαντικές εντολές Linux, για να παίζετε στα δάχτυλα το τερματικό.
Προτάσεις συνεργασίας
Τα νέα άρθρα του PCsteps
Γίνε VIP μέλος στο PCSteps
Ετοιμάσαμε αυτόν τον οδηγό στο Linux Mint 17.2 και το Ubuntu 15.10. Όμως, οι εντολές στο τερματικό Linux είναι λίγο-πολύ ίδιες σε κάθε διανομή, και θα λειτουργήσουν σε παλαιότερες και μελλοντικές εκδόσεις. Θα λειτουργήσουν επίσης σε λειτουργικά συστήματα βασισμένα στο Unix πέραν του Linux, όπως το FreeBSD ή το τερματικό του Mac OS X.
Αν ψάχνετε για τη γραμμή εντολών στα Windows, θα τη βρείτε σε αυτό τον οδηγό:
Γραμμή Εντολών στα Windows 7 / 8: Οι πιο Χρήσιμες Εντολές
Σημαντικές πληροφορίες για το τερματικό Linux
Δεν υπάρχει ούτε μία διανομή Linux, απ' όσο γνωρίζουμε, η οποία να μην έχει κάποιου είδους τερματικό. Αντιθέτως, υπάρχουν ορισμένες διανομές, όπως το Arch Linux, που δεν έχουν GUI σαν προεπιλογή, και τα πάντα γίνονται μέσα από το τερματικό Linux.
Για να ανοίξουμε γρήγορα ένα τερματικό μέσα από το γραφικό περιβάλλον, η συντόμευση Ctrl+Alt+T θα λειτουργήσει για τις περισσότερες διανομές και στα περισσότερα περιβάλλοντα.
Αυτή είναι η βασική ανατομία για τις περισσότερες εντολές Linux:
[sudo] εντολή [προαιρετική παράμετρος] [διεύθυνση αρχείου ή φακέλου]
Χρησιμοποιώντας το sudo θα τρέξει οποιαδήποτε εντολή Linux με δικαιώματα διαχειριστή. Οι περισσότερες εντολές Linux που αφορούν αρχεία του συστήματος και εγκατάσταση ή απεγκατάσταση προγραμμάτων απαιτούν το Sudo.
Στο τερματικό Linux τα κεφαλαία και τα πεζά γράμματα παίζουν ρόλο
Είναι εξαιρετικά σημαντικό να θυμόμαστε πως οτιδήποτε γράφουμε στο τερματικό, παίζει ρόλο αν τα γράμματα είναι κεφαλαία ή πεζά. Όταν η εντολή είναι “sudo”, δεν πρόκειται να λειτουργήσει το “Sudo”, “SUDO”, ή το “sUdO”.
Οι περισσότερες εντολές Linux είναι με πεζά γράμματα, αλλά υπάρχουν παράμετροι με κεφαλαία γράμματα, όπως στο “chown -R”.
Το ίδιο ισχύει και για τα ονόματα των αρχείων και των φακέλων. Τα “File1” και “file1” είναι διαφορετικά αρχεία και μπορούν να βρίσκονται στον ίδιο φάκελο, κάτι που στα Windows είναι αδύνατον.
Προσοχή στα κενά
Είναι επίσης σημαντικό να προσέχουμε τα κενά στο τερματικό Linux. Αν κολλήσουμε την παράμετρο στην εντολή, πχ chown-R, θα λάβουμε μόνο ένα μήνυμα σφάλματος πως δεν υπάρχει η εντολή chown-R.
Αν θέλουμε να δημιουργήσουμε, να ανοίξουμε, ή να διαγράψουμε ένα αρχείο ή ένα φάκελο που έχει κενό στο όνομά του, μπορούμε είτε να βάλουμε όλο το όνομα αρχείου σε εισαγωγικά…
…ή να κάνουμε “escape” τον χαρακτήρα του κενού με την ανάστροφη κάθετο (backslash) “\” που θα τη βρούμε στα περισσότερα πληκτρολόγια πάνω από το Enter.
Αν δεν είχαμε κάνει τίποτα από τα δύο, η συγκεκριμένη εντολή mkdir, η οποία δημιουργεί φακέλους, θα δημιουργούσε δύο φακέλους με τα ονόματα Folder και Name, αντί για ένα φάκελο “Folder Name”. Άλλες εντολές Linux απλά θα αποτύγχαναν.
Πώς βρίσκουμε τις εντολές Linux που έχουμε ήδη τρέξει
Αν πατήσουμε το πάνω βελάκι στο τερματικό Linux θα δούμε με τη σειρά όλες τις προηγούμενες εντολές Linux που τρέξαμε με επιτυχία. Αποτυχημένες εντολές δεν θα εμφανιστούν εδώ.
Εναλλακτικά, μπορούμε να τρέξουμε την εντολή history για να δούμε όλες τις εντολές Linux που τρέξαμε ποτέ στο τερματικό.
Το αόρατο password
Όταν μας ζητηθεί να εισάγουμε τον κωδικό μας στο τερματικό Linux, πχ όταν έχουμε χρησιμοποιήσει το “sudo”, καθώς γράφουμε τον κωδικό μας δεν πρόκειται να φαίνεται τίποτα επί της οθόνης, ούτε αστεράκια, ούτε τελείες. Απλά γράφουμε το password του λογαριασμού και πατάμε Enter.
Αν θέλετε να αλλάξετε αυτή την προεπιλεγμένη συμπεριφορά και να έχετε αστεράκια να εμφανίζονται όταν γράφετε το password, δείτε τον οδηγό μας:
Password στο Linux Mint / Ubuntu – Εμφανίστε Αστεράκια
Χρησιμοποιώντας το Τab για αυτόματη συμπλήρωση
Το πλήκτρο Τab στο πληκτρολόγιο, που στα Windows είναι σχετικά άχρηστο, στο τερματικό Linux είναι ίσως το πιο χρήσιμο πλήκτρο, που θα μας γλιτώσει απίστευτο χρόνο. Βλέπετε, πατώντας το tab συμπληρώνονται αυτόματα τα ονόματα σε αρχεία και φακέλους.
Αν θέλουμε να διαγράψουμε ένα αρχείο με το όνομα “whydidIgivethisfilesuchalongname”, αρκεί απλά να γράψουμε “rm w” και πατώντας το Τab θα συμπληρωθεί αυτόματα το υπόλοιπο μακρινάρι.
Αν υπάρχουν περισσότερα από ένα αρχεία που ξεκινούν με τα ίδια γράμματα, πχ “whydidIgivethisfilesuchalongname” και “whydidIeatsomuch”, πατώντας το Τab στο “rm w” θα συμπληρώσει μέχρι το σημείο που είναι κοινό και στα δύο αρχεία, δηλαδή το “whydidI”.
Στη συνέχεια θα πρέπει να γράψουμε έναν επιπλέον χαρακτήρα – “g” ή “e” στο παράδειγμα – και να πατήσουμε πάλι Τab για να συμπληρωθεί το υπόλοιπο όνομα αυτόματα.
Αντιγραφή και επικόλληση στο τερματικό Linux
Για να κάνουμε αντιγραφή και επικόλληση στο τερματικό Linux, οι συντομεύσεις Ctrl+C και Ctrl+V δεν λειτουργούν.
Αντίθετα πρέπει να πατήσουμε Ctrl+Shift+C και Ctrl+Shift+V. Ή, εναλλακτικά, μπορούμε να κάνουμε δεξί κλικ με το ποντίκι, αν έχουμε ανοίξει το τερματικό Linux στο γραφικό περιβάλλον, και να κάνουμε από εκεί αντιγραφή και επικόλληση.
Χαρακτήρες μπαλαντέρ
Στις εντολές Linux οι χαρακτήρες “?” και “*” είναι μπαλαντέρ.
Το “?” θα αντικαταστήσει οποιονδήποτε μεμονωμένο χαρακτήρα. Έτσι, αν έχουμε δύο αρχεία test1file και test2file, μπορούμε να τα διαγράψουμε και τα δύο με το “rm test?file”. Αυτή η εντολή όμως δεν θα διαγράψει το test12file.
Ο αστερίσκος “*” θα αντικαταστήσει μια ολόκληρη σειρά με χαρακτήρες. Το rm test*file θα διαγράψει τα αρχεία test1file, test12file και testBLABLABLAfile. Ουσιαστικά θα διαγράψει οποιοδήποτε αρχείο ξεκινάει από test- και τελειώνει σε -file, συμπεριλαμβανομένου του testfile.
Είναι προφανές πως πρέπει να είμαστε εξαιρετικά προσεκτικοί όταν συνδυάζουμε εντολές διαγραφής με χαρακτήρες μπαλαντέρ. Το rm * θα διαγράψει όλα τα αρχεία μέσα στο τρέχοντα φάκελο, και δεν θα τα στείλει στα απορρίμματα.
Επιπλέον πληροφορίες για κάθε εντολή στο τερματικό Linux
Μπορούμε να μάθουμε περισσότερες πληροφορίες για τις περισσότερες μεμονωμένες εντολές στο τερματικό Linux χρησιμοποιώντας τα [εντολή] –help και man [εντολή].
To [εντολή] –help θα δείξει τη χρήση της εντολής, με τις διαθέσιμες επιλογές και παραμέτρους.
Το man [εντολή] θα δείξει το βιβλίο οδηγιών (manual) της εντολής, το οποίο είναι μια εκτεταμένη έκδοση της παραμέτρου –help.
Όμως δεν έχουν όλες οι εντολές ένα βιβλίο οδηγιών ή μια παράμετρο –help.
Βασικές Εντολές στο τερματικό Linux
Σε αυτή τη λίστα δεν έχουμε συμπεριλάβει κάθε πιθανή εντολή που υπάρχει, μόνο τις εντολές Linux που θα είναι πιο χρήσιμες σε έναν αρχάριο. Στο μέλλον θα δημιουργήσουμε έναν ξεχωριστό οδηγό με προηγμένες εντολές Linux.
Βασική πλοήγηση
Αυτές οι εντολές στο τερματικό Linux θα μας βοηθήσουν να πλοηγηθούμε σε συγκεκριμένους φακέλους και να κάνουμε αναζήτηση αρχείων.
- ls – εμφανίζει μια λίστα με όλο το περιεχόμενο του φακέλου στον οποίο βρισκόμαστε.
Φροντίστε να διαβάσετε το ls –help γιατί υπάρχουν πολλές παράμετροι για να εμφανίσουμε το περιεχόμενο του φακέλου με διαφορετικούς τρόπους.
- cd [φάκελος] – Μπαίνουμε μέσα σε ένα φάκελο
- pwd – εμφανίζει την πλήρη διεύθυνση του φακέλου στον οποίο βρισκόμαστε (από το Print Working Directory)
- find [αρχείο ή φάκελος] – κάνουμε αναζήτηση για ένα συγκεκριμένο αρχείο ή φάκελο μέσα στον φάκελο που βρισκόμαστε.
Μπορούμε να το χρησιμοποιήσουμε με μπαλαντέρ, όπως στο find *.png
- locate [αρχείο ή φάκελος] – κάνουμε αναζήτηση για ένα συγκεκριμένο αρχείο ή φάκελο οπουδήποτε στο δίσκο. Η εντολή θα επιστρέψει όλα τα αρχεία με τις πλήρεις διευθύνσεις τους.
Μπορούμε να χρησιμοποιήσουμε και εδώ μπαλαντέρ, όπως locate *.png. Προσοχή, όμως, τόσο γενικές αναζητήσεις σε ολόκληρο το δίσκο μπορούν να πάρουν αρκετή ώρα αν υπάρχουν πολλά αρχεία.
Συντομεύσεις για την πλοήγηση σε φακέλους
Για να πλοηγηθούμε γρήγορα σε ένα συγκεκριμένο φάκελο ή να έχουμε πρόσβαση σε ένα συγκεκριμένο αρχείο, είναι χρήσιμο να θυμόμαστε τις παρακάτω συντομεύσεις.
- Το “~” εκπροσωπεί τον προσωπικό μας φάκελο /home, όπου θα βρούμε τους φακέλους Έγγραφα, Φωτογραφίες, Λήψεις, Μουσική κλπ. cd ~ και cd ~/Έγγραφα
- Το “..” εκπροσωπεί ένα φάκελο πάνω από αυτόν που βρισκόμαστε. Αν είμαστε στο /home/test/public και γράψουμε cd .. θα βρεθούμε στο /home/test
- Μπορούμε επίσης να χρησιμοποιήσουμε την πλήρη διεύθυνση για να μπούμε σε ένα συγκεκριμένο φάκελο, πχ cd ~/test/public/. Το κουμπί Tab θα μας βοηθήσει σε κάθε βήμα, συμπληρώνοντας αυτόματα τα ονόματα των φακέλων.
Τι να κάνουμε με τις εντολές που επιστρέφουν υπερβολικά αποτελέσματα
Αν τρέξουμε το ls σε ένα φάκελο με 1000 αρχεία, ή το locate *.png σε ένα δίσκο με πολλές φωτογραφίες, θα έχουμε υπερβολικά αποτελέσματα, πολύ περισσότερα απ' όσα χωράει το τερματικό Linux.
Σε αυτή την περίπτωση, μπορούμε να χρησιμοποιήσουμε το σύμβολο “|” (θα το βρούμε με “Shift + \” ) και τις επιλογές more ή less.
Με το locate *.png | more τα αποτελέσματα θα μας εμφανίζονται σελίδα-σελίδα στο τερματικό Linux, και μπορούμε να αποκαλύψουμε την επόμενη σελίδα πατώντας Space. Βγαίνουμε από τις σελίδες πατώντας “q”.
Με το locate *.png | less πάλι θα εμφανιστεί η πρώτη σελίδα των αποτελεσμάτων, αλλά μπορούμε να ψάξουμε πάνω και κάτω με τα βελάκια στο πληκτρολόγιο. Και εδώ βγαίνουμε από τις σελίδες με το “q”.
Διαχείριση αρχείων και φακέλων
Αυτές είναι οι εντολές Linux για να δημιουργήσουμε, να διαγράψουμε, και να αναζητήσουμε αρχεία και φακέλους.
- mkdir [όνομα φακέλου] – δημιουργία νέου φακέλου
Μπορούμε να συμπεριλάβουμε την πλήρη διεύθυνση για να φτιάξουμε ένα φάκελο οπουδήποτε στο δίσκο, πχ mkdir ~/public/dir1
Αν δημιουργήσουμε ένα φάκελο με το sudo mkdir, δεν θα μπορέσουμε να δημιουργήσουμε αρχεία και φακέλους στο εσωτερικό του αν δεν έχουμε δικαιώματα διαχειριστή.
- touch [όνομα αρχείου] – δημιουργία κενού αρχείου
Μπορεί να χρησιμοποιηθεί με την εντολή echo, που θα δούμε παρακάτω, για να προσθέσουμε περιεχόμενο στο αρχείο μέσα από το τερματικό Linux.
Αν υπάρχει ήδη αρχείο με το συγκεκριμένο όνομα, το touch δεν θα διαγράψει το περιεχόμενό του, απλά θα αλλάξει την ώρα τελευταίας πρόσβασης στο αρχείο.
- cp [file1] [file2] – αντιγραφή του file1 και δημιουργία νέου αρχείου με το όνομα file2. Ουσιαστικά είναι η μέθοδος για Αντιγραφή -> Επικόλληση.
Για να αντιγράψουμε φακέλους και τα περιεχόμενά τους, θα πρέπει να χρησιμοποιήσουμε το cp -r [dir1] [dir2].
Μπορούμε να συμπεριλάβουμε την πλήρη διεύθυνση και για τα δύο αρχεία ή τους φακέλους, ώστε να κάνουμε αντιγραφή επικόλληση σε διαφορετικά μέρη του δίσκου πχ cp ~/file1 ~/public/file2.
- mv [/dir1/file1] [/dir2/file1] – μεταφορά του file1 από το φάκελο dir1 στον dir2. Το αντίστοιχο του Αποκοπή -> Επικόλληση.
Το mv θα λειτουργήσει με τον ίδιο τρόπο για φακέλους και τα περιεχόμενά τους, χωρίς να χρειάζεται επιπλέον παράμετρο.
Η εντολή mv είναι επίσης η μόνη μέθοδος για μετονομασία αρχείου ή φακέλου στο τερματικό Linux. Απλά γράφουμε mv file1 file2 για να μετονομάσουμε το αρχείο file1 σε file2.
- rm [file] – διαγραφή αρχείου
Για να διαγράψουμε ένα φάκελο και όλα του τα περιεχόμενα, θα χρειαστεί να χρησιμοποιήσουμε το rm -r [dir].
Η εντολή rm θα διαγράψει άμεσα όλα τα αρχεία και φακέλους που στοχεύει, χωρίς να χρησιμοποιήσει τα Απορρίμματα. Να είστε προσεκτικοί λοιπόν, ειδικά αν χρησιμοποιήσετε μπαλαντέρ.
- ln -s [file] [link] – δημιουργία συμβολικού συνδέσμου για ένα αρχείο ή φάκελο
Ο συμβολικός σύνδεσμος είναι μια πιο ισχυρή μορφή της συντόμευσης που βρίσκουμε στα Windows. Υπάρχουν κάποιες διαφορές τις οποίες θα καλύψουμε πλήρως σε άλλο οδηγό.
- zip [όνομα.zip] [file] – δημιουργεί ένα συμπιεσμένο φάκελο .zip ο οποίος περιέχει συμπιεσμένο το αρχείο file.
Με τη χρήση μπαλαντέρ, μπορούμε να συμπιέσουμε τα πάντα σε ένα φάκελο με το zip [όνομα.zip] *.
- unzip [όνομα.zip] – αποσυμπιέζει τον συμπιεσμένο φάκελο .zip.
Η εντολή θα αποσυμπιέσει τα περιεχόμενα του συμπιεσμένου φακέλου στον τρέχοντα φάκελο.
- tar -cf [όνομα.tar] [file] – δημιουργεί ένα συμπιεσμένα φάκελο τύπου .tar ο οποίος περιέχει συμπιεσμένο το αρχείο file. Χρησιμοποιεί διαφορετικό αλγόριθμο συμπίεσης από το zip.
Με τη χρήση μπαλαντέρ, μπορούμε να συμπιέσουμε τα πάντα σε ένα φάκελο με το tar -cf archive.tar *.
- tar -xf [όνομα.tar] – αποσυμπιέζει ένα αρχείο .tar.
Η εντολή θα αποσυμπιέσει τα περιεχόμενα του συμπιεσμένου φακέλου στον τρέχοντα φάκελο. Με το tar –zxf [όνομα.tar.gz] μπορούμε να αποσυμπιέσουμε αρχεία tar.gz.
- gzip [file] – αντικαθιστά το αρχείο file με ένα συμπιεσμένο φάκελο .gz που περιέχει το αρχείο.
Ενώ τα zip και tar διατηρούν το αρχικό αρχείο, το gzip θα αφήσει μόνο το συμπιεσμένο αρχείο και θα διαγράψει το αρχικό.
- gzip -d [αρχείο.gz] – decompresses a .gz archive.
Η εντολή θα αποσυμπιέσει τα περιεχόμενα του συμπιεσμένου φακέλου στον τρέχοντα φάκελο.
- unrar e [όνομα.rar] – αποσυμπιέζει ένα αρχείο .rar.
Οι περισσότερες διανομές δεν έχουν το rar προεγκατεστημένο για να δημιουργήσουν αρχεία .rar, και μπορούν να το εγκαταστήσουν μόνο σαν trial version, που χρειάζεται να αγοραστεί. Όμως το unrar για την αποσυμπίεση είναι δωρεάν και θα το βρούμε προεγκατεστημένο στις περισσότερες διανομές.
Περιεχόμενα αρχείων
Είναι χρήσιμο να δημιουργούμε αρχεία και φακέλους στο τερματικό Linux. Τι γίνεται όμως όταν θέλουμε να προσθέσουμε περιεχόμενο σε ένα αρχείο, ή να διαβάσουμε το περιεχόμενό του?
- echo “κείμενο” > [όνομα.txt] – δημιουργεί ένα αρχείο το οποίο περιέχει οτιδήποτε “κείμενο” γράψαμε μαζί με την εντολή.
Μόνη της η εντολή echo απλά εμφανίζει το “κείμενο” επί της οθόνης. Με τη χρήση του χαρακτήρα ανακατεύθυνσης “>” το αποτέλεσμα της echo ανακατευθύνεται στο αρχείο που δημιουργούμε.
Προσοχή! Αν το αρχείο που γράφουμε στην εντολή υπάρχει ήδη, η εντολή echo “κείμενο” > όνομα.txt θα θα αντικαταστήσει όλο το περιεχόμενό του με το “κείμενο”.
- echo “κείμενο” >> [όνομα.txt] – προσθέτει το “κείμενο στο τέλος του περιεχομένου του αρχείου.
Αυτός είναι ένας πιο ασφαλής τρόπος για να τρέξουμε την echo. Αν το αρχείο που αναφέρουμε υπάρχει ήδη, η echo “κείμενο” >> όνομα.txt απλά θα προσθέσει το “κείμενο” στο κάτω μέρος του αρχείου, χωρίς να διαγράψει το προηγούμενο περιεχόμενο.
Τα τμήματα > όνομα.txt and >> όνομα.txt μπορούν να χρησιμοποιηθούν με οποιαδήποτε εντολή εμφανίζει αποτελέσματα επί της οθόνης, όπως οι ls, locate, κλπ. Έτσι, όλα τα αποτελέσματα της εντολής θα αποθηκευτούν σε ένα αρχείο.
- cat [όνομα αρχείου κειμένου] – δείχνει όλα τα περιεχόμενα ενός αρχείου κειμένου στο τερματικό Linux.
Για μεγάλα αρχεία, μπορούμε να χρησιμοποιήσουμε το cat [όνομα αρχείου κειμένου] | more and cat [όνομα αρχείου κειμένου] | less, ακριβώς όπως κάνουμε με τις εντολές ls και locate.
Μπορούμε επίσης να χρησιμοποιήσουμε το head [όνομα αρχείου κειμένου] για να δούμε τις δέκα πρώτες γραμμές, και το tail [όνομα αρχείου κειμένου] για να δούμε τις δέκα τελευταίες γραμμές.
- grep “μορφή κειμένου” [αρχείο] – κάνουμε αναζήτηση για μια συγκεκριμένη λέξη, φράση, ή μορφή κειμένου στο εσωτερικό αρχείου κειμένου. Αν βρεθεί αυτό που ψάχνουμε, η εντολή θα εμφανίσει τη γραμμή που περιέχει το κείμενο στο τερματικό.
Μπορούμε επίσης να ψάξουμε για το κείμενο σε όλα τα αρχεία ενός φακέλου, με το grep -r “μορφή κειμένου” [φάκελος].
- nano [αρχείο κειμένου] – το nano είναι ένας σχετικά φιλικός επεξεργαστής κειμένου στο τερματικό Linux. Μπορούμε επίσης να τρέξουμε το nano χωρίς παραμέτρους, για δημιουργήσουμε ένα νέο αρχείο κειμένου.
Αρκεί να θυμάστε πως οι εντολές που αναγράφονται στο κάτω μέρος λειτουργούν όλες σε συνδυασμό με το Ctrl, δηλαδή πατάμε Ctrl+X για να βγούμε από το πρόγραμμα, Ctrl+G για τη βοήθεια κλπ.
- sort [αρχείο κειμένου] – θα εμφανίσει όλες τις γραμμές που περιέχει το αρχείο κειμένου σε αλφαβητική σειρά.
- wc [αρχείο κειμένου] – θα μετρήσει τις λέξεις που περιέχει το αρχείο κειμένου, εμφανίζοντας στην οθόνη τις νέες γραμμές, τις λέξεις, και τα bytes, με αυτή τη σειρά.
Έχετε απορίες σχετικά με το τερματικό Linux?
Αν θέλετε να μάθετε περισσότερα για τις εντολές, ή κάτι δεν λειτούργησε σωστά όσον αφορά το τερματικό Linux, γράψτε μας στα σχόλια