What's new

Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

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

lucinos

Death Knight
Joined
Nov 16, 2015
Messages
2,770
Λέω να εγκαινιάσω αυτόν τον τομέα, με ένα θέμα εξωφρενικά παρεξηγημένο.<br><br><span style="font-size:14pt">Τι είναι η γραμμή εντολών;<br></span><br>Ουσιαστικά δεν είναι τίποτα άλλο από ένας εναλλακτικός τρόπος να τρέχουμε προγράμματα στον υπολογιστή. Αντί για κλικάρισμα σε εικονίδια ή άλλους γραφικούς τρόπους, στην γραμμή εντολών πληκτρολογούμε το όνομα τού προγράμματος που θέλουμε να τρέξουμε.<br><br>Για παράδειγμα αν θέλουμε να τρέξουμε τον VLC, στην γραμμή εντολών αρκεί να γράψουμε <b>vlc</b> και να πατήσουμε <i>Enter</i>.<br>Σε πρώτο επίπεδο η γραμμή εντολών δεν είναι τίποτα περισσότερο και τίποτα λιγότερο!<br><br><span style="font-size:14pt">Πώς ανοίγουμε την γραμμή εντολών;<br></span><br>Ο συνηθέστερος τρόπος σήμερα είναι μέσω ενός εξομοιωτή τερματικού (terminal emulator). Ο εξομοιωτής τερματικού είναι απλώς μια εφαρμογή τού γραφικού περιβάλλοντος. Υπάρχουν αρκετές εφαρμογές για αυτήν την δουλειά. Στο KDE συνηθίζεται το <b>konsole</b>, στο GNOME συνηθίζεται το <b>gnome-terminal</b> στο Xfce συνηθίζεται το <b>xfce4-terminal</b> και υπάρχουν και αμέτρητα άλλα.<br><br>Ένας άλλος τρόπος είναι το εικονικό τερματικό (virtual terminal). Στις περισσότερες διανομές λίνουξ μπορεί κάποιος να εισέλθει στο αντίστοιχο <i>tty</i> με έναν συνδυασμό <i>Ctrl+Alt+F<u>x</u></i>. Από εικονικό τερματικό πρέπει να γίνει ξεχωριστή είσοδος χρήστη (login) και δεν μπορούν να τρέξουν γραφικές εφαρμογές καθώς δεν έχουν παραθυρικό σύστημα να πατήσουν.<br><br><span style="font-size:14pt">Γιατί να χρησιμοποιήσει κάποιος γραμμή εντολών;</span><br><br>Προφανώς το γραφικό περιβάλλον είναι δικαίως ο συνήθης και εύκολος τρόπος χρήσης τού υπολογιστή αλλά υπάρχουν διάφοροι λόγοι που καθιστούν την γραμμή εντολών ένα πανίσχυρο εργαλείο.<br><br>α) ακρίβεια<br>Αυτό είναι ιδιαίτερα σημαντικό για παράδειγμα στις οδηγίες που θέλουμε να δώσουμε σε κάποιον. Είναι πολύ απλούστερο και ακριβέστερο να πούμε, «δώσε αυτήν την εντολή», παρά να επιχειρούμε να περιγράψουμε ενέργειες στο γραφικό περιβάλλον.<br><br>β) αμεσότητα<br>Σε κάποιον που ξέρει τι κάνει είναι συχνά πολύ πιο γρήγορο να το δίνει ως εντολή παρά να κάνει δρομολόγια με το ποντίκι ψάχνοντας τα εικονίδια και τα μενού.<br><br>γ) εκφραστικότητα<br>Οι εντολές δεν είναι απλώς στοιχειώδεις λέξεις αλλά μπορούν να συνδυαστούν ως γλώσσα. Οι δυνατότητες μιας γλώσσας είναι απείρως μεγαλύτερες από τα κλικ τού ποντικιού.<br><br>δ) οικονομία<br>Οι εντολές είναι απλώς σειρές απλών χαρακτήρων (ένας ASCII χαρακτήρας πιάνει μοναχά ένα byte). Το γραφικό περιβάλλον είναι τάξεις μεγέθους ακριβότερο σε πόρους. Σήμερα βέβαια με υπολογιστές που τρέχουν σε GHz, με μνήμες σε GB και γρήγορο δίκτυο έχουμε πλέον την άνεση να σπαταλάμε πόρους αλλά σε κάποιες περιπτώσεις μπορεί πάντα η γραμμή εντολών να είναι αποδοτικότερη.<br><br>ε) κακοτυχία<br>Στο γραφικό περιβάλλον παίζουν πάντα πολύ περισσότεροι παράγοντες που μπορούν να στραβώσουν. Η γραμμή εντολών δίνει πρόσβαση στο σύστημα και απαιτούνται μόνο τα εντελώς στοιχειώδη.<br><br>ς) Περισσότερες πληροφορίες<br>Οι εφαρμογές τυπώνουν στην γραμμή εντολών πληροφορίες που μπορεί να είναι χρήσιμες για παράδειγμα σε περίπτωση σφάλματος. <br><br>Επίσης κάποιες δυνατότητες μπορεί να μην είναι εκτεθειμένες στα μενού τού γραφικού περιβάλλοντος. Δείτε για παράδειγμα το χάος τών επιλογών τού VLC<br><br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>vlc --longhelp --advanced<br>

<br><br><span style="font-size:14pt">Πώς παρουσιάζουμε κώδικα από την γραμμή εντολών στα φόρουμ;</span><br><br>Κατ&#039; αρχήν δεν χρησιμοποιούμε εικόνες τού τερματικού για να τις δείξουμε στα φόρουμ. Το όλο νόημα τής γραμμής εντολών είναι ότι γενικά μόνο το κείμενο έχει σημασία και αυτό πρέπει να δώσει κάποιος και μόνο αυτό. <br><br>Αλλά δεν είναι καλό πάλι να ρίξουμε ακριβώς «χύμα» τον κώδικα γιατί τα φόρουμ χαλάνε την σταθερού μήκους (monospace) μορφοποίηση τού κώδικα. Το σωστό είναι η χρήση τού https://en.wikipedia.org/wiki/BBCode" class="bbcode_url">BBCode <b>code</b> που υπάρχει σε όλα σχεδόν τα φόρουμ για αυτόν τον σκοπό. Στα εικονίδια συνήθως πάνω από το κείμενο συχνά συμβολίζεται <b>#</b><br><br><span style="font-size:14pt">Τι σημαίνει γνώση γραμμής εντολών;</span><br><br>Νομίζω την ιδέα τής γραμμής εντολών την εξήγησα ήδη! Ωστόσο όταν μιλάμε για γνώση γραμμής εντολών στην πραγματικότητα εννοούμε επιπλέον τα παρακάτω:<br><br>α) γνώση τού «φλοιού»<br><br>β) γνώση προγραμμάτων που εκτελούνται χωρίς ανάγκη γραφικού περιβάλλοντος<br><br>γ) γνώση χαρακτηριστικών τού συστήματος<br><br><span style="font-size:14pt">Τι είναι ο φλοιός (shell);</span><br><br>Φλοιός λέγεται το πρόγραμμα που διαβάζει τις εντολές που δίνουμε και τις αναλύει συντακτικά. Όταν για παράδειγμα δίνουμε την εντολή:<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>vlc<br>

<br>Ο φλοιός θα το διαβάσει και θα καταλάβει ότι θέλουμε να τρέξουμε τον VLC.<br><br>Ο κυρίαρχος φλοιός στο λίνουξ (αλλά και σε άλλα συστήματα) είναι ο <b>bash</b>. Όσα ακολουθήσουν αναφέρονται στον bash.<br><br>άδεια: https://creativecommons.org/licenses/by-nc-nd/4.0/" class="bbcode_url">CC BY-NC-ND
 

lucinos

Death Knight
Joined
Nov 16, 2015
Messages
2,770
<span style="font-size:14pt">Βασικά χαρακτηριστικά εμφάνισης και σύνταξη τού φλοιού.</span><br><br>Όπως και σε κάθε κειμενογράφο, το τερματικό υποδεικνύει το σημείο που γράφουμε με τον «δρομέα». Ο φλοιός επιπλέον δείχνει ότι περιμένει εντολή μας με κάποιο χαρακτηριστικό σύμβολο, τον προτροπέα. Ο συνηθέστερος προτροπέας στο Bash είναι το <b>$</b>. Άλλα σύμβολα που χρησιμοποιούνται ως προτροπείς είναι τα > % ενώ ιδαίτερη σημασία έχει το <b>#</b> καθώς υποδεικνύει ότι έχουμε δικαιώματα υπερχρήστη, δηλαδή να πειράξουμε το σύστημα.<br><br>Η προτροπή επίσης συνήθως τυπώνει και μερικές χρήσιμες πληροφορίες ακόμα, πριν τον προτροπέα. Συνηθίζεται το όνομα τού χρήστη-παπάκι-το όνομα τού υπολογιστή, και ο τρέχων φάκελος. Η περισπωμένη <b>~</b> είναι σύντμηση για τον προσωπικό φάκελο τού χρήστη.<br><br><span class="bbcode_spoiler"><br><img src="https://upload.wikimedia.org/wikipedia/commons/e/e6/GNOME_Terminal_3.12.png" alt="GNOME_Terminal_3.12.png" class="bbcode_img" /><br></span><br><br>Η σύνταξη μιας απλής εντολής είναι το όνομα τού προγράμματος και ακολουθούν ορίσματα που θα δοθούν ως παράμετροι στο πρόγραμμα. Τα ορίσματα χωρίζονται μεταξύ τους με κενά. <br><br><br><span style="font-size:14pt">Πληροφορίες συστήματος</span><br>Ένα χρήσιμο πρόγραμμα, σχετικά καινούργιο (δεν υπάρχει σε παλιές διανομές) που εμφανίζει συγκεντρωμένες πληροφορίες για το σύστημα είναι το inxi<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>inxi -F<br>

<br><br><span class="bbcode_spoiler"><br>Οι επιλογές στα προγράμματα συχνά ακολουθούν την σύμβαση GNU. Υποδεικνύονται από μία παύλα αν είναι μονογράμματες και από δύο παύλες αν είναι λέξεις, όπως στο παράδειγμα με τον VLC πιο πάνω. Επίσης οι μονογράμματες επιλογές μπορούν να συγκεντρωθούν σε ένα μόνο όρισμα. Για παράδειγμα η εντολή <br></span>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>inxi -SCG

<br>δείχνει τις αντίστοιχες πληροφορίες.<br><br>Αυτό είναι μονάχα <u>σύμβαση</u> και συνηθίζεται σε πάρα πολλά προγράμματα, αλλά δεν είναι συντακτικό χαρακτηριστικό τού φλοιού<br><br><br><span style="font-size:14pt"><b>Ctrl-C</b></span><br>Είναι νομίζω ο σημαντικότερος συνδυασμός πλήκτρων και ένας επιπλέον λόγος είναι ότι ΟΧΙ δεν σημαίνει αντιγραφή κειμένου! Σκοτώνει την όποια διεργασία τρέχει. Ας χρησιμοποιήσουμε πάλι το παράδειγμα τού VLC. Τρέχουμε:<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>vlc<br>

<br>και ανοίγει σε νέο παράθυρο ο VLC. Επιστρέψτε στο τερματικό και θα δείτε ότι περιμένει τον VLC που τρέχει (τυπώνοντας και πράγματα που στέλνει ο VLC) χωρίς προτροπή. Με τον συνδυασμό <b>Ctrl-C</b> ο VLC θα κλείσει και ο φλοιός θα μάς προτρέψει ξανά για νέα εντολή.<br><br><span class="bbcode_spoiler"><br>Ο συνδυασμός αυτός είναι πολύ παλιός (Unix) και παλιότερος από την χρήση για την αντιγραφή κειμένου (microsoft). Αν θέλετε να αντιγράψετε κείμενο και χρησιμοποιείτε τερματικό προφανώς πρέπει να τον αποφύγετε και το απλούστερο είναι να χρησιμοποιήσετε μόνο το ποντίκι. Προσθέτω ότι ο παραδοσιακός "Unix" τρόπος αντιγραφής κειμένου με το ποντίκι, είναι με το μεσαίο κλικ. (στα σύγχρονα ποντίκια, η ροδέλα είναι ταυτόχρονα και το μεσαίο κλικ) <br></span><br><br><span style="font-size:14pt">Πλοήγηση στούς φακέλους</span><br>Είναι νομίζω η σημαντικότερη δεξιότητα στην γραμμή εντολών και στην πραγματικότητα σε μεγάλο βαθμό συνδέεται με την στοιχειώδη κατανόηση τού συστήματος. Οι φάκελοι είναι απλώς ένα σύστημα δενδροειδούς κατηγοριοποίησης τών αρχείων στον υπολογιστή. Κάθε αρχείο θεωρείται ότι τον περιέχει κάποιος φάκελος και οι φάκελοι επίσης περιέχονται σε άλλους φακέλους. <br><br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>ls<br>

<br>Δείχνει τα περιεχόμενα τού τρέχοντος φακέλου.<br><br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>ls φάκελος<br>

<br>Δείχνει τα περιεχόμενα ενός φακέλου.<br><br>Μπορούμε να αλλάξουμε τρέχοντα φάκελο με την εντολή<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>cd φάκελος<br>

<br><br><span style="font-size:14pt">Συντακτικό συστήματος αρχείων</span><br>Στο λίνουξ, τα ονόματα τών αρχείων μπορούν να περιέχουν οποιοδήποτε σύμβολο με εξαίρεση το <b>/</b> (πλαγία). Η πλαγία χρησιμοποιείται ως διαχωριστικό φακέλων. Για παράδειγμα η έκφραση <b>φακέλου/αρχείο</b> σημαίνει αρχείο εντός τού φακέλου και αντίστοιχα <b>φακέλου/φάκελος/</b> σημαίνει φάκελος εντός φακέλου. Η τελευταία πλαγία είναι προαιρετική, την έβαλα στο παράδειγμα ως συντακτική δυνατότητα που επιπλέον εξασφαλίζει ότι ο φάκελος μπορεί να είναι μόνο φάκελος.<br><br>Εκτός από την χρήση τής πλαγίας, απαγορευμένα είναι επίσης τα ονόματα <b>.</b> (τελεία) και <b>..</b> (δύο τελείες). Αυτά είναι επιφορτισμένα να σημαίνουν τον τρέχοντα φάκελο και τον γονικό τού τρέχοντος φάκελο αντιστοίχως. Ειδικά το δεύτερο είναι πολύ σημαντικό στην πλοήγηση στούς φακέλους.<br><br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>cd ..<br>

<br>Η παραπάνω εντολή ανεβαίνει κατά έναν φάκελο στην ιεραρχία.<br><br>Η τελεία και οι δύο τελείες είναι ουσιαστικά σύνδεσμοι και έτσι εκφράσεις όπως <b>../../</b> είναι απολύτως έγκυρες (η συγκεκριμένη σημαίνει δύο φακέλους πάνω στην ιεραρχία)<br><br><span style="font-size:14pt">«καλά» ονόματα αρχείων</span><br>Εκτός από τούς παραπάνω συντακτικούς περιορισμούς κάποια σύμβολα μπορεί να επιτρέπονται, ωστόσο δημιουργούν περιπλοκές. Θα δούμε αργότερα πώς ξεπερνιούνται αλλά προς το παρών αναφέρω ότι «καλά» ονόματα αρχείων περιέχουν μόνο λατινικά γράμματα, αραβικούς αριθμούς και την _ (κάτω παύλα). Επίσης το λίνουξ διακρίνει τα πεζά από τα κεφαλαία (<b>Dog</b>, <b>DOG</b>, <b>dog</b> είναι διαφορετικά ονόματα). Ως επιπλέον σύμβαση «καλά» θεωρούνται τα πεζά.<br><br>Κάπως πιο ιδιαίτερο ρόλο παίζει η τελεία. Κατ&#039; αρχήν δεν έχει «ουσιαστική» σημασία στο σύστημα (σε αντίθεση πχ με την DOS). Είναι απλώς ένας χαρακτήρας σαν όλους τούς άλλους, αλλά<br><br>- όπως είπαμε απαγορεύονται τα ονόματα <b>.</b> και <b>..</b><br><br>- ονόματα που αρχίζουν από τελεία δεν εμφανίζονται από προεπιλογή (κρυφά κατά κάποιον τρόπο)<br><br>- η τελεία κατά σύμβαση χρησιμοποιείται για «καταλήξεις». Οι καταλήξεις αυτές έχουν μόνο συμβατική αξία για το είδος τών αρχείων. Το ίδιο το σύστημα αδιαφορεί. (και οπωσδήποτε δεν έχουν σχέση με το αν το αρχείο είναι εκτελέσιμο)<br><br>Για να δει κάποιος και τα κρυφά αρχεία, η εντολή είναι:<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>ls -a<br>

<br><br><span style="font-size:14pt">Αυτοσυμπλήρωση και ιστορικό</span><br>Η χρήση γραμμής εντολών, δεν σημαίνει καθόλου ότι είμαστε καταδικασμένοι σε κουραστική πληκτρολόγηση. <br><br>Ένα αρκετά συνηθισμένο είδος ορίσματος είναι τα ονόματα αρχείων (ή φακέλων). Για παράδειγμα:<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>vlc βίντεο<br>

<br>ανοίγει με τον VLC το βίντεο. Το βίντεο μπορεί να έχει μεγάλο όνομα αλλά δεν υπάρχει λόγος να το πληκτρολογήσουμε ολόκληρο. Αρκεί να γράψουμε το πρώτο γράμμα και να πατήσουμε <i>Tab</i>. Θα συμπληρωθεί το υπόλοιπο τού ονόματος. Αν υπάρχουν περισσότερα από ένα αρχεία, θα συμπληρώσει όσους χαρακτήρες είναι κοινοί διαφορετικά αν πατήσουμε δεύτερη φορά το <i>Tab</i> θα δείξει τα ενδεχόμενα. Αν οι επιλογές είναι πολλές, θα μάς ρωτήσει πριν τις τυπώσει στην οθόνη. Αυτό λέγεται αυτοσυμπλήρωση και χρησιμοποιείται κυρίως για αρχεία και φακέλους, μπορεί όμως να λειτουργεί και σε άλλες περιπτώσεις.<br><br>Ένα άλλο σημαντικό βοήθημα είναι η πλοήγηση στο ιστορικό. Ο πιο απλός τρόπος είναι με τα πάνω και κάτω βελάκια τα οποία εμφανίζουν τις εντολές που έχουμε δώσει στο παρελθόν.<br><br><span style="font-size:14pt">Άδειες</span><br>Η εντολή για τα πλήρη "unix" χαρακτηριστικά τών αρχείων και φακέλων είναι:<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>ls -l<br>

<br>κάθε γραμμή αφορά ένα αρχείο και ξεκινά με δέκα χαρακτήρες που αφορούν τις άδειες. Ο πρώτος, αφορά τον τύπο τού αρχείου όπως τον βλέπει το σύστημα. Παύλα σημαίνει κοινό αρχείο δηλαδή οποιοδήποτε είδους αρχείου όπως το καταλαβαίνει κανείς συνήθως , "d" (directory) σημαίνει φάκελος και υπάρχουν και άλλα είδη για παράδειγμα "l" (link) σημαίνει σύνδεσμος.<br><br>Οι επόμενοι τρεις χαρακτήρες αφορούν τα δικαιώματα τού ιδιοκτήτη χρήστη (<b>u</b>ser) μπορούν να είναι "r" (<b>r</b>ead), "w" (<b>w</b>rite), "<b>x</b>" (e<b>x</b>ecute) που σημαίνουν δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης αντιστοίχως ή αντιστοίχως παύλες που σημαίνει έλλειψη τού αντιστοίχου δικαιώματος. Οι επόμενοι τρεις χαρακτήρες είναι όμοιοι στην χρήση αλλά αφορούν την ομάδα (<b>g</b>roup) και οι επόμενοι τρεις επίσης όμοιοι αλλά αφορούν τούς υπολοίπους (<b>o</b>thers). Ακολουθεί ένας αριθμός και μετά ο χρήστης και η ομάδα που ανοίκει το αρχείο.<br><br>Αν κάποιος θέλει να κάνει ένα αρχείο σε εκτελέσιμο για τον χρήστη η εντολή είναι:<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>chmod u+x αρχείο<br>

<br>Για να αφαιρέσει δικαιώματα αντί για "+" έχουμε "-". Αν θέλουμε σε όλους όχι μόνο τον χρήστη μπορούμε να χρησιμοποιήσουμε "a" (<b>a</b>ll) ή και καθόλου σύμβολο.<br><span class="bbcode_spoiler"><br>Εναλλακτικά οι άδειες μπορούν να εκφραστούν στο οκταδικό σύστημα. (r=4, w=2, x=1, rwx=7 κλπ)<br><br>Μετά το όνομα τής ομάδας ακολουθεί το μέγεθος τού αρχείου. Παρατηρήστε ότι το μέγεθος τών φακέλων πιθανότατα είναι 4K (ή ακέραια πολλαπλάσια αν έχουν πολλά περιεχόμενα). Αυτό οφείλεται στον τρόπο που λειτουργεί το σύστημα αρχείων και στο γεγονός ότι η ls βλέπει τον φάκελο και όχι τα περιεχόμενά του και ο φάκελος πρακτικά για το σύστημα είναι ένα είδος αρχείου που περιλαμβάνει τα ονόματα τών αρχείων ή φακέλων που περιέχει ξέρει να τα δείξει στον δίσκο. Προσθέτω ότι ένα αρχείο δεν περιέχει το όνομα τού εαυτού του.<br><br>Αν κάποιος θέλει να βρει το συνολικό μέγεθος ενός φακέλου με όσα βρίσκονται κάτω από αυτόν ιεραρχικά η εντολή είναι <br></span>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>du -sh φάκελος<br>

<br><br><br><span style="font-size:14pt">Σύστημα ιεραρχίας φακέλων.</span><br>Στο λίνουξ τα πάντα είναι αρχεία που βρίσκονται σε ένα μοναδικό δένδρο φακέλων. Ο χρήστης όπως θα δούμε δεν το έχει «ανάγκη», ωστόσο είναι σημαντικό κανείς να το κατανοεί ως ιδέα.<br><br>Ως τώρα ο τρόπος που αναφέραμε τούς φακέλους ήταν με βάση τις σχετικές διαδρομές. Αν κάποιος θέλει να εξασφαλίσει συντακτικά ότι μια έκφραση αναφέρεται σε σχετική διαδρομή συνήθως χρησιμοποιείται η μορφή <b>./διαδρομή</b> <br><br>Υπάρχει όμως ένας φάκελος που λέγεται ριζικός και συμβολίζεται με την πλαγία <b>/</b> από τον οποίο πηγάζουν όλες οι διαδρομές προς όλα τα αρχεία. Όταν μια διαδρομή ξεκινάει με την πλαγία τότε γενικά θεωρείται ότι είναι η «απόλυτη» διαδρομή δηλαδή ξεκινάει από την ρίζα και είναι μια διαδρομή που εκφράζεται ανεξάρτητα από τον τρέχοντα φάκελο.<br><br>Η εντολή για να δούμε την διαδρομή τού τρέχοντος φακέλου είναι:<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>pwd<br>

<br><br>Όπως είναι φανερό, η εντολή:<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>ls /<br>

<br>μάς δείχνει τα περιεχόμενα τού ριζικού φακέλου.<br><br><span class="bbcode_spoiler"><br>Η ύπαρξη ριζικού φακέλου είναι στοιχειώδης στο λίνουξ. Τα περιεχόμενα είναι θέμα σύμβασης και όχι απόλυτος νόμος, αλλά γενικά οι συμβάσεις είναι πολύ ισχυρές και τις ακολουθούν πρακτικά όλες οι διανομές. Η σύμβαση αυτή λέγεται Filesystem Hierarchy Standard.<br><br><b>/home/</b><br>Εδώ βρίσκονται οι προσωπικοί φάκελοι τών χρηστών. Πχ ένας χρήστης <b>groo</b> τυπικά έχει προσωπικό φάκελο τον <b>/home/groo/</b> Στην πράξη κανείς όταν κάνει λογκίν από προεπιλογή βρίσκεται στον προσωπικό του φάκελο και επίσης για τις διαδρομές που σχετίζονται με τον προσωπικό φάκελο, χρησιμοποιείται η σύντμηση τής περισπωμένης που έχουμε αναφέρει, δηλαδή εκφράσεις <b>~/διαδρομή</b><br><br><b>/usr/</b><br>Εδώ βρίσκεται το εγκατεστημένο λογισμικό. Πολλοί φαίνεται να αναρωτιούνται πού βρίσκονται τα προγράμματα αλλά στην πραγματικότητα η διαχείριση λογισμικού γίνεται αποκλειστικά με εργαλεία διαχείρισης λογισμικού ακόμα και από την γραμμή εντολών.<br><br><b>/boot/</b><br>Εδώ βρίσκεται πολύ βασικό λογισμικό που αφορά την εκκίνηση τού συστήματος, χαρακτηριστικά εδώ βρίσκεται ο Linux πυρήνας.<br><br><b>/etc/</b><br>Εδώ βρίσκονται αρχεία ρυθμίσεων τού συστήματος. Εδώ είναι που βάζουμε χέρι στο σύστημα αλλά υπό συνήθεις συνθήκες το σύστημα το έχει ρυθμίσει αυτόματα η διανομή μας. Επίσης ρυθμίσεις που αφορούν τούς χρήστες βρίσκονται στούς αντίστοιχους προσωπικούς φακέλους και όχι εδώ.<br><br><b>/dev/</b><br>Εδώ βρίσκονται οι «συσκευές» που βλέπει το σύστημα. Όλες οι συσκευές (δίσκοι, πληκτρολόγιο, ήχος κλπ) αντιμετωπίζονται ενιαία στο λίνουξ σαν «αρχεία». Δεν είναι βέβαια «κοινά» αρχεία (δεν χαρακτηρίζονται από παύλα) αλλά ανάλογα με την λειτουργία τους χαρακτηρίζονται με το "c" (character, πχ πληκτρολόγιο) ή "b" (block, πχ δίσκος)<br><br>Οι δίσκοι ως συσκευές βρίσκονται στο <b>/dev/</b> αλλά για να δούμε τα αρχεία που περιέχουν θα πρέπει οι κατατμήσεις να προσαρτηθούν κάπου. Πχ το <b>/home/</b> μπορεί να δείχνει σε ξεχωριστή κατάτμηση.<br><br><b>/mnt/</b><br>Παραδοσιακά εδώ γίνονται οι χειροκίνητες προσωρινές προσαρτήσεις δίσκων (<b>mount</b>). Στην πράξη βέβαια δεν κάνουμε χειροκίνητα τέτοιες δουλειές οπότε δεν χρησιμοποιείται.<br><br><b>/media/</b><br>Παραδοσιακά εδώ γίνονταν οι αυτόματες προσαρτήσεις δίσκων. Η νέα μόδα τις κάνει κάπου μέσα στο <b>/run/</b> Ωστόσο στην πράξη δεν αφορά τούς χρήστες πού βρίσκονται καθώς σε εξωτερικά μέσα βάζει κάποιος ταινίες, μουσική, έγγραφα και γενικά πράγματα που θα τα ανοίξει συνήθως από το γραφικό περιβάλλον και όχι από την γραμμή εντολών και με τρόπο που δεν τον ενδιαφέρει η απόλυτη διαδρομή, αρκεί να έχει ένα αντίστοιχο εικονίδιο.<br><br><b>/run/</b><br>Εδώ βρίσκονται «αρχεία» που αφορούν την τρέχουσα κατάσταση τού συστήματος<br><br><b>/tmp/</b><br>Προσωρινά αρχεία.<br><br><b>/var/</b><br>Αρχεία που «μεταβάλλεται» το μέγεθός του. Πιο συχνά χρειάζεται γιατί εδώ είναι αρχεία καταγραφών (.log)<br><br><b>/bin/</b><br>Παραδοσιακά εδώ ήταν βασικά εκτελέσιμα προγράμματα, τώρα συνήθως είναι απλά σύνδεσμος στο <b>/usr/bin/</b><br><br><b>/lib/</b><br>Παραδοσιακά εδώ ήταν βασικές βιβλιοθήκες προγραμμάτων, τώρα συνήθως είναι απλά σύνδεσμος στο <b>/usr/lib/</b><br><br><b>/root/</b><br>Ο προσωπικός φάκελος τού ριζικού χρήστη.<br><br><b>/opt/</b><br>Εναλλακτική τοποθεσία για εγκατάσταση λογισμικού. Συχνά λογισμικό που δεν είναι άμεσα υποστηριζόμενο από την διανομή και δεν θέλουμε να μπερδευτεί μέσα στο <b>/usr/</b><br><br><b>/sys/</b><br>Περιέχει πληροφορίες για τις συνδεδεμένες συσκευές<br><br><b>/proc/</b><br>Περιέχει πληροφορίες για τις διεργασίες.<br></span><br><br><span style="font-size:14pt"><b>sudo</b></span><br>Τυπικά οι κοινοί χρήστες δεν έχουν δικαίωμα να πειράξουν το σύστημα. Αυτό είναι καλό γιατί προφανώς θέλουμε το σύστημα να είναι ασφαλές από τις συνήθεις ενέργειες τών χρηστών. Ωστόσο σε κάποιες περιπτώσεις πρέπει να γίνουν ενέργειες που αφορούν το σύστημα οπότε είναι αναγκαίο κάποιος ή κάποιοι να έχουν αυτήν την δυνατότητα. Τυπικά υπάρχει ένας ριζικός (root) χρήστης που έχει κάθε δικαίωμα πάνω στο σύστημα οπότε αν κάποιος κάνει είσοδο ως ριζικός μπορεί να κάνει τα πάντα. Συνήθως αυτό αποφεύγεται σήμερα και αντί για αυτό υπάρχουν τρόποι οι χρήστες να αναβαθμίσουν τα δικαιώματά τους. Φυσικά για να μπορούν να ασκήσουν αντίστοιχα δικαιώματα θα πρέπει να ανήκουν σε αντίστοιχες ομάδες.<br><br>Για παράδειγμα οι κοινοί χρήστες συνήθως δεν έχουν πρόσβαση στον προσωπικό φάκελο τού ριζικού χρήστη.<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>ls /root/<br>

<br>θα δώσει σφάλμα Permission denied.<br><br>αν έχουμε δικαιώματα sudo τότε με:<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>sudo ls /root/<br>

<br>αναβαθμίζουμε τα δικαιώματα τής εντολής μας. Απαιτείται όμως μεγαλύτερη υπευθυνότητα για αυτό το τυπικά απαιτείται να δώσουμε τον κωδικό μας. Προσοχή στην γραμμή εντολών (unix-linux) όταν δίνουμε κωδικούς δεν εμφανίζεται τίποτα, ούτε καν αστεράκια. (Αν νομίζεται ότι κάνατε κάποιο λάθος, μπορείτε να πατήσετε πολλές φορές Backspace και να ξαναγράψετε).<br>Σημείωση: συνήθως ο φάκελος /root/ είναι κενός.<br><br>άδεια: https://creativecommons.org/licenses/by-nc-nd/4.0/" class="bbcode_url">CC BY-NC-ND<br><br>(θα συνεχιστεί)<br>
 

lucinos

Death Knight
Joined
Nov 16, 2015
Messages
2,770
Σε γενικές γραμμές το τρίτο μέρος τελικά είναι απλώς λίστα διαφόρων εντολών με την λογική να λειτουργήσει σαν αφετηρία για περισσότερο ψάξιμο ή συζήτηση.<br><br>Το σύμβολο ^ σημαίνει συνδυασμό πλήκτρου με ctrl (πχ ^C σημαίνει ctrl με C)<br><br>Η όποια ύπαρξη πλαγίας υποδειλώνει διαδρομή αρχείου και όχι εντολή.<br><br>Αν θεωρώ κάποιες εντολές σημαντικότερες θα τούς βάλω έντονα γράμματα. <br><br>Η λίστα φυσικά δεν είναι πλήρης και ούτε σκοπεύει να είναι πλήρες και πάντα πιο σημαντικό από τις ίδιες τις εντολές είναι οι ιδέες στις οποίες αναφέρονται.<br><br>
<hr class="bbcode_rule" />
<br>Πληροφορίες για εντολές και προγράμματα.<br>
<hr class="bbcode_rule" />
<br><b>man</b><br>type<br>which<br><br>Το man ανοίγει εγχειρίδιο λειτουργίας τής εντολής που βάζουμε ως όρισμα. πχ<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>man ls<br>

<br>ανοίγει το εγχειρίδιο τής ls.<br><br>
<hr class="bbcode_rule" />
<br>Σχετικά με την λειτουργία τού φλοιού.<br>
<hr class="bbcode_rule" />
<br>^U<br>echo<br>clear<br>^L<br><b>history</b><br>printenv<br>env<br>alias<br>~/.bashrc<br><br>Σε αυτό το σημείο είναι ευκαιρία να αναφερθούν λίγα ακόμα συντακτικά τού φλοιού<br><br>Εισαγωγικά:<br>Αν για παράδειγμα δώσουμε την εντολή<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>echo δύο    λέξεις<br>

<br>ο φλοιός θα δει τα κενά μονάχα σαν διαχωριστικό ορισμάτων. Για να έχουμε τα κενά μέσα σε ένα όρισμα ο απλούστερος τρόπος είναι<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>echo "ένα    όρισμα"<br>

<br><br>Μπαλαντέρ:<br>Ο κυριότερος και χρησιμότερος είναι ο αστερίσκος. Παίζει τον ρόλο οποιασδήποτε σειράς συμβόλων ακόμα και μη ύπαρξης συμβόλου. πχ<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>echo D*<br>

<br>αναπτήσει σε όλα τα ονόματα αρχείων και φακέλων που αρχίζουν από D.<br><br>Αντιπλαγία:<br>Σημαίνει ότι το επόμενο σύμβολο δεν θα έχει την συνήθη για τον φλοιό αντιμετώπιση<br>για παράδειγμα<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>echo <br>

<br>δεν θα εκτελέσει την εντολή αλλά θα δει το Enter απλά σαν αλλαγή γραμμής, ενώ<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>echo \<br>

<br>θα δει την δεύτερη αντιπλαγία απλά ως αντιπλαγία.<br><br>
<hr class="bbcode_rule" />
<br>Πλοήγηση στούς φακέλους<br>
<hr class="bbcode_rule" />
<br><b>cd</b><br>pwd<br><b>ls</b><br><br>Ο φλοιός ψάχνει τα ονόματα εκτελέσιμων προγραμμάτων από την μεταβλητή PATH<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>echo $PATH<br>

<br>Αν θέλουμε να εκτελέσουμε ένα πρόγραμμα που βρίσκεται αλλού θα πρέπει να υπάρχει πλαγία στην διαδρομή. Όταν βρισκόμαστε στον σωστό φάκελο ο συνήθης τρόπος να τρέξουμε ένα πρόγραμμα είναι<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>./πρόγραμμα<br>

<br>καθώς το "./" δηλώνει τον τρέχοντα φάκελο.<br><br>
<hr class="bbcode_rule" />
<br>Διαχείριση αρχείων και φακέλων<br>
<hr class="bbcode_rule" />
<br><b>mkdir<br>rmdir<br>cp<br>mv<br>rm</b><br>du<br>ncdu<br><b>find</b><br>ln<br><br>Σημαντικές λεπτομέρειες για την rm. Προσοχή διαγράφει αρχεία <img src="/tongue.gif" width="" height="" alt=":p" title=":p" class="bbcode_smiley" /> Αυτή είναι η δουλειάς της. Για την διαγραφή άδειων φακέλων είναι ασφαλέστερη η rmdir. Η rm διαγράφει φακέλους με την επιλογή "-r". Επειδή η επιλογή αυτή αυξάνει την επικινδυνότητα λάθους είναι προτιμότερο να μπαίνει αφού είμαστε βέβαιοι ότι έχουμε γράψει σωστά την διαδρομή. Η χρήση μπαλαντέρ είναι επίσης επικίνδυνη. Αν θέλουμε να χρησιμοποιήσουμε μπαλαντέρ είναι λίγο ασφαλέστερο να γράφουμε πρώτα το όρισμα σε μια άκακη εντολή (πχ ls)<br><br>
<hr class="bbcode_rule" />
<br>Ανάγνωση κειμένου<br>
<hr class="bbcode_rule" />
<br><b>less</b><br>cat<br>grep<br>head<br>tail<br>sort<br>wc<br><br>Οι εντολές αυτές συνδυάζονται εξαιρετικά με ένα ακόμα χαρακτηριστικό τού φλοιού, τον σωλήνα (κάθετη γραμμή "|"). Η Λειτουργία του είναι να δίνει την έξοδο τής εντολής αριστερά του ως είσοδο στην εντολή δεξιά του. πχ<br>
<div class="bbcode_code">
<div class="bbcode_code_head">Code:
<div class="bbcode_code_body" style="white-space:pre"><br>ls -lha|less<br>

<br>θα κάνει ευκολότερη την ανάγνωση με την χρήση τής less.<br><br>
<hr class="bbcode_rule" />
<br>Διαχείριση συστήματος<br>
<hr class="bbcode_rule" />
<br><b>inxi</b><br>uname<br><b>poweroff</b><br>reboot<br>systemctl<br>lspci<br>lsusb<br><b>lsblk</b><br>lscpu<br><b>free</b><br>cal<br><b>date</b><br><b>df</b><br>sensors<br>tty<br>uptime<br>mount<br>umount<br>fdisk<br>parted<br>dd<br>/etc/fstab<br>grub-mkconfig<br>/boot/grub/grub.cfg<br><br>
<hr class="bbcode_rule" />
<br>Διαχείριση λογισμικού (Debian)<br><b>apt</b><br><br>Διαχείριση λογισμικού (Arch)<br><b>pacman</b><br>yaourt<br><br>
<hr class="bbcode_rule" />
<br>Διαχείριση εργασιών<br>
<hr class="bbcode_rule" />
<br><b>top</b><br>htop<br><b>ps</b><br><b>kill</b><br>killall<br><b>^C</b><br>^Z<br>jobs<br>bg<br>fg<br><br>
<hr class="bbcode_rule" />
<br>Διαχείριση χρηστών και αδειών<br>
<hr class="bbcode_rule" />
<br><b>sudo</b><br><b>su</b><br>id<br>groups<br>who<br>w<br>useradd<br>groupadd<br>passwd<br>chown<br><b>chmod</b><br><br>
<hr class="bbcode_rule" />
<br>Εντολές Δικτύου<br>
<hr class="bbcode_rule" />
<br><b>ip</b><br><b>ping</b><br>ssh<br>sftp<br>/etc/hosts<br><br>
<hr class="bbcode_rule" />
<br>Διάφορα προγράμματα<br>
<hr class="bbcode_rule" />
<br><b>nano</b><br>file<br><b>tar</b><br>unzip<br>unrar<br>iconv<br>convert<br>ffmpeg<br>rsync<br>wget<br>sha256sum<br>git<br>sed<br>awk<br>vi<br>python<br>ipython<br>gcc<br>ddrescue<br>watch<br>screen<br>rtorrent<br>fortune<br>cowsay<br>octave<br>gnuplot<br><br><b>gparted</b><br>setxkbmap<br><b>geany</b><br>wine<br>thunar<br>dolphin<br>okular<br>mcomix<br>vlc<br>gwenview<br><br>
 

Tony Corvus

Ancient Red Dragon
Φασαίος Larianός Τσοβόλα δώστα όλα Sign me up! Approval of the Admiral
Joined
Dec 1, 2012
Messages
11,449
sudo apt-get linux thread  <img src="/bigsmile.gif" width="" height="" alt=":D" title=":D" class="bbcode_smiley" />
 

lucinos

Death Knight
Joined
Nov 16, 2015
Messages
2,770
Σημείωση σχετικά με την διάρθρωση τής ύλης. <br><br>Λογικά θα έχει ήδη φανεί, αλλά η ιδέα μου είναι στο πρώτο μέρος να αναφέρω μόνο εντελώς γενικές ιδέες, στο δεύτερο μέρος πού προφανώς είναι εκτενέστερο να μπω στα πολύ βασικά χαρακτηριστικά τού φλοιού αλλά κυρίως τού συστήματος συμπεριλαμβανομένων και τών αδειών αν και συνήθως θεωρείται πιο προηγμένο θέμα και στο τρίτο μέρος που λογικά θα βγει ακόμα εκτενέστερο, θα γράψω για περισσότερες εντολές και κάποια χαρακτηριστικά τού φλοιού και ίσως πιο ιδιαίτερα χαρακτηριστικά τού συστήματος. (το chmod κακώς το έβαλα στο δεύτερο μέρος, θα πάει στο τρίτο)
 

Norshgaath

Mind-flayer
Approval of the Admiral
Joined
Aug 3, 2023
Messages
1,992
Φοβερή υλοποίηση εκμάθησης της γραμμής εντολών


Ο κύριος λόγος για να μάθει κανείς τη γραμμή εντολών ειναι γιατι αποτελεί έναν από τους πιο αποτελεσματικούς τρόπους για να ολοκληρώνονται προσωρινές προχειροδουλειές και σκριπτάκια on-the-fly.

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

Δεν έχει και τόση πολύ σημασία τι είδος γραμμής εντολών χρησιμοποιεί κανείς (αν και το bash είναι εξαιρετικό για προφανείς λόγους), όσο η ικανότητα να συνδέει διαφορετικές, ανόμοιες εντολές μεταξύ τους μέσω pipes.


Εδω περισσότερο σχετικο υλικό για μάθηση
 

Χειρομαλάχτης

Death Knight
Approval of the Admiral Fighting stocism with stoicism
Joined
Nov 24, 2019
Messages
3,647
ή "τοσο πολυ σημασια" (κατι σαν προφορικος λογος)
ή "τοση πολλή σημασία".
 
Top Bottom