Δημοσιεύτηκε: 29 Αύγ 2011, 09:18
από lucinos
Σε αυτό το σημείο έχω γράψει όλα όσα σκόπευα να γράψω όταν ξεκίνησα. Αυτό το κείμενο δεν είναι ένα εγχειρίδιο ή οδηγός το οποίο ψάχνει κάποιος για να κάνει μια δουλειά. Είναι ένα κείμενο το οποίο διαβάζει κάποιος μια φορά, αν το θέλει και μια δεύτερη, το διαβάζει από την αρχή ως το τέλος και όχι αποσπασματικά, διδάσκεται, και πιθανότατα δεν χρειάζεται να ξαναεπιστρέψει ποτέ.

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

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

Υπάρχουν λίγες περιπτώσεις όπου μπορεί να μην ισχύει η πρώτη ιδέα που έρχεται στο μυαλό κάποιου. Θα αναφέρω εδώ μια περίπτωση.
Υπάρχουν κάποιοι ειδικοί χαρακτήρες όπως το Tab και η νέα γραμμή. Τι γίνεται αν θέλουμε να τα αναπαράγουμε μέσω τής echo; Συνήθως η νέα γραμμή συμβολίζεται με \n και αυτό ισχύει και στην echo όπως μπορείτε να δείτε στο εγχειρίδιο. Κατ αρχήν είναι προεπιλεγμένο η echo να τα αγνοεί. Όμως ούτε το παρακάτω θα δουλέψει:
Κώδικας: Επιλογή όλων

echo -e dyo\nseires

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

echo -e dyo\\nseires
echo -e "dyo\nseires"
echo -e 'dyo\nseires'

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

Μια ενδιαφέρουσα περίπτωση. Η παρακάτω "ακατανόητη" εντολή είναι μια "fork bomb". Μην την τρέξετε!
Κώδικας: Επιλογή όλων

:(){ :|:& };:

Για περισσότερες εξηγήσεις πηγαίνετε στο άρθρο τής Βικιπαίδειας.

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

Το κείμενο αυτό δεν προσφέρει πλήρη γνώση, δεν θα μπορούσε να την προσφέρει και ούτε θέλει να την προσφέρει. Δίνει απλώς μια αρχή για τούς αρχάριους ή όσα θα ήθελε να ξέρει κάποιος που δεν θέλει να ασχοληθεί περισσότερο. Δυο βιβλία που είχα υπόψιν μου είναι το "The Linux Command Line" και το "Linux CookBook" (δεν ισχυρίζομαι ότι τα έχω διαβάσει ολόκληρα). Το πρώτο είναι ίσως όττι πιο κοντινό σε αυτό που κάνω αλλά εγώ ήθελα κάτι σαφώς πιο σύντομο καθώς και να βάλω την δική μου λογική, και όχι να μεταφράσω ένα αγγλικό βιβλίο.

Υπάρχουν αρκετά πολύ ενδιαφέροντα θέματα τα οποία δεν ανέπτυξα. Για παράδειγμα δεν ανέφερα καθόλου τούς άλλους φλοιούς (πχ csh, zsh) πέρα από το bash. Ή για παράδειγμα δεν έχω αναπτύξει επαρκώς σχεδόν οττιδήποτε. Εγώ μπορεί να θεωρώ ότι ολοκλήρωσα και πιθανότατα δεν πρόκειται να επιστρέψω για να γράψω τρίτο κεφάλαιο αλλά όποιος θέλει μπορεί να συνεχίσει από εκεί που σταμάτησα σαν τρίτο κεφάλαιο. Μόνο που πιστεύω ότι θα είναι μάλλον καλύτερα να ανοίξει νέο θέμα. Το κυριότερο που εγώ θα ήθελα να προσθέσω είναι βιβλιογραφία και συνδέσμους. Προτείνετέ μου να βάλω! (Δεν θέλω να χαλάσω την ροή με συνδέσμους αλλά πχ καλοί οδηγοί για τα προγράμματα στην ενότητα 2.1 ή γενικότεροι σύνδεσμοι στο τέλος μαζί με την βιβλιογραφία θα ήταν ωραίο).

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

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