Linux για αρχάριους/Βασικές γνώσεις Unix/

Από Βικιβιβλία
Πήδηση στην πλοήγηση Πήδηση στην αναζήτηση

Βασικές γνώσεις Unix[επεξεργασία]

folder structure[επεξεργασία]

Οι πρώτες εντολές που μαθαίνει συνήθως κανείς κατά την πρώτη του επαφή με το τερματικό αφορούν την περιήγηση του μέσα στους φακέλους του linux. Γι'αυτό θα ήταν προτιμότερο να διαβάσετε πρώτα αυτόν τον οδηγό, πρίν πάτε παρακάτω στις βασικές εντολές.

Η στοίχηση των φακέλων είναι λίγο διαφορετική από αυτήν που έχετε συνηθίσει μέχρι τώρα. Στην κορυφή βρίσκεται ο ριζικός φάκελος που ονομάζεται "root" και συμβολίζεται με ένα "slash" ("/" - σε αντίθεση με το "backslash" "\" που χρησιμοποιειται στον κόσμο των Windows). Όλοι οι φακέλοι και όλα τα αρχεία βρίσκονται μέσα σε αυτόν τον ριζικό φάκελο ή σε υποφακέλους αυτού(δεν υπάρχουν, δηλαδή "C:\", "D:\", κλπ). Για να πάρετε μία πρώτη γεύση, ρίξτε μια ματιά στο παρακάτω σχεδιάγραμμα, ώστε να καταλάβετε καλύτερα. Προσοχή, πέραν του root φακέλου, στο Linux υπάρχει και ο root χρήστης. Αυτά τα δύο είναι διαφορετικά πράγματα και δεν πρέπει να συγχέονται μεταξύ τους.


Η εικόνα περιέχει μονάχα μερικούς από τους φακέλους και δεν είναι πλήρης!

(Το σχεδιάγραμμα δεν περιέχει όλους τους βασικούς φακέλους,
για λόγους απλότητας και ευκολίας. Εάν θέλετε μια πιο πλήρη εικόνα,
μπορείτε να ρίξετε μία ματιά εδώ.)

Ιδιαίτερο ενδιαφέρον παρουσιάζει ο φάκελος "/home/" . Εκεί μέσα υπάρχει ένας φάκελος για κάθε χρήστη. Το όνομα του φακέλου είναι ίδιο με το username του χρήστη. Για παράδειγμα, εάν το όνομα χρήστη σας είναι "john", τότε ο προσώπικός σας φάκελος είναι ο "/home/john/". Εκεί μέσα βρίσκονται όλα τα προσωπικά αρχεία του χρήστη, συνήθως σε υποφάκελους όπως "Desktop", "Documents", "Music", κλπ. Στο home-folder του χρήστη υπάρχουν και αρχεία και φακέλοι που το ονομά του ξεκινάει με τελεία ("."), γνωστά και ως dot files. Τα dot-files και folders είναι κρυφά και εκεί μέσα αποθηκεύονται, μεταξύ άλλων, οι διάφορες ρυθμίσεις, τα αρχεία και η cache των προγραμμάτων του χρήστη. Για παράδειγμα, ο φάκελος "/home/john/.Skype/" περιέχει αρχεία που αφορούν το Skype του χρήστη John. Οι περισσότεροι file managers δεν εμφανίζουν τα κρυφά αρχεία και φακέλους από προεπιλογή και θα πρέπει να το ενεργοποιήσετε (συνήθως πατώντας τον συνδυασμο "Ctrl+H"). Θέλει ιδιαίτερη προσοχή αν κάνετε backup να μην ξεχάσετε να φυλάξετε τέτοια αρχεία γιατί μπορεί να σας είναι απαραίτητα.


Οι βασικοί υποφάκελοι του ριζικού που μας ενδιαφέρουν είναι κυρίως οι:

Φάκελος Περιγραφή
/ Ο ριζικός φάκελος του συστήματος. Όλοι οι υπόλοιποι είναι υποφάκελοί του.
/home/* Οι προσωπικοί φάκελοι όλων των χρηστών, εκτός του υπερχρήστη.
/root Ο προσωπικός φάκελος του υπερχρήστη.
/etc Εδώ βρίσκονται οι βασικές ρυθμίσεις του συστήματος και των διαφόρων services που τρέχουν σε αυτό (πχ webserver, mailserver κτλ).
/dev Περιέχει ειδικά αρχεία που αντιστοιχούν στις συσκευές του υπολογιστή. Εδώ συνήθως μας ενδιαφέρουν τα αρχεία
"/dev/sda" (ο πρώτος σκληρός δίσκος), "/dev/sdb" (ο δεύτερος), κλπ.
/bin τα απολύτως βασικά προγράμματα που χρειάζεται κανείς για να επικοινωνήσει με την linux συσκευή του, βρίσκονται εδώ μέσα, όπως οι εντολές "pwd" και "cd".
/sbin Περιέχει τα υπόλοιπα προγράμματα του συστήματος.
/usr Περιέχει τις βιβλιοθήκες του συστήματος.
/var Εδώ αποθηκεύονται οι καταγραφές των αρχείων log.
/boot Περιέχει απαραίτητα αρχεία για την εκκίνηση του συστήματος.
/mnt και /media Εδώ προσαρτώνται οι συσκευές με την εντολή "mount".
/tmp Εδώ αποθηκεύονται τα προσωρινά αρχεία.


Ένας απλός χρήστης δεν έχει τα δικαιώματα να περιηγείται σε όλους τους φακέλους ή να επεξεργάζεται όλα τα αρχεία, για <link>λόγους ασφαλείας. Συνήθως παραμένει μόνο στον προσωπικό του φάκελο. Οτιδήποτε κάνει έξω από αυτόν τον φάκελο καλό θα ήταν να ξέρει καλά τι κάνει, καθώς επεμβαίνει σε σημαντικά κομμάτια του συστήματος. Τέτοιου είδους ενέργειες χρειάζονται πολλές φορές να εκτελεστούν με δικαιώματα υπερχρήστη, μέσω της εντολής "sudo".

Τα πάντα εμφανίζονται ως αρχεία στο linux. Όλα τα προγράμματα, όλες οι ρυθμίσεις, ακόμα και οι φυσικές συσκευές αντιπροσωπεύονται από αρχεία και αντιμετωπίζονται από το σύστημα ως τέτοια. Στον φάκελο "/dev" βρίσκονται τα αρχεία των φυσικών και εικονικών συσκευών. Μερικά ενδιαφέροντα αρχεία σε αυτόν τον φάκελο είναι:

/dev/null Η μαύρη τρύπα. Οτιδήποτε ανακατευθύνεται εδώ μέσα χάνεται. Συνήθως χρησιμοποιείται για να χαθούν τα μηνύματα από την έξοδο κάποιου προγράμματος χωρίς να γεμίσουν το log του συστημάτος.
/dev/random και /dev/urandom Πηγές που παράγουν τυχαίες τιμές.
/dev/sda, /dev/sdb κλπ Το πρώτο συνήθως αντιπροσωπεύει τον πρώτο σκληρό δίσκο, το δεύτερο τον δεύτερο σκληρό ή κάποιο usb stick. Παλαιότερα οι σκληροί δίσκοι έπαιρναν και το όνομα /dev/hda αντί για sda. Μπορεί να συναντήσετε ακόμα σε υπολογιστές με παλιές εκδόσεις του λειτουργικού ή να το διαβάσετε σε οδηγούς και βιβλία που έχουν γραφτεί πριν από καιρό.
/dev/zero Μία πηγή που παράγει πολλά μηδενικά. Για παράδειγμα μπορούμε να την χρησιμοποιήσουμε για να γεμίσουμε έναν σκληρό δίσκο με μηδενικά.

Αν και η γενική δομή των φακέλων και των αρχείων είναι ίδια σε όλα τα Unix-οειδή συστήματα, ενδέχεται να συναντήσετε διαφορές ανάμεσα στις διάφορες διανομές. Δεν θα βρείτε τους ίδιους φακέλους σε κάθε σύστημα, ούτε τις ίδιες ρυθμίσεις, κλπ. Γι'αυτό αν έχετε κάποιο πρόβλημα θα πρέπει να αναζητάτε την λύση του ειδικά για την συγκεκριμένη διανομή με την οποία δουλεύετε. Όσοι έχουν κάποια εμπειρία με την χρήση τερματικού σε κάποιο BSD ή OS X σύστημα δεν θα δυσκολευτούν να προσαρμοστούν στο linux. Για παράδειγμα, σε ένα σύστημα OS X, αντί για το "/home", υπάρχει ο φάκελος "/Users", ενώ το μεγαλύτερο μέρος (αν όχι όλο) του παρακάτω οδηγού με τις βασικές εντολές θα πρέπει να ισχύει και εκεί.

users/groups[επεξεργασία]

Εξηγούμε διαφορά απλού user και root account. sudo & passwordless sudo & su.

file permissions[επεξεργασία]

Τι είναι και πως συνδέονται με Users. Αν γίνεται όχι πολύ αναλυτικά

Βασικές εντολες κονσόλας[επεξεργασία]

Tip: Ο καλύτερος τρόπος για να μάθετε την γραμμή εντολών, είναι να δοκιμάζετε τις εντολές με διάφορους τρόπους στο τερματικό σας, ταυτόχρονα με την ανάγνωση του παρακάτω οδηγού!!


Πρίν αρχίσετε αυτόν τον οδηγό, καλό θα ήταν να γνωρίζετε τα βασικά για το folder structure σε Unix-οειδή συστήματα.

Αναλυτικός οδηγός για αρχάριους[επεξεργασία]

Η πρώτη εντολή:

Όταν κάνουμε login και βρισκόμαστε σε περιβάλλον γραμμής εντολών, βρισκόμαστε πάντα αρχικά στον προσωπικό μας φάκελο. Η εντολή

pwd

(print working directory) μας δείχνει σε ποιό φάκελο βρισκόμαστε αυτή τη στιγμή. Με την εκτέλεση της παραπάνω εντολής, η έξοδος που θα παίρναμε θα ήταν η εξής:

/home/john
Σημείωση: Δεν έχει σημασία αν γραφτεί "/home/john" ή "/home/john/", απλά στην δεύτερη περίπτωση είναι ξεκάθαρο ότι πρόκειται
για φάκελο.

Κάθε φάκελος περιέχει δύο ειδικά αρχεία, το "." και το "..". Το "." υποδεικνύει τον φάκελο που βρισκόμαστε αυτή τη στιγμή, ενώ το ".." υποδεικνύει τον γονεικό φάκελο, δηλαδή τον φάκελο που βρίσκεται ακριβώς από πάνω. Στο παραπάνω παράδειγμα ο γονεικός φάκελος του "john" είναι ο "/home", ενώ ο γονεικός φάκελος του "/" είναι πάντα ο "/". Η εντολή για να μεταβούμε σε έναν διαφορετικό φάκελο είναι η εντολή (μην την πληκτρολογίσετε ακόμη, θα καταλάβετε παρακάτω):

cd 

(change directory). Για να μεταβούμε σε έναν υποφάκελο αρκεί να γράψουμε cd (κενό) και το όνομα του υποφακέλου.

cd όνομα_υποφακέλου

Για παράδειγμα, αν βρισκόμαστε στον φάκελο "/home/john" και θέλουμε να μεταβούμε στον φάκελο "/home/john/Documents" τότε αρκεί να δώσουμε την εντολή:

cd Documents

Προσοχή! Τα κεφαλαία γράμματα παίζουν σημασία, δηλαδή εάν αντί της παραπάνω εντολής, δίναμε:

cd documents

θα μας επέστρεφε σφάλμα! (εκτός φυσικά εάν υπήρχε και φάκελος "documents") Εάν, από την άλλη, επιθυμούμε να μεταβούμε στον γονεικό φάκελο, αρκεί να δώσουμε (προσοχή στο κενό!):

cd .. 

και έτσι θα επιστρέφαμε στον "/home/john". Εάν βρισκόμαστε, για παράδειγμα, στον φάκελο "/home/john/Documents/school/" και θέλουμε με έναν εύκολο τρόπο να μεταβούμε αμέσως στον αρχικό μας φάκελο, αυτό μπορούμε να το επιτύχουμε δίνοντας:

cd

Γενικά οπουδήποτε και να βρισκόμαστε, η παραπάνω εντολή μας πηγαίνει στον αρχικό μας φάκελο. Στο παραπάνω παράδειγμα θα μπορούσαμε να δώσουμε και

cd ../..

έχοντας ακριβώς το ίδιο αποτέλεσμα! (προφανώς για λόγους ευκολίας προτιμάμε τον πρώτο τρόπο :D ).

Οι παραπάνω εντολές ισχύουν μόνο σε περιπτώσεις μετάβασης σε σχετικούς με τον τωρινό μας φάκελο, φακέλους. Θα μπορούσαμε, αντί αυτών, να δίνουμε την απόλυτη διαδρομή των φακέλων, δηλαδή ξεκινώντας από τον ριζικό φάκελο! Παραδείγματος χάριν, βρισκόμαστε στον φάκελο "/home/john/Music" και θέλουμε να μεταβούμε στον "/home/john/Documents/school", αρκεί να δώσουμε:

cd /home/john/Documents/school

Για να πετύχουμε το παραπάνω δεν χρειάζεται να γράψουμε τόσα πολλά, όπως με μια πρώτη ματιά θα νομίζετε, χάρην στην βοήθεια αυτοσυμπλήρωσης που μας παρέχει το τερματικό! Πατάμε δηλαδή (χωρίς να πατήσουμε ακόμα το "Enter"):

cd /h 

και σε αυτό το σημείο πατάμε το πλήκτο "ΤΑΒ", ώστε να συμπληρωθεί το υπόλοιπο μέρος του ονόματος του φακέλου από μόνο του και ξαφνικά στο τερματικό εμφανίζεται το:

cd /home/

Σε αυτό το σημείο συνεχίζουμε γράφοντας τον πρώτο χαρακτήρα του υποφακέλου του "/home/" που μας ενδιαφέρει, δηλαδή:

cd /home/j

και πατάμε πάλι "TAB" ώστε να συμπληρωθεί πάλι το όνομα του επόμενου φακέλου. Την παραπάνω διαδικασία την συνεχίζουμε έως ότου συμπληρωθεί η πλήρης διαδρομή που μας ενδιαφέρει. Το παραπάνω μπορούσε να αυτοσυμπληρωθεί, διότι στον φάκελο "/" υπάρχει συνήθως μόνο ένας φάκελος του οποίου το όνομα αρχίζει από "h". Για να δούμε και μια άλλη περίπτωση, υποθέστε ότι ο ριζικός φάκελος περιέχει και έναν υποφάκελο "house". Εάν πατούσαμε πάλι το "TAB", τότε η αυτοσημπλήρωση θα σταματούσε στο σημείο όπου οι φακέλοι θα είχαν διαφορετικούς χαρακτήρες στο όνομά τους. Για να καταλάβετε καλύτερα, οι φάκελοι "home" και "house" έχουν κοινούς χαρακτήρες έως το "ho", άρα η αυτοσημπλήρωση σταματάει σε αυτό το σημείο και στην οθόνη εμφανίζεται:

cd /ho

ενώ περιμένει από μας να εισάγουμε τον επόμενο (ή επόμενους) χαρακτήρες. Εάν πατήσουμε τώρα "u" και αμέσως μετά "TAB", τότε η αυτοσυμπλήρωση μας δίνει, όπως θα περιμέναμε:

cd /house/

Ένα επιπρόσθετο βοηθητικό εργαλείο που μας προσφέρει το τερματικό είναι η χρήση του διπλού "TAB"! Έστω ότι έχουμε εισάγει:

cd /home/john/

και σε αυτό το σημείο πατήσουμε διπλό "TAB", θα εμφανιστούν όλοι οι φακέλοι που είναι διαθέσιμοι στον κατάλογο "john", δηλαδή θα μας εμφάνιζε:

cd /home/john/
Documents	Downloads	Music
Pictures	Videos		(κλπ)

ώστε να ξέρουμε τι επιλογές έχουμε και να μας κάνει την ζωή πιο εύκολη :D

Ένα χρήσιμο σύμβολο που μας βοηθάει στην περιήγηση των φακέλων είναι το "~". Το σύμβολο αυτό αντικαθιστά την διαδρομή από τον ριζικό φάκελο έως τον προσωπικό μας φάκελο. Στην περίπτωσή μας δηλαδή "/home/john/". Για παράδειγμα βρισκόμαστε στον φάκελο "/house/" και θέλουμε να μεταβούμε γρήγορα στον φάκελο "/home/john/Documents/school/", ένας τρόπος για να το επιτύχουμε αυτό είναι να δώσουμε:

cd ~/Documents/school

Τέλος, ένα ακόμα χρήσιμο σύμβολο είναι το "-", το οποίο μας πηγαίνει στον αμέσως προηγούμενο φάκελο, στον οποίο βρισκόμασταν πρίν. Αυτή τη στιγμή, λοιπόν, βρισκόμαστε στον φάκελο "/home/john/Documents/school" και θέλουμε να επιστρέψουμε πάλι στο "/house" όπου ήμασταν πριν, με την εντολή:

cd -

Οι εντολές δεν είναι τίποτα παραπάνω από κανονικά προγράμματα όπως για παράδειγμα το γνωστό firefox. Θα μπορούσατε να δώσετε την εντολή

firefox

(εφόσον το έχετε εγκατεστημένο) και να σας άνοιγε ένα νέο παράθυρο του browser. Ο διαχωρισμός γίνεται μόνο σε εντολές (προγράμματα) που προορίζονται καθαρά για την γραμμή εντολών και τις υπόλοιπες που έρχονται και μαζί με ένα γραφικό περιβάλλον (GUI).

(Σημείωση: Καμιά φορά χρησιμοποιούμε το τερματικό για να ανοίξουμε προγράμματα με GUI, όταν παρατηρούμε 
παράξενη ή δυσλειτουργική συμπεριφορά σε αυτά, διότι με αυτόν τον τρόπο στο τερματικό θα εκτυπωθούν τα σφάλματα
των προγραμμάτων αυτών και αυτό μας βοηθάει πάρα πολύ στην αντιμετώπιση των προβλημάτων!)

Για να καταλάβετε τις εντολές κάπως καλύτερα, θα πρέπει να γνωρίζετε την γενική τους μορφή η οποία είναι η εξής:

βασική_εντολή -παράμετρος1 τιμή_παραμέτρου1 -παράμετρος2 τιμή_παραμέτρου2 κλπ

ενώ συνήθως δεν χρειάζονται όλα αυτά. Στο παραπάνω παράδειγμα είδαμε την εντολή "cd" σε δύο πιό απλοικές μορφές

cd (σκέτη βασική_εντολή)

και

cd ~/Documents (βασική_εντολή τιμή_παραμέτρου1)


Παραπάνω είδαμε το διπλό "ΤΑΒ", για να εμφανίσουμε το σύνολο των διαθέσιμων υποφακέλων. Αυτός ο τρόπος χρησιμοποιείται κυρίως όταν γράφουμε την διαδρομή. Όταν βρισκόμαστε σε κάποιον φάκελο και θέλουμε να εμφανίσουμε τους υποφακέλους, αλλά και τα αρχεία, δίνουμε την εντολή

ls

(list) και θα μας τα εμφανίσει με παρόμοιο τρόπο του διπλού "TAB". Δίνοντας την εντολή

ls -l 

επιστρέφεται αυτή τη φορά μία πιό λεπτομερής λίστα των αρχείων και φακέλων, μαζί με ενδιαφέρουσα χαρακτηριστικά του καθενός. Από τα αριστερά προς τα δεξιά βλέπουμε τα δικαιώματα του αρχείου (δείτε σχετικά εδώ), τον αριθμό των συνδέσμων ή υποφακέλων μέσα σε αυτόν τον φάκελο, τον ιδιοκτήτη του αρχείου, το group στο οποίο ανήκει αυτό το αρχείο, το μέγεθος σε KB, την ημερομηνία τελευταίας τροποποίησης και τέλος το όνομα του αρχείου. Στις δυο παραπάνω εντολές δεν εμφανίζονται τα κρυφά αρχεία. Αυτό το επιτυγχάνουμε δίνοντας μαζί και την παράμετρο "-a". Δηλαδή

ls -a

και

ls -l -a 

αντίστοιχα. Στην δεύτερη περίπτωση επειδή οι παράμετροι δεν παίρνουν τιμή_παράμετρου μπορούμε να το γράψουμε και κάπως πιο μαζεμένα με αυτόν τον τρόπο:

ls -al

Τα γράμματα των παραμέτρων δεν θα μπορούσαν να ήταν τυχαία. Εδώ βλέπουμε ότι το "-a" σημαίνει "all" και το "-l" σημαίνει "list". Ίσως παρατηρήσατε, ότι στην εντολή "ls -l" (ή "ls -al") τα μεγέθη των αρχείων δεν είναι και τόσο ευανάγνωστα. Για να το διορθώσουμε αυτό, μπορούμε να δώσουμε μαζί και την παράμετρο "-h" (human readable), δηλαδή

ls -alh

Επειδή δεν μπορούμε να θυμόμαστε πάντα όλες τις παραμέτρους απ'έξω, μαζί με σχεδόν όλες τις εντολές έρχεται και ένα manual μαζί. Για να δούμε λοιπόν, το manual της "ls" αρκεί να δώσουμε

man ls

και όταν θελήσουμε να βγούμε από αυτό, απλά πατάμε το "q"(quit). Πολλά προγράμματα προσφέρουν επίσης την επιλογή (παράμετρο) "--help". Παράδειγμα:

ls --help

όπου θα βρείτε αντίστοιχη βοήθεια με του "man". Εν συνεχεία, θα μάθουμε την εντολή αντιγραφής, την

cp 

Για παράδειγμα, θέλουμε να πάρουμε backup ένα αρχείο κειμένου. Τότε δίνουμε:

cp κείμενο.txt κείμενο_backup.txt

Η πρώτη παράμετρος ορίζει την πηγή και η δεύτερη τον προορισμό. Εάν το δεύτερο αρχείο υπήρχε πρίν την παραπάνω εντολή, τότε τα περιεχόμενα του θα διαγραφούν και θα αντικατασταθούν με τα περιεχόμενα του πρώτου. Εάν δεν υπήρχε, τότε θα δημιουργηθεί ένα νέο αρχείο και θα πάρει πάλι τα περιεχόμενα του πρώτου.

Σημείωση: Στο linux η κατάληξη των αρχείων δεν έχει καμία απολύτως σημασία. Θα μπορούσε το αρχείο κείμενο.txt να είναι
κάποιο βίντεο! Για λόγους ευκολίας όμως, συνήθως προσδίδονται οι κατάλληλες καταλήξεις στα ονόματα των αρχείων.

Εάν θέλουμε να αντιγράψουμε το κείμενο σε κάποιον άλλον φάκελο, γράφουμε:

cp κείμενο.txt ~/Documents/school/

Η επόμενη εντολή μας χρησιμέυει σε εργασίες μεταφοράς και μετονομασίας:

mv

Όπως και η "cp", έτσι και αυτή δεν μπορεί να χρησιμποιηθεί σκέτη. Θα πρέπει να πάρει λοιπόν πάλι δύο παραμέτρους, μία πηγής και μία προορισμού. Έτσι λοιπόν την χρησιμοποιούμε με αυτόν τον τρόπο:

mv κείμενο.txt λίστα_σουπερμάρκετ.txt

όπου μετονομάζουμε το αρχικό κείμενο σε κάτι πιο χρήσιμο. Εάν όμως υπήρχε και το αρχείο "λίστα_σουπερμάρκετ.txt" και σε αυτήν την περίπτωση το περιεχόμενο του θα διαγραφόταν και θα το αντικαταστούσε αυτό του "κείμενο.txt". Για να μεταφέρουμε το κείμενο σε κάποιον άλλο φάκελο, για παράδειγμα στον γονεικό, δίνουμε την εντολή:

mv κείμενο.txt ../

ενώ αν θέλουμε δίνουμε και κάποια απόλυτη διαδρομή (σε κάποιο κρυφό φάκελο αν δεν θέλουμε να γίνεται εύκολα αντιληπτό αυτό το αρχείο):

mv κείμενο.txt /home/john/.my_secret_text_files/

Θα πρέπει όμως να δημιουργήσουμε πρώτα αυτόν τον φάκελο. Πως γίνεται αυτό:

cd (για να επιστρέψουμε στον αρχικό μας φάκελο, εάν δεν βρισκόμαστε ήδη)
mkdir .my_secret_text_files

Έστω ότι θέλουμε να δημιουργήσουμε τον φάκελο "/home/john/Music/discographies/MichaelJackson", αλλά ο φάκελος "discographies" δεν υπάρχει. Σε αυτήν την περίπτωση θα πρέπει να χρησιμοποιήσουμε την παράμετρο "-p" (δημιούργησε τα parents, εάν δεν υπάρχουν) του "mkdir":

mkdir -p /home/john/Music/discographies/MichaelJackson 

Εκτός από φακέλους θέλουμε φυσικά να δημιουργούμε και αρχεία. Ο πιό απλός τρόπος για να το πετύχουμε αυτό είναι με την εντολή "touch":

touch example

που δημιουργεί ένα κενό αρχείο, αλλά δεν είναι αρχείο κειμένου. Θα μπορούσε να είναι οτιδήποτε, αλλά προς το παρόν είναι απλά empty. Παρακάτω θα του εισάγουμε κείμενο με έναν text editor και θα γίνει εν τέλει αρχείο κειμένου.

Προσοχή!! Η επόμενη εντολή είναι από τις πιό επικίνδυνες που υπάρχουν. Ένα πολύ μικρό συντακτικό λάθος (ένα λάθος κενό ή μία τελεία) μπορεί να έχει καταστροφικές συνέπειες! Θα πρέπει να την χρησιμοποιείτε πολύ προσεκτικά!

Και αυτή δεν είναι άλλη από την

rm 

(remove!) Η εντολή "rm" εξυπηρετεί την διαγραφή αρχείων και φακέλων.

Σημείωση: Υπάρχει και η εντολή "rmdir" για την διαγραφή φακέλων, αλλά επειδή μπορούμε να την χρησιμοποιήσουμε μόνο
σε κενούς φακέλους, σπάνια προτιμάται.

Για να διαγράψουμε ένα αρχείο εκτελούμε:

rm όνομα_αρχείου

Μπορούμε φυσικά να δώσουμε την πλήρη διαδρομή ενός αρχείου:

rm /home/john/Documents/κείμενο.txt

Αν θέλουμε να διαγράψουμε πολλά συγκεκριμένα αρχεία στον τρέχοντα φάκελο:

rm κείμενο.txt φωτογραφία.png κλπ

Παραπάνω αναφερθήκαμε στην διαγραφή κενών φακέλων. Σε περίπτωση που υπάρχει έστω και ένα αρχείο μέσα στον φάκελο που θέλουμε να διαγράψουμε, θα πρέπει να χρησιμοποιήσουμε την παράμετρο "-r" (recursive - αναδρομικά, δηλαδή ψάχνει σε υποφακέλους, σε υποφακέλους των υποφακέλων, μέχρι να "πιάσει πάτο" και διαγράφει τα πάντα μέσα σε αυτούς):

rm -r /home/john/Documents/school 

:D Μέχρι τώρα είδαμε ότι πρέπει να δώσουμε τα συγκεκριμένα ονόματα των αρχείων και των φακέλων ως τιμή_παράμετρου στις διάφορες εντολές. Αυτό όμως δεν μας προσφέρει καθόλου ευελιξία. Γι'αυτό υπάρχουν και κάποια βοηθητικά σύμβολα (τα λεγόμενα Wildcards!), που μας βοηθάνε να εκτελούμε τις εντολές σε μικρές ή μεγάλες ομάδες αρχείων:

? 

Αντικαθιστάται με έναν μόνο χαρακτήρα (αλλά όχι τον κενό χαρακτήρα!). Έστω ότι μέσα στον φάκελο υπάρχουν τα αρχεία:

κείμενο1.txt κείμενο4.txt κείμενο5.txt κείμενο.txt

Αν δώσουμε:

rm κείμενο?.txt

θα διαγράψει τα τρία πρώτα αρχεία, ενώ το "κείμενο.txt" θα παραμείνει εκεί.

*

Αντικαθιστάται με οποιοδήποτε πλήθος χαρακτήρων (μαζί με τον κενό!) Είναι το πιό συχνά χρησιμοποιούμενο σύμβολο. Αυτή τη φορά στο φάκελο έχουμε:

κείμενο1.txt κείμενο4.txt κείμενο5.txt κείμενο.txt φωτογραφία.png

Για να διαγράψουμε όλα τα αρχεία που τελειώνουν σε ".txt" δίνουμε:

rm *.txt

Για να διαγράψουμε όλα τα περιεχόμενα του φακέλου:

rm *

το οποίο μπορούμε να το γράψουμε και ως:

rm ./*

Παραπάνω Wildcards μπορείτε να βρείτε εδώ. Αν θέλουμε να εκτυπώσουμε τα περιεχόμενα ενός αρχείου κειμένου στα γρήγορα στο τερματικό πληκτολογούμε:

cat κείμενο.txt

(concatenate) Η εντολή "cat" έχει πάρα πολλές δυνατότητες και η παραπάνω χρήση της είναι η απλούστερη μορφή. Αν θέλετε να δείτε τι παραπάνω μπορεί να κάνει αρκεί να δώσετε:

man cat 

όπως άλλωστε και με τις περισσότερες εντολές. Αν θέλουμε να έχουμε την δυνατότητα να επεξεραστούμε το παραπάνω κείμενο, θα χρειαστεί να επιστρατεύσουμε κάποιον text editor και από τους πιο φιλικούς προς αρχάριους είναι ο:

nano

Αν τον δώσουμε σκέτο, δεν έχει επιλέξει κάποιο συγκεκριμένο αρχείο προς επεξεργασία και αυτό θα δημιουργηθεί/αποθηκευτεί κατά την έξοδο μας από τον editor. Εισάγουμε το κείμενο μας όπως στους περισσότερους editors που έχετε συνηθίσει εως τώρα. Όταν τελειώσουμε πατάμε "Ctrl+X" για να βγούμε από το πρόγραμμα. Σε αυτό το σημείο θα μας ρωτήσει εαν θέλουμε να αποθηκευτεί το αρχείο κειμένου. Πατάμε "y" ή "n" αντίστοιχα. Αν πατήσαμε "y" θα πρέπει να δώσουμε το όνομα με το οποίο θα αποθηκευτεί και πατάμε "Enter". Για να ανοίξουμε ένα ήδη υπάρχον αρχείο (για παράδειγμα το αρχείο που δημιουργήσαμε παραπάνω με την εντολή "touch"!) προς επεξεργασία απλά δίνουμε:

nano αρχείο_κειμένου

και κατά την αποθήκευση το ίδιο όνομα έχει συμπληρωθεί από μόνο του και αν δεν θέλουμε να το αλλάξουμε απλά πατάμε πάλι "Enter".

Σημείωση: Η χρήση του "touch" πριν το "nano" δεν είναι απαραίτητη. Το αρχείο θα δημιουργηθεί έτσι και αλλιώς από το "nano".
Το "touch" χρησιμοποιείται συνήθως σε άλλες περιπτώσεις.

Στο κάτω μέρος του "nano" θα βρείτε τα δίαφορα χρήσιμα shortcuts που μας προσφέρει (όπου "^" πατάμε Ctrl!). Ένα ακόμη χρήσιμο shortcut είναι το "Ctrl+W" για αναζήτηση κειμένου. Πιο προχωρημένοι χρήστες προτιμούν πολύ πιο δυνατούς editors όπως ο "vim" ή ο "emacs", αλλά δεν θεωρούνται καθόλου φιλικοί προς αρχάριους, όμως έρχονται με πάρα πολλές δυνατότητες. Εκτός από τα διάφορα tutorials και man pages που μπορείτε να αναζητήσετε μόνοι σας (δείτε σχετικά εδώ), υπάρχει και ένας διασκεδαστικός τρόπος να μάθετε τον "vim", παίζοντας στον browser σας vim adventures!!

Οι παραπάνω τρόποι είναι για να επεξεργαστούμε τα κείμενα μας μόνο στο τερματικό. Πολλές φορές όμως οι χρήστες επιλέγουν να ανοίξουν τα αρχεία τους με κάποιον editor που έχει και GUI. Ο συνηθέστερος αυτών είναι ο "gedit". Ανοίγετε το αρχείο σας:

gedit text_file

και όταν τελειώσετε, αποθηκεύετε το αρχείο σας (π.χ. με Ctrl+S ή από το αντίστοιχο button που προσφέρει ο gedit πάνω αριστερά) και όταν κλείστε το παράθυρο, επιστρέφετε πάλι στο τερματικό και συνεχίζετε από εκεί που ήσασταν. Όταν εκκινείτε από το τερματικό κάποιο πρόγραμμα με GUI, δεν μπορείτε να συνεχίσετε να χρησιμοποιείτε το τερματικό εως ότου κλείστε την εφαρμογή. Αυτό μπορούμε να το παρακάμψουμε εισάγοντας το σύμβολο "&" στο τέλος κάποιας εντολής:

gedit λίστα_σουπερμάρκετ &

Η τελευταία εντολή που θα μας απασχολήσει σε αυτόν τον εισαγωγικό οδηγό είναι η "echo". Αυτή αναλαμβάνει να εκτυπώσει τα περιεχόμενα από κάποια πηγή που της δίνουμε στο τερματικό. Για παράδειγμα:

echo "Hello World!"

και στο τερματικό θα εκτυπωθεί φυσικά:

Hello World!

Το σύστημά μας χρησιμοποιεί και διάφορες μεταβλητές που είναι χρήσιμες για κάποιες εργασίες. Μία από τις πιό ενδιαφέρουσες είναι η μεταβλητή "PATH" η οποία περιέχει όλες τις διαδρομές οι οποίες περιέχουν εκτελέσιμα προγράμματα. Κάθε φορά που δίνουμε μία εντολή, το τερματικό ψάχνει σε όλους τους φακέλους του "PATH" και αν την βρεί, την εκτελεί. Για να δούμε τα περιεχόμενα του "PATH", εκτελούμε:

echo $PATH

και στην οθόνη μας θα εμφανιστεί κάτι τέτοιο:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

το "$" υποδηλώνει ότι θα πρέπει να εκτυπωθούν τα περιεχόμενα του "PATH" (λόγω του ότι εδώ έχουμε μια μεταβλητή), επειδή χωρίς το "$" στην οθόνη μας θα εκτυπωνόταν απλά ένα:

PATH

Υπάρχουν προγράμματα που δεν είναι αποθηκευμένα σε κάποιον από τους φακέλους του PATH. Συνήθως επειδή μπορεί να έχουμε κατεβάσει κάποιο πρόγραμμα χειροκίνητα από κάποια ιστοσελίδα (το οποίο είναι σπάνιο - εάν υπάρχει δυνατότητα εγκατάστασης αυτού το προγράμματος μέσω κάποιου package manager (δείτε σχετικά εδώ) θα πρέπει να ακολουθείτε πάντα αυτόν τον τρόπο!). Για να εκτελέσουμε, λοιπόν ένα τέτοιο πρόγραμμα θα πρέπει να δώσουμε την πλήρη διαδρομή του ξεκινώντας από τον ριζικό φάκελο. Όμως ο πιο συνήθης τρόπος είναι ότι βρισκόμαστε ήδη μέσα στον φάκελο αυτού το προγράμματος και σε αυτήν την περίπτωση αρκεί να δώσουμε:

./όνομα_προγράμματος

Προσέξτε όμως ότι το αρχείο αυτό θα πρέπει να είναι εκτελέσιμο! (δείτε σχετικά εδώ). Επίσης δεν θα πρέπει να κατεβάζετε τέτοια προγράμματα από άγωνστες πηγές (δείτε γιατί!!).

Άλλες δύο χρήσιμες μεταβλητές είναι η $HOME που έχει το ίδιο περιεχόμενο με το σύμβολο "~" που είδαμε παραπάνω και η $EDITOR που ορίζει τον βασικό editor του συστήματός μας (πχ vim ή nano).

Τέλος, μία λίστα με χρήσιμες εντολές με σύντομη περιγραφή. Για παραπάνω πληροφορίες σχετικά με αυτές θα πρέπει να συμβουλευτείτε είτε τις man pages τους ή online tutorials κλπ. Καλό θα ήταν να μάθετε καλά τις επιλογές που σας προσφέρει ο package manager της διανομής σας (περισσότερες πληροφορίες εδώ):

Διαχειριστές πακέτων[επεξεργασία]

Όνομα Διανομή
apt-get Debian, Ubuntu, Mint και παράγωγες διανομές
yum Fedora
zypper OpenSuse
pacman Arch Linux


Άλλες χρήσιμες εντολές (κάποιες ίσως να χρειάζονται εγκατάσταση πρώτα):

Περιήγηση στους φακέλους / Εκτύπωση πληροφοριών / Επεξεργασία αρχείων[επεξεργασία]

Header text Header text
cat Eκτύπωση του κειμένου ενός αρχείου στο τερματικό
cd περιήγηση στους φακέλους του συστήματος
cp αντιγραφή αρχείων
echo εκτύπωση κειμένου από πηγή επεξήγηση
file Προβολή του τύπου ενός αρχείου.
head Προβολή των πρώτων γραμμών ενός αρχείου
tail Προβολή των τελευταίων γραμμών ενός αρχείου
less και more για να δείτε τα περιεχόμενα ενός αρχείου κειμένου
ln δημιουργία links (shortcuts)
ls προβολή των αρχείων και των υποφακέλων ενός φάκελου
lsusb λίστα με όλες τις συσκευές του συστήματος συνδεδεμένες μέσω usb
lspci λίστα με όλες τις συσκευές του συστήματος συνδεδεμένες μέσω pci
man προβολή εγχειριδίου βοήθειας εντολής/προγράμματος
mkdir δημιουργία φακέλου
mv μεταφορά/μετονομασία αρχείων
nano απλός text editor
pwd εκτύπωση ονόματος τρέχοντος φακέλου
rm διαγραφή αρχείων
rmdir διαγραφή φακέλου υπό την προϋπόθεση ότι αυτός είναι κενός
touch δημιουργία κενού αρχείου
tar για συμπίεση/αποσυμπίεση αρχείων
vim εξειδικευμένος text editor
wc μετράει πόσες λέξεις/γραμμές/χαρακτήρες έχει ένα κείμενο

Λογαριασμοί χρηστών / Δικαιώματα[επεξεργασία]

Εντολή Περιγραφή
chmod αλλάζει τα δικαιώματα των αρχείων (δείτε σχετικά εδώ)
exit Αποσύνδεση του χρήστη
su Σύνδεση ως υπερχρήστης
sudo εκτέλεση της εντολής που ακολουθεί με δικαιώματα υπερχρήστη
whoami εκτυπώνει το username μας

Σύστημα[επεξεργασία]

Εντολή Περιγραφή
free πληροφορίες για το πόση ελεύθερη μνήμη ram και swap έχουμε
kill τερματίζει διεργασίες
reboot επανεκκινεί το σύστημα
shutdown απενεργοποιεί το σύστημα
startx εκκινεί το περιβάλλον γραφικών (X/WM/DE)
top δείχνει τις τρέχουσες διεργασίες μαζί με πολλές λεπτομέρειες (μια καλή εναλλακτική είναι η "htop")
uname δίνει διάφορα στοιχεία για το σύστημα μας όπως πχ έκδοση πυρήνα

Αναζήτηση[επεξεργασία]

Εντολή Περιγραφή
find Αναζήτηση αρχείων
locate Αναζήτηση αρχείων
grep εκτυπώνει τις γραμμές ενός κειμένου που περιέχουν μόνο την τιμή_παραμέτρου που θα δώσουμε στην grep
whereis χρήσιμη για αναζητήσεις
sort για εργασίες ταξινόμησης
which μας επιστρέφει την πλήρη διαδρομή κάποιας εντολής
apropos για να αναζητήσετε τις κατάλληλες εντολές

Δίκτυα[επεξεργασία]

Εντολή Περιγραφή
ifconfig ip και ρύθμιση των interfaces (ethernet, wireless κλπ)
ping εξετάζει εάν είναι δυνατή η σύνδεση με κάποιον απομακρυσμένο υπολογιστή
netstat διάφορες πληροφορίες για τα δίκτυα (όπως default gateway)
ssh απομακρυσμένη σύνδεση στο τερματικό κάποιου υπολογιστή

Λοιπές[επεξεργασία]

Εντολή Περιγραφή
clear καθαρίζει το τερματικό σβήνοντας όλες τις γραμμές
date εκτύπωση ημερολογίου και ώρας
dd για αντιγραφή χαμηλού επιπέδου (χρειάζεται πολύ προσοχή!!)
mount προσαρτεί κάποια συσκευή (σκληρό δίσκο συνήθως) στο σύστημά μας
umount αποπροσαρτεί κάποια συσκευή (σκληρό δίσκο συνήθως) στο σύστημά μας

Χρήσιμα tips για το τερματικό[επεξεργασία]

Εάν κάποια εντολή θέλει πολλή ώρα για να ολοκληρωθεί και θέλετε για κάποιο λόγω να την διακόψετε οριστικά πατάτε τον συνδυασμό
"Ctrl+C".
Για αντιγραφή και επικόλληση κειμένου μέσα στο τερματικό χρησιμοποιείτε τους συνδυασμούς "Shift+Ctrl+C" και "Shift+Ctrl+V".
Ειδάλως, μπορείτε να χρησιμοποιήσετε και το ποντίκι με το δεξί κλίκ.
Εάν έχετε ταυτόχρονα ανοιχτό και έναν file manager μπορείτε μέσω drag'n'drop να τραβήξετε μέσα στο τερματικό κάποιον φάκελο
ή αρχείο και στο τερματικό θα εμφανιστεί αυτομάτως η πλήρης διαδρομή αυτού.


Προσοχή!! Δείτε ακόμα, ποιές εντολές θα πρέπει να αποφύγετε οπωσδήποτε!!