Η γραμμή εντολών

===========

Εισαγωγή

Τι είναι η γραμμή εντολών;

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

Για παράδειγμα αν θέλουμε να τρέξουμε τον VLC, στην γραμμή εντολών αρκεί να γράψουμε vlc και να πατήσουμε Enter.
Σε πρώτο επίπεδο η γραμμή εντολών δεν είναι τίποτα περισσότερο και τίποτα λιγότερο!

Πώς ανοίγουμε την γραμμή εντολών;

Ο συνηθέστερος τρόπος σήμερα είναι μέσω ενός εξομοιωτή τερματικού (terminal emulator). Ο εξομοιωτής τερματικού είναι απλώς μια εφαρμογή τού γραφικού περιβάλλοντος. Υπάρχουν αρκετές εφαρμογές για αυτήν την δουλειά. Στο KDE συνηθίζεται το konsole , στο GNOME συνηθίζεται το gnome-terminal στο Xfce συνηθίζεται το xfce4-terminal και υπάρχουν και αμέτρητα άλλα.

Ένας άλλος τρόπος είναι το εικονικό τερματικό (virtual terminal). Στις περισσότερες διανομές λίνουξ μπορεί κάποιος να εισέλθει στο αντίστοιχο tty με έναν συνδυασμό Ctrl+Alt+Fx (Fx κάποιο από τα αριθμημένα F πλήκτρα) . Από εικονικό τερματικό πρέπει να γίνει ξεχωριστή είσοδος χρήστη (login) και δεν μπορούν να τρέξουν γραφικές εφαρμογές καθώς δεν έχουν παραθυρικό σύστημα να πατήσουν.

Γιατί να χρησιμοποιήσει κάποιος γραμμή εντολών;

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

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

β) αμεσότητα
Σε κάποιον που ξέρει τι κάνει είναι συχνά πολύ πιο γρήγορο να το δίνει ως εντολή παρά να κάνει δρομολόγια με το ποντίκι ψάχνοντας τα εικονίδια και τα μενού.

γ) εκφραστικότητα
Οι εντολές δεν είναι απλώς στοιχειώδεις λέξεις αλλά μπορούν να συνδυαστούν ως γλώσσα. Οι δυνατότητες μιας γλώσσας είναι απείρως μεγαλύτερες από τα κλικ τού ποντικιού.

δ) οικονομία
Οι εντολές είναι απλώς σειρές απλών χαρακτήρων (ένας ASCII χαρακτήρας πιάνει μοναχά ένα byte). Το γραφικό περιβάλλον είναι τάξεις μεγέθους ακριβότερο σε πόρους. Σήμερα βέβαια με υπολογιστές που τρέχουν σε GHz, με μνήμες σε GB και γρήγορο δίκτυο έχουμε πλέον την άνεση να σπαταλάμε πόρους αλλά σε κάποιες περιπτώσεις μπορεί πάντα η γραμμή εντολών να είναι αποδοτικότερη.

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

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

Επίσης κάποιες δυνατότητες μπορεί να μην είναι εκτεθειμένες στα μενού τού γραφικού περιβάλλοντος. Δείτε για παράδειγμα το χάος τών επιλογών τού VLC

vlc --longhelp --advanced

Πώς παρουσιάζουμε κώδικα από την γραμμή εντολών στα φόρουμ;

Κατ’ αρχήν δεν χρησιμοποιούμε εικόνες τού τερματικού για να τις δείξουμε στα φόρουμ. Το όλο νόημα τής γραμμής εντολών είναι ότι γενικά μόνο το κείμενο έχει σημασία και αυτό πρέπει να δώσει κάποιος και μόνο αυτό.

Αλλά δεν είναι καλό πάλι να ρίξουμε ακριβώς «χύμα» τον κώδικα γιατί τα φόρουμ χαλάνε την σταθερού μήκους (monospace) μορφοποίηση τού κώδικα. Το σωστό είναι η χρήση τού BBCode code που υπάρχει σε όλα σχεδόν τα φόρουμ για αυτόν τον σκοπό. Στα εικονίδια συνήθως πάνω από το κείμενο συχνά συμβολίζεται # ή </>.

Τι σημαίνει γνώση γραμμής εντολών;

Νομίζω την ιδέα τής γραμμής εντολών την εξήγησα ήδη! Ωστόσο όταν μιλάμε για γνώση γραμμής εντολών στην πραγματικότητα εννοούμε επιπλέον τα παρακάτω:

α) γνώση τού «φλοιού»

β) γνώση προγραμμάτων που εκτελούνται χωρίς ανάγκη γραφικού περιβάλλοντος

γ) γνώση χαρακτηριστικών τού συστήματος

Τι είναι ο φλοιός (shell);

Φλοιός λέγεται το πρόγραμμα που διαβάζει τις εντολές που δίνουμε και τις αναλύει συντακτικά. Όταν για παράδειγμα δίνουμε την εντολή:

vlc

Ο φλοιός θα το διαβάσει και θα καταλάβει ότι θέλουμε να τρέξουμε τον VLC.

Ο κυρίαρχος φλοιός στο λίνουξ (αλλά και σε άλλα συστήματα) είναι ο bash . Όσα ακολουθήσουν αναφέρονται στον bash.

===========

Τα βασικά

Βασικά χαρακτηριστικά εμφάνισης και σύνταξης τού φλοιού.

Όπως και σε κάθε κειμενογράφο, το τερματικό υποδεικνύει το σημείο που γράφουμε με τον «δρομέα». Ο φλοιός επιπλέον δείχνει ότι περιμένει εντολή μας με κάποιο χαρακτηριστικό σύμβολο, τον προτροπέα. Ο συνηθέστερος προτροπέας στο Bash είναι το $ . Άλλα σύμβολα που χρησιμοποιούνται ως προτροπείς είναι τα > % ενώ ιδαίτερη σημασία έχει το # καθώς υποδεικνύει ότι έχουμε δικαιώματα υπερχρήστη, δηλαδή να πειράξουμε το σύστημα.

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

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

Ως ένα πρώτο απλό παράδειγμα εφαρμογής καθαρά γραμμής εντολών

date

δίνει ημερομηνία και ώρα

Πληροφορίες συστήματος

Ένα χρήσιμο πρόγραμμα, σχετικά καινούργιο (δεν υπάρχει σε παλιές διανομές) που εμφανίζει συγκεντρωμένες πληροφορίες για το σύστημα είναι το inxi

inxi -F

Σύμβαση GNU Οι επιλογές στα προγράμματα συχνά ακολουθούν την σύμβαση GNU. Υποδεικνύονται από μία παύλα αν είναι μονογράμματες και από δύο παύλες αν είναι λέξεις, όπως στο παράδειγμα με τον VLC πιο πάνω. Επίσης οι μονογράμματες επιλογές μπορούν να συγκεντρωθούν σε ένα μόνο όρισμα. Για παράδειγμα η εντολή

inxi -SCG

δείχνει τις αντίστοιχες πληροφορίες.

Αυτό είναι μονάχα σύμβαση και συνηθίζεται σε πάρα πολλά προγράμματα, αλλά δεν είναι συντακτικό χαρακτηριστικό τού φλοιού

Διακοπή διεργασίας

Ctrl-C

Είναι νομίζω ο σημαντικότερος συνδυασμός πλήκτρων και ένας επιπλέον λόγος είναι ότι ΟΧΙ δεν σημαίνει αντιγραφή κειμένου! Σκοτώνει την όποια διεργασία τρέχει. Ας χρησιμοποιήσουμε πάλι το παράδειγμα τού VLC. Τρέχουμε:

vlc

και ανοίγει σε νέο παράθυρο ο VLC. Επιστρέψτε στο τερματικό και θα δείτε ότι περιμένει τον VLC που τρέχει (τυπώνοντας και πράγματα που στέλνει ο VLC) χωρίς προτροπή. Με τον συνδυασμό Ctrl-C ο VLC θα κλείσει και ο φλοιός θα μάς προτρέψει ξανά για νέα εντολή.

  • Ο συνδυασμός αυτός είναι πολύ παλιός (Unix) και παλιότερος από την χρήση για την αντιγραφή κειμένου (microsoft). Αν θέλετε να αντιγράψετε κείμενο και χρησιμοποιείτε τερματικό προφανώς πρέπει να τον αποφύγετε και το απλούστερο είναι να χρησιμοποιήσετε μόνο το ποντίκι. Προσθέτω ότι ο παραδοσιακός “Unix” τρόπος αντιγραφής κειμένου με το ποντίκι, είναι με το μεσαίο κλικ. (στα σύγχρονα ποντίκια, η ροδέλα είναι ταυτόχρονα και το μεσαίο κλικ)

Πλοήγηση στούς φακέλους

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

ls

Δείχνει τα περιεχόμενα τού τρέχοντος φακέλου.

ls φάκελος

Δείχνει τα περιεχόμενα ενός φακέλου.

Μπορούμε να αλλάξουμε τρέχοντα φάκελο με την εντολή

cd φάκελος

Συντακτικό συστήματος αρχείων

Στο λίνουξ, τα ονόματα τών αρχείων μπορούν να περιέχουν οποιοδήποτε σύμβολο με εξαίρεση το / (πλαγία). Η πλαγία χρησιμοποιείται ως διαχωριστικό φακέλων. Για παράδειγμα η έκφραση φακέλου/αρχείο σημαίνει αρχείο εντός τού φακέλου και αντίστοιχα φακέλου/φάκελος/ σημαίνει φάκελος εντός φακέλου. Η τελευταία πλαγία είναι προαιρετική, την έβαλα στο παράδειγμα ως συντακτική δυνατότητα που επιπλέον εξασφαλίζει ότι ο φάκελος μπορεί να είναι μόνο φάκελος.

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

cd ..

Η παραπάνω εντολή ανεβαίνει κατά έναν φάκελο στην ιεραρχία.

Η τελεία και οι δύο τελείες είναι ουσιαστικά σύνδεσμοι και έτσι εκφράσεις όπως ../../ είναι απολύτως έγκυρες (η συγκεκριμένη σημαίνει δύο φακέλους πάνω στην ιεραρχία)

«καλά» ονόματα αρχείων

Εκτός από τούς παραπάνω συντακτικούς περιορισμούς κάποια σύμβολα μπορεί να επιτρέπονται, ωστόσο δημιουργούν περιπλοκές. Θα δούμε αργότερα πώς ξεπερνιούνται αλλά προς το παρών αναφέρω ότι «καλά» ονόματα αρχείων περιέχουν μόνο λατινικά γράμματα, αραβικούς αριθμούς και την _ (κάτω παύλα). Επίσης το λίνουξ διακρίνει τα πεζά από τα κεφαλαία ( Dog, DOG, dog είναι διαφορετικά ονόματα). Ως επιπλέον σύμβαση «καλά» θεωρούνται τα πεζά.

Κάπως πιο ιδιαίτερο ρόλο παίζει η τελεία. Κατ’ αρχήν δεν έχει «ουσιαστική» σημασία στο σύστημα (σε αντίθεση πχ με την DOS). Είναι απλώς ένας χαρακτήρας σαν όλους τούς άλλους, αλλά

  • όπως είπαμε απαγορεύονται τα ονόματα . και ..

  • ονόματα που αρχίζουν από τελεία δεν εμφανίζονται από προεπιλογή (κρυφά κατά κάποιον τρόπο)

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

Για να δει κάποιος και τα κρυφά αρχεία, η εντολή είναι:

ls -a

Αυτοσυμπλήρωση και ιστορικό

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

Ένα αρκετά συνηθισμένο είδος ορίσματος είναι τα ονόματα αρχείων (ή φακέλων). Για παράδειγμα:

vlc βίντεο

ανοίγει με τον VLC το βίντεο. Το βίντεο μπορεί να έχει μεγάλο όνομα αλλά δεν υπάρχει λόγος να το πληκτρολογήσουμε ολόκληρο. Αρκεί να γράψουμε το πρώτο γράμμα και να πατήσουμε Tab . Θα συμπληρωθεί το υπόλοιπο τού ονόματος. Αν υπάρχουν περισσότερα από ένα αρχεία, θα συμπληρώσει όσους χαρακτήρες είναι κοινοί διαφορετικά αν πατήσουμε δεύτερη φορά το Tab θα δείξει τα ενδεχόμενα. Αν οι επιλογές είναι πολλές, θα μάς ρωτήσει πριν τις τυπώσει στην οθόνη. Αυτό λέγεται αυτοσυμπλήρωση και χρησιμοποιείται κυρίως για αρχεία και φακέλους, μπορεί όμως να λειτουργεί και σε άλλες περιπτώσεις.

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

Άδειες

Η εντολή για τα πλήρη “unix” χαρακτηριστικά τών αρχείων και φακέλων είναι:

ls -l

κάθε γραμμή αφορά ένα αρχείο και ξεκινά με δέκα χαρακτήρες που αφορούν τις άδειες. Ο πρώτος, αφορά τον τύπο τού αρχείου όπως τον βλέπει το σύστημα. Παύλα - σημαίνει κοινό αρχείο δηλαδή οποιοδήποτε είδους αρχείου όπως το καταλαβαίνει κανείς συνήθως , d (directory) σημαίνει φάκελος και υπάρχουν και άλλα είδη για παράδειγμα l (link) σημαίνει σύνδεσμος.

Οι επόμενοι τρεις χαρακτήρες αφορούν τα δικαιώματα τού ιδιοκτήτη χρήστη u ( user) μπορούν να είναι r ( read), w ( write), x (execute) που σημαίνουν δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης αντιστοίχως ή αντιστοίχως παύλες που σημαίνει έλλειψη τού αντιστοίχου δικαιώματος. Οι επόμενοι τρεις χαρακτήρες είναι όμοιοι στην χρήση αλλά αφορούν την ομάδα g ( group) και οι επόμενοι τρεις επίσης όμοιοι αλλά αφορούν τούς υπολοίπους o ( others). Ακολουθεί ένας αριθμός και μετά ο χρήστης και η ομάδα που ανήκει το αρχείο.

Αν κάποιος θέλει να κάνει ένα αρχείο σε εκτελέσιμο για τον χρήστη η εντολή είναι:

chmod u+x αρχείο

Για να αφαιρέσει δικαιώματα αντί για “+” έχουμε “-“. Αν θέλουμε σε όλους όχι μόνο τον χρήστη μπορούμε να χρησιμοποιήσουμε a ( all) ή και καθόλου σύμβολο.

Εναλλακτικά οι άδειες μπορούν να εκφραστούν στο οκταδικό σύστημα. (r=4, w=2, x=1, rwx=7 κλπ)

Μετά το όνομα τής ομάδας ακολουθεί το μέγεθος τού αρχείου. Παρατηρήστε ότι το μέγεθος τών φακέλων πιθανότατα είναι 4K (ή ακέραια πολλαπλάσια αν έχουν πολλά περιεχόμενα). Αυτό οφείλεται στον τρόπο που λειτουργεί το σύστημα αρχείων και στο γεγονός ότι η ls βλέπει τον φάκελο και όχι τα περιεχόμενά του και ο φάκελος πρακτικά για το σύστημα είναι ένα είδος αρχείου που περιλαμβάνει τα ονόματα τών αρχείων ή φακέλων που περιέχει ξέρει να τα δείξει στον δίσκο. Προσθέτω ότι ένα αρχείο δεν περιέχει το όνομα τού εαυτού του.

Αν κάποιος θέλει να βρει το συνολικό μέγεθος ενός φακέλου με όσα βρίσκονται κάτω από αυτόν ιεραρχικά η εντολή είναι

du -sh φάκελος

Σύστημα ιεραρχίας φακέλων.

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

Ως τώρα ο τρόπος που αναφέραμε τούς φακέλους ήταν με βάση τις σχετικές διαδρομές. Αν κάποιος θέλει να εξασφαλίσει συντακτικά ότι μια έκφραση αναφέρεται σε σχετική διαδρομή συνήθως χρησιμοποιείται η μορφή ./διαδρομή

Υπάρχει όμως ένας φάκελος που λέγεται ριζικός και συμβολίζεται με την πλαγία / από τον οποίο πηγάζουν όλες οι διαδρομές προς όλα τα αρχεία. Όταν μια διαδρομή ξεκινάει με την πλαγία τότε γενικά θεωρείται ότι είναι η «απόλυτη» διαδρομή δηλαδή ξεκινάει από την ρίζα και είναι μια διαδρομή που εκφράζεται ανεξάρτητα από τον τρέχοντα φάκελο.

Η εντολή για να δούμε την διαδρομή τού τρέχοντος φακέλου είναι:

pwd

Όπως είναι φανερό, η εντολή:

ls /

μάς δείχνει τα περιεχόμενα τού ριζικού φακέλου.

Πρότυπο Ιεραρχίας

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

Η σύμβαση αυτή λέγεται Filesystem Hierarchy Standard.

/home/
Εδώ βρίσκονται οι προσωπικοί φάκελοι τών χρηστών. Πχ ένας χρήστης groo τυπικά έχει προσωπικό φάκελο τον /home/groo/ Στην πράξη κανείς όταν κάνει λογκίν από προεπιλογή βρίσκεται στον προσωπικό του φάκελο και επίσης για τις διαδρομές που σχετίζονται με τον προσωπικό φάκελο, χρησιμοποιείται η σύντμηση τής περισπωμένης που έχουμε αναφέρει, δηλαδή εκφράσεις ~/διαδρομή

/usr/
Εδώ βρίσκεται το εγκατεστημένο λογισμικό. Πολλοί φαίνεται να αναρωτιούνται πού βρίσκονται τα προγράμματα αλλά στην πραγματικότητα η διαχείριση λογισμικού γίνεται αποκλειστικά με εργαλεία διαχείρισης λογισμικού ακόμα και από την γραμμή εντολών.

/boot/
Εδώ βρίσκεται πολύ βασικό λογισμικό που αφορά την εκκίνηση τού συστήματος, χαρακτηριστικά εδώ βρίσκεται ο Linux πυρήνας.

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

/dev/
Εδώ βρίσκονται οι «συσκευές» που βλέπει το σύστημα. Όλες οι συσκευές (δίσκοι, πληκτρολόγιο, ήχος κλπ) αντιμετωπίζονται ενιαία στο λίνουξ σαν «αρχεία». Δεν είναι βέβαια «κοινά» αρχεία (δεν χαρακτηρίζονται από παύλα) αλλά ανάλογα με την λειτουργία τους χαρακτηρίζονται με το c (character, πχ πληκτρολόγιο) ή b (block, πχ δίσκος)

Οι δίσκοι ως συσκευές βρίσκονται στο /dev/ αλλά για να δούμε τα αρχεία που περιέχουν θα πρέπει οι κατατμήσεις να προσαρτηθούν κάπου. Πχ το /home/ μπορεί να δείχνει σε ξεχωριστή κατάτμηση.

/mnt/
Παραδοσιακά εδώ γίνονται οι χειροκίνητες προσωρινές προσαρτήσεις δίσκων ( mount ). Στην πράξη βέβαια δεν κάνουμε χειροκίνητα τέτοιες δουλειές οπότε δεν χρησιμοποιείται.

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

/run/
Εδώ βρίσκονται «αρχεία» που αφορούν την τρέχουσα κατάσταση τού συστήματος

/tmp/
Προσωρινά αρχεία.

/var/
Αρχεία που «μεταβάλλεται» το μέγεθός του. Πιο συχνά χρειάζεται γιατί εδώ είναι αρχεία καταγραφών (.log)

/bin/
Παραδοσιακά εδώ ήταν βασικά εκτελέσιμα προγράμματα, τώρα συνήθως είναι απλά σύνδεσμος στο /usr/bin/

/lib/
Παραδοσιακά εδώ ήταν βασικές βιβλιοθήκες προγραμμάτων, τώρα συνήθως είναι απλά σύνδεσμος στο /usr/lib/

/root/
Ο προσωπικός φάκελος τού ριζικού χρήστη.

/opt/
Εναλλακτική τοποθεσία για εγκατάσταση λογισμικού. Συχνά λογισμικό που δεν είναι άμεσα υποστηριζόμενο από την διανομή και δεν θέλουμε να μπερδευτεί μέσα στο /usr/

/sys/
Περιέχει πληροφορίες για τις συνδεδεμένες συσκευές

/proc/
Περιέχει πληροφορίες για τις διεργασίες.

sudo

Τυπικά οι κοινοί χρήστες δεν έχουν δικαίωμα να πειράξουν το σύστημα. Αυτό είναι καλό γιατί προφανώς θέλουμε το σύστημα να είναι ασφαλές από τις συνήθεις ενέργειες τών χρηστών. Ωστόσο σε κάποιες περιπτώσεις πρέπει να γίνουν ενέργειες που αφορούν το σύστημα οπότε είναι αναγκαίο κάποιος ή κάποιοι να έχουν αυτήν την δυνατότητα. Τυπικά υπάρχει ένας ριζικός (root) χρήστης που έχει κάθε δικαίωμα πάνω στο σύστημα οπότε αν κάποιος κάνει είσοδο ως ριζικός μπορεί να κάνει τα πάντα. Συνήθως αυτό αποφεύγεται σήμερα και αντί για αυτό υπάρχουν τρόποι οι χρήστες να αναβαθμίσουν τα δικαιώματά τους. Φυσικά για να μπορούν να ασκήσουν αντίστοιχα δικαιώματα θα πρέπει να ανήκουν σε αντίστοιχες ομάδες.

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

ls /root/

θα δώσει σφάλμα Permission denied.

αν έχουμε δικαιώματα sudo τότε με:

sudo ls /root/

αναβαθμίζουμε τα δικαιώματα τής εντολής μας. Απαιτείται όμως μεγαλύτερη υπευθυνότητα για αυτό το τυπικά απαιτείται να δώσουμε τον κωδικό μας. Προσοχή στην γραμμή εντολών (unix-linux) όταν δίνουμε κωδικούς δεν εμφανίζεται τίποτα, ούτε καν αστεράκια. (Αν νομίζεται ότι κάνατε κάποιο λάθος, μπορείτε να πατήσετε πολλές φορές Backspace και να ξαναγράψετε).
Σημείωση: συνήθως ο φάκελος /root/ είναι κενός.

===========

Μερικά ακόμα

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

Το σύμβολο ^ σημαίνει συνδυασμό πλήκτρου με Ctrl (πχ ^C σημαίνει Ctrl-C)

Η όποια ύπαρξη πλαγίας υποδειλώνει διαδρομή αρχείου και όχι εντολή.

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

Πληροφορίες για εντολές και προγράμματα.

man
type
which

Το man ανοίγει εγχειρίδιο λειτουργίας τής εντολής που βάζουμε ως όρισμα. πχ

man ls

ανοίγει το εγχειρίδιο τής ls.

Σχετικά με την λειτουργία τού φλοιού.

^D
^U
echo
clear
^L
history
printenv
env
alias
~/.bashrc

Σε αυτό το σημείο είναι ευκαιρία να αναφερθούν λίγα ακόμα συντακτικά τού φλοιού. Η echo (ηχώ) είναι χρήσιμη για αυτό.

Εισαγωγικά

Αν για παράδειγμα δώσουμε την εντολή

echo δύο    λέξεις

ο φλοιός θα δει τα κενά μονάχα σαν διαχωριστικό ορισμάτων. Για να έχουμε τα κενά μέσα σε ένα όρισμα ο απλούστερος τρόπος είναι

echo “ένα    όρισμα”

Μπαλαντέρ

Ο κυριότερος και χρησιμότερος είναι ο αστερίσκος. Παίζει τον ρόλο οποιασδήποτε σειράς συμβόλων ακόμα και μη ύπαρξης συμβόλου. πχ

echo D*

αναπτήσει σε όλα τα ονόματα αρχείων και φακέλων που αρχίζουν από D.

Αντιπλαγία

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

echo \

δεν θα εκτελέσει την εντολή αλλά θα δει το Enter απλά σαν αλλαγή γραμμής, ενώ

echo \\

θα δει την δεύτερη αντιπλαγία απλά ως αντιπλαγία.

Πλοήγηση στούς φακέλους

cd
pwd
ls

Διαδρομές

Ο φλοιός ψάχνει τα εκτελέσιμα προγράμματα στην μεταβλητή PATH

echo $PATH
  • Το $ δείχνει συντακτικά στον φλοιό ότι αναφερόμαστε σε μεταβλητή. Τα «διπλά εισαγωγικά» " σέβονται αυτήν την λειτουργία. Τα «απλά εισαγωγικά» (απόστροφος) ' και η αντιπλαγία \ δεν την σέβονται.

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

./πρόγραμμα

καθώς το ./ δηλώνει τον τρέχοντα φάκελο.

Διαχείριση αρχείων και φακέλων

mkdir
rmdir
cp
mv
rm
du
ncdu
find
ln
  • Σημαντικές λεπτομέρειες για την rm. Προσοχή διαγράφει αρχεία :stuck_out_tongue: ) Αυτή είναι η δουλειάς της. Για την διαγραφή άδειων φακέλων είναι ασφαλέστερη η rmdir. Η rm διαγράφει φακέλους με την επιλογή -r. Επειδή η επιλογή αυτή αυξάνει την επικινδυνότητα λάθους είναι προτιμότερο να μπαίνει αφού είμαστε βέβαιοι ότι έχουμε γράψει σωστά την διαδρομή. Η χρήση μπαλαντέρ είναι επίσης επικίνδυνη. Αν θέλουμε να χρησιμοποιήσουμε μπαλαντέρ είναι λίγο ασφαλέστερο να γράφουμε πρώτα το όρισμα σε μια άκακη εντολή (πχ ls)

Ανάγνωση κειμένου

less
cat
grep
head
tail
sort
wc

Οι εντολές αυτές συνδυάζονται εξαιρετικά με ένα ακόμα χαρακτηριστικό τού φλοιού, τον σωλήνα (κάθετη γραμμή |). Η Λειτουργία του είναι να δίνει την έξοδο τής εντολής αριστερά του ως είσοδο στην εντολή δεξιά του. πχ

ls -lha|less

θα κάνει ευκολότερη την ανάγνωση με την χρήση τής less.

Διαχείριση συστήματος

inxi
uname
poweroff
reboot
systemctl
lspci
lsusb
lsblk
lscpu
free
cal
date
df
sensors
tty
uptime
mount
umount
fdisk
parted
dd
/etc/fstab
grub-mkconfig
/boot/grub/grub.cfg

Διαχείριση λογισμικού (Debian)

apt

Διαχείριση λογισμικού (Arch)

pacman
yay

Διαχείριση εργασιών

top
htop
ps
kill
killall
^C
^Z
jobs
bg
fg

Διαχείριση χρηστών και αδειών

sudo
su
id
groups
who
w
useradd
groupadd
passwd
chown
chmod

Δίκτυο

ip
ping
ssh
sftp
/etc/hosts

Διάφορα προγράμματα

nano
file
tar
unzip
unrar
iconv
convert
ffmpeg
rsync
wget
sha256sum
git
sed
awk
vi
perl
python
ipython
gcc
ddrescue
watch
screen
rtorrent
fortune
zbarimg
catimg
cowsay
octave
gnuplot

και λίγο γραφικό περιβάλλον

gparted
setxkbmap
geany
wine
thunar
dolphin
okular
mcomix
vlc
gwenview
6 Likes

Ένας πολύ καλύτερος τρόπος είναι με χρήση του Markdown (και γενικά αν κάτι μπορούμε να το κάνουμε με Markdown θα πρέπει να το επιλέγουμε)

``` bash
!#/bin/bash
echo "Hello"

και θα εμφανιστεί σαν

!#/bin/bash
echo "Hello"

το bash είναι περιτό και θα αλλάξει απλά τα χρώματα. Το σύστημα γνωρίζει για πολλές γλώσσες προγραματισμού.

Ένας άλλος τρόπος είναι να ξεκινήσει μια παράγραφος με περισσότερα απο 4 κενά κάπως έτσι

ls

και υπάρχουν και κάποια χρήσιμα emoji :terminal:, :computer_mouse:,:rmouse: ,:bash:, :keyboard:

:terminal:, :computer_mouse:, :rmouse:, :bash:, :keyboard:
1 Like

προφανώς δεν το είχα γράψει για εδώ :stuck_out_tongue:

ποιους markdown editors προτεινετε μια και το εφερε η κουβεντα;
προσωπικα βρισκω πολυ καλο τον typora αλλά ισως να προτιμουσα καποιον που να υπαρχει ηδη στα αποθετηρια… (και που μπορει να μην εχω προσεξει ή εκτιμησει οπως θα επρεπε)
αν θεωρειται offtopic τοτε ακυρο…

Προσωπικά έχω βρει το Retext (Retext on Github), που είναι διαθέσιμο στα αποθετήρια του Ubuntu και του Debian νομίζω.

Για Markdown? Typora: https://typora.io/#linux

Καθαρος και απλος Editor. Δοκιμασε τον και πες μας πως σου φαινεται

1 Like

θα τον δοκιμασω, ευχαριστω. Αν και μου φαινεται τον ειχα ξαναδοκιμασει παλιοτερα και εχανε πολυ συγκριτικα με τον typora

ναι αυτος λεω παραπανω οτι μου αρεσει, πραγματικα πολυ βολικος, απλα θα ηταν χρησιμο να υπαρχει καλη επιλογη και κατευθειαν απο τα αποθετηρια

edit
ενταξει και με τον retext μπορεις να κανεις δουλεια. Καλος αλλά σαν δευτερη επιλογη θα ελεγα

1 Like

Έχω ολοκληρώσει την μεταφορά :slight_smile:

Για σχόλια/απορίες πάνω στο κείμενο απαντάτε ελεύθερα.

Επίσης ρίξτε ελεύθερα φωτογραφίες από τερματικά :stuck_out_tongue:

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

2 Likes