Τα στοιχειώδη - Μέρος δεύτερο

...ασύγχρονα μαθήματα Τερματικού

Τα στοιχειώδη - Μέρος δεύτερο

Δημοσίευσηαπό lucinos » 30 Αύγ 2011, 23:09

Μέρος πρώτο
Spoiler: show
0. Εισαγωγή
* Γιατί να χρησιμοποιήσετε γραμμή εντολών
1. Πρώτα βήματα
* Μπείτε στην γραμμή εντολών και μάθετε τα πραγματικά βασικά.
2. RTFM
* Περισσότερη εξοικείωση, μάθετε να διαβάζετε το εγχειρίδιο.
3. Το τερματικό στο γραφικό περιβάλλον
* Χρησιμοποιήστε γραμμή εντολών μέσα στο γραφικό περιβάλλον.
4. Αυτοσυμπλήρωση
* Πρώτα βήματα στο σύστημα αρχείων, χρησιμοποιήστε αυτοσυμπλήρωση
5. Το ιστορικό
* Πλοηγηθείτε στο ιστορικό, ολίγα για τις ονομασίες αρχείων

Μέρος δεύτερο
Spoiler: show
1. Το δέντρο από την ρίζα
* Περισσότερες διαδρομές και ο ριζικός φάκελος
2. sudo φτιάξε έναν καφέ
* Η sudo και η gksudo
3.Σωλήνες και λίγες χρήσιμες εντολές
* "Διασωληνώστε" εντολές, διαχειριστείτε αρχεία και διαβάστε απλά κείμενα.
4.Μπαλαντέρ
* Ολίγα για τούς μεταχαρακτήρες.
5.Hχώ και τρόποι διαφυγής
* Δείτε την ηχώ σας και ξεπεράστε τούς χαρακτήρες-εμπόδια
6.Ψάξε-ψάξε κάτι θα βρεις
* Περισσότερα εγχειρίδια και εντοπισμός εντολών.

Μέρος τρίτο
Spoiler: show
1. Σημαντικά προγράμματα σε γραμμή εντολών
* Μερικά διαμάντια τής γραμμής εντολών.
2. Ανακατευθύνσεις
* Περισσότερα για την είσοδο και την έξοδο
3. Ψευδώνυμα
* Δημιουργείστε δικές σας εντολές
4.Λεξιγνωσία
* Γιατί το λέμε τερματικό;
5.Σκριπτάκια
* Δημιουργήστε το πρώτο σας εκτελέσιμο σε bash
6.Άδειες αρχείων
* Λίγο περισσότερα για τις άδειες
7.Διαχείριση εργασιών
* kill bill

****************************************************

Στο πρώτο μέρος καταφέραμε πάνω από όλα να μπούμε στην γραμμή εντολών. Είδαμε την βασική λογική της που είναι η εκτέλεση προγραμμάτων. Μάθαμε να διαβάζουμε το εγχειρίδιο. Και τέλος να σεργιανίζουμε στούς φακέλους. Είδαμε και κάποια πράγματα ακόμα όπως γιατί δεν αντιγράφει κείμενο το <ctrl>+<c>.

Στο δεύτερο μέρος θα δούμε κάποια στοιχειώδη και απολύτως αναγκαία πράγματα για να μπορεί κάποιος να χρησιμοποιήσει το bash.
Τελευταία επεξεργασία από lucinos και 08 Σεπ 2011, 15:01, έχει επεξεργασθεί 8 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Το δέντρο από την ρίζα

Δημοσίευσηαπό lucinos » 30 Αύγ 2011, 23:11

Ήρθε μάλλον η ώρα να δούμε κάποια βασικά για το σύστημα αρχείων.
Στα unix-οειδή όπως το λίνουξ "τα πάντα είναι αρχεία" και όλα τα αρχεία βρίσκονται σε ένα και μοναδικό δέντρο φακέλων. Όσοι είστε συνηθισμένοι στην DOS ξεχάστε τα c:, d: και λοιπά drives.
Η περισπωμένη ~ σημαίνει όπως έχουμε αναφέρει τον προσωπικό σας φάκελο.
Η τελεία . σημαίνει τον παρόντα φάκελο
Οι δύο τελείες .. σημαίνουν τον γονικό φάκελο.
Η πλαγία / χρησιμοποιείται ως διαχωριστικό φακέλων. Όταν όμως είναι μοναχή εννοεί τον ριζικό φάκελο. Όταν βρίσκεται στην αρχή εννοεί την απόλυτη διαδρομή.

Μια ενδιαφέρουσα διαφορά από την DOS. Στην DOS μπορούσε να χρησιμοποιηθεί το cd.. (χωρίς κενό). Στο bash το κενό είναι αναγκαίο γιατί οι δύο τελείες θα μπορούσαν κάλλιστα να είναι μέρος τού ονόματος τής εντολής.

Έχει όμως ενδιαφέρον να ρίξουμε μια ματιά στον ριζικό φάκελο, δώστε:
Κώδικας: Επιλογή όλων
ls /


κάθε τι εδώ μέσα έχει ενδιαφέρον (ψάξτε το), ενδεικτικά αναφέρω:
/boot Περιέχει μεταξύ άλλων τον πυρήνα Linux.
/bin Περιέχει προγράμματα (binaries) βασικά για το σύστημα. Για παράδειγμα εδώ είναι το ls αλλά το πιο σημαντικό, εδώ είναι το bash.
/dev Περιέχει τα αρχεία συσκευών που βλέπει ο υπολογιστής (θυμηθείτε τα πάντα είναι αρχεία)
/mnt Παραδοσιακά εδώ γινόντουσαν οι χειροκίνητες προσαρτήσεις (mount) συσκευών. Σήμερα συνήθως κάθεται κενό για να μάς θυμίζει τις παλιές μέρες.
/media Εδώ προσαρτώνται αυτόματα οι συσκευές (αν έχετε προσαρτημένο έναν δίσκο από εδώ θα μπείτε σε αυτόν)
/usr Εδώ βρίσκονται τα περισσότερα προγράμματα.
/lib Βιβλιοθήκες προγραμμάτων (κάτι σαν τα DLL τών windows)
/etc Περιέχει τα αρχεία ρύθμισης τού συστήματος. Επίσης και σχετικά σκριπτάκια. Τα πάντα θα έπρεπε να είναι αναγνώσιμο κείμενο. Δεν θα έπρεπε να γίνουν παραχωρήσεις από αυτήν την ωραιότατη παράδοση.
/root Ο προσωπικός φάκελος τού υπερχρήστη (γνωστού και ως ρουτ)
/home Εδώ βρίσκονται οι προσωπικοί φάκελοι τών κοινών χρηστών όπως ο δικός σας προσωπικός φάκελος.

Κάτι που ίσως δεν έγινε ξεκάθαρο για την σχετική διαδρομή. Σε αντίθεση με την περισπωμένη που είναι απλώς μια σύντμηση για τον προσωπικό φάκελο, η τελεία και οι δύο τελείες είναι σαν δυο φάκελοι που υπάρχουν σε κάθε φάκελο όπως μπορείτε να δείτε με την ls -a και έτσι πχ ο ~/.. σημαίνει τον /home ενώ ο ../.. σημαίνει δύο φακέλους πάνω στην ιεραρχία.
Τελευταία επεξεργασία από lucinos και 07 Οκτ 2012, 16:17, έχει επεξεργασθεί 7 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

sudo φτιάξε έναν καφέ

Δημοσίευσηαπό lucinos » 30 Αύγ 2011, 23:11

Αν ψάξατε το δέντρο θα βρεθήκατε μπροστά στο ακόλουθο:
Κώδικας: Επιλογή όλων
ls /root

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

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



Στο ubuntu όμως έχουν καταργήσει την δυνατότητα να κάνετε λογκίν σαν root. Αυτό που έχουν αφήσει είναι την δυνατότητα να χρησιμοποιήσετε τα δικαιώματα τού υπερχρήστη μέσω δύο εντολών. Τής sudo και τής gksudo. Χρησιμοποιήστε τες με προσοχή και φειδώ.

Έτσι για να περάσετε την άρνηση πρόσβασης πρέπει να δώσετε:
Κώδικας: Επιλογή όλων
sudo ls /root

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

ΠΡΟΣΟΧΗ Μην χρησιμοποιήσετε την sudo με προγράμματα τού γραφικού περιβάλλοντος! Θα τρέξουν αλλά ενδέχεται να προκαλέσετε ΣΟΒΑΡΕΣ ζημιές στις άδειες. Για να παρακαμφθεί αυτό το ζήτημα έχει δημιουργηθεί η gksudo.

Γενικά εγώ τουλάχιστον δεν έχω πετύχει κάποια περίπτωση που είναι αναγκαίο να τρέξετε προγράμματα GUI με υπερχρήστη αλλά έχω δύο τουλάχιστον περιπτώσεις χρήσιμες.
Η μία είναι για να επεξεργαστείτε αρχεία τού /etc με το gedit (αντί για κάποιον επεξεργαστή κειμένου όπως το nano) και η δεύτερη είναι ότι μπορείτε να δώσετε gksudo nautilus και να περιηγηθείτε τούς φακέλους με πλήρη δικαιώματα στον ναυτίλο. Η gksudo ακόμα έχει κάποια ήσσονος σημασίας bugs τα οποία δεν είναι επικίνδυνα και έχουν χαρακτηριστεί χαμηλής προτεραιότητας. Αντίθετα επικίνδυνος είναι ο συνδυασμός sudo με προγράμματα γραφικού περιβάλλοντος.

Η κατάργηση από το ubuntu τής σύνδεσης σαν root είναι ένας αυτοακρωτηριασμός που πολλοί έμπειροι χρήστες δεν βλέπουν με καλό μάτι. Εγώ θα αρκεστώ να δείξω ένα σκιτσάκι. (κλεμμένο από http://elkosmas.gr/ )
Εικόνα


Στην γραμμή εντολών μπορείτε να κάνετε λογκίν σαν διαφορετικός χρήστης. Αυτό γίνεται τρέχοντας:
Κώδικας: Επιλογή όλων
su χρήστης

όπου στο "χρήστης" βάλτε τον χρήστη που θέλετε να κάνετε λογκίν. Θα ζητήσει προφανώς τον κωδικό τού χρήστη αυτού.
Τελευταία επεξεργασία από lucinos και 18 Μαρ 2014, 17:33, έχει επεξεργασθεί 4 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Σωλήνες και λίγες χρήσιμες εντολές

Δημοσίευσηαπό lucinos » 30 Αύγ 2011, 23:12

Κάθε εντολή παίρνει ενδεχομένως μια είσοδο (έχουμε συνηθίσει με την βοήθεια τών ορισμάτων), κάνει μια δουλειά και ενδεχομένως μάς παρέχει μια έξοδο (αυτό που εμφανίζει στην οθόνη μας). Λογικά θα πρέπει να επανέλθουμε στο θέμα τής εισόδου και τής εξόδου τών εντολών αλλά εδώ θέλουμε μόνο να αναφέρουμε ένα πολύ ισχυρό εργαλείο τής γραμμής εντολών. Τον σωλήνα (pipe). Η δουλειά του είναι να παίρνει την έξοδο μιας εντολής και αντί να την εμφανίζει να την περνάει σαν είσοδο σε μια άλλη εντολή. Το σύμβολο που χρησιμοποιείται είναι η κάθετος |
Ένα "αρχαίο" παράδειγμα είναι το ακόλουθο:
Κώδικας: Επιλογή όλων
who|wc -l

Αυτό παίρνει την έξοδο τής who και την δίνει ως είσοδο στην wc -l (οπότε σάς λέει πόσοι χρήστες είναι συνδεδεμένοι)
Με την ευκαιρία η κάθετος όπως και το κενό διαχωρίζει ορίσματα. Έτσι δεν έχει σημασία αν αφήσετε κενά πριν και μετά από αυτήν η όχι.

Πάμε σε λίγες χρήσιμες εντολές.
Με cp αντιγράφετε αρχεία, με mv μετονομάζετε/μετακινείτε αρχεία και με rm διαγράφετε αρχεία (και τις τρεις μπορείτε να τις χρησιμοποιήσετε και για φακέλους).

Είστε στον φάκελο ~/playground
Δώστε:
Κώδικας: Επιλογή όλων
cp /etc/fstab .

Αυτό θα αντιγράψει το fstab στον παρόντα φάκελο

Δώστε:
Κώδικας: Επιλογή όλων
cp fstab play/groo

Αυτό θα αντιγράψει το fstab στον φάκελο play και θα τού δώσει το όνομα groo

Για περισσότερα έχω τέσσερα γράμματα για σάς RTFM
Ή μάλλον πρέπει να πω και το εξής. Υπάρχει η ακόλουθη καταπληκτική σύνταξη:
Κώδικας: Επιλογή όλων
rm -rf ορίσματα

Αυτή διαγράφει τα πάντα, αρχεία, φακέλους και τα περιεχόμενα φακέλων. Δεν αφήνει τίποτα, δεν σάς κάνει ενοχλητικές ερωτήσεις. Προφανώς πρέπει να είστε πολύ προσεκτικοί. Δεν θα σάς πω μην την χρησιμοποιήστε την, θα σάς πω να είστε τουλάχιστον προσεκτικοί και σχολαστικοί. Μειώστε κάπως τούς κινδύνους ανθρωπίνου λάθους με τον ακόλουθο τρόπο:
Γράφετε πρώτα όλη την εντολή ΧΩΡΙΣ το -rf και όταν είστε απολύτως βέβαιοι ότι όλα έχουν καλώς κινήστε με το βελάκι τον δρομέα και προσθέστε το.

Ένα ακόμα χρήσιμο προγραμματάκι είναι η less
Δώστε:
Κώδικας: Επιλογή όλων
less fstab

Και θα διαβάσετε το αρχείο απλού κειμένου fstab. Είναι ιδανική για αυτήν την δουλειά. Με h προβάλλεται μια σελίδα βοήθειας για περισσότερες πληροφορίες. Το όνομά της το παίρνει από την φράση "less is more". more είναι μια άλλη εντολή που επίσης διαβάζει αρχεία κειμένου αλλά από κάθε άποψη κατώτερη τής less.

Ο συνδυασμός τής less με σωλήνα είναι πολύ συνηθισμένος, πχ:
Κώδικας: Επιλογή όλων
ls -lahF ~|less

Αυτό θα πάρει την έξοδο τής ls -lahF ~ (περιεχώμενα τού προσωπικού σας φακέλου, με τα κρυφά και με αναλυτικές πληροφορίες) και θα το δώσει σαν είσοδο στην less για να τα δείτε μέσω αυτής.
Τελευταία επεξεργασία από lucinos και 15 Οκτ 2011, 23:40, έχει επεξεργασθεί 3 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Μπαλαντέρ

Δημοσίευσηαπό lucinos » 30 Αύγ 2011, 23:12

Πηγαίνετε στον φάκελο ~/playground/ground/ (έχει δημιουργηθεί σε προηγούμενη ενότητα)

Όταν θα είστε στον φάκελο ~/playground/ground/ τρέξτε το ακόλουθο:
Κώδικας: Επιλογή όλων
mkdir {_,}{,{Z..V},_{0..7}}{d,8}

Με αυτήν την εντολή θα δημιουργηθεί ένας σκασμός φακέλων!

Ας υποθέσουμε ότι θέλουμε τα ονόματα τών φακέλων που το πρώτο σύμβολο είναι _ ακολουθούνται από ακριβώς ένα γράμμα και τελειώνουν σε 8. Το σύμβολο ? (αγγλικό ερωτηματικό) χρησιμεύει ως μπαλαντέρ. Μπορεί να χρησιμοποιηθεί ως οποιοδήποτε σύμβολο, αλλά ένα ακριβώς. Μπορούμε λοιπόν να το χρησιμοποιήσουμε για να δούμε τα ονόματα τών φακέλων με τα χαρακτηριστικά που θέλουμε γράφοντας απλά:
Κώδικας: Επιλογή όλων
ls -d _?8


Υπάρχει όμως και ένας ακόμα γενικότερος μπαλαντέρ, το * (αστεράκι). Δίνοντας:
Κώδικας: Επιλογή όλων
ls -d _*8

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

Υπάρχουν και άλλοι μπαλαντέρ όμως! Το [έκφραση] μπορεί να χρησιμεύσει ως μπαλαντέρ. Μέσα στην έκφραση το ! σημαίνει την άρνηση ενός συμβόλου. Για παράδειγμα με:
Κώδικας: Επιλογή όλων
ls -d [!_]*

θα δείτε τούς φακέλους που δεν ξεκινάνε από _
με:
Κώδικας: Επιλογή όλων
ls -d *[5-8]*

θα δείτε τούς φακέλους που περιέχουν αριθμούς από το 5 ως το 8
με:
Κώδικας: Επιλογή όλων
ls -d *[7Wd]*

θα δείτε όσους φακέλους περιέχουν ένα από τα 7 W ή d. Με την ευκαιρία το θαυμαστικό μπορεί να χρησιμοποιηθεί και με πολλά σύμβολα πχ [!7Wd] σημαίνει όχι ένα από τα 7 W και d. Αλλά προφανώς το *[!7Wd]* θα σήμαινε όλα τα αρχεία που που περιέχουν τουλάχιστον έναν χαρακτήρα που δεν είναι από τούς 7 W ή d.

Αναφέρω ακόμα το [:lower:] σημαίνει τούς πεζούς χαρακτήρες και [:upper:] τούς κεφαλαίους. (υπάρχουν και άλλες κλάσσεις χαρακτήρων). Α, τώρα που το θυμήθηκα, τις εκφράσεις τις βάζουμε πάντα μέσα σε αγκύλες. Για αυτό πρέπει να γράψετε [[:lower:]].

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

Για να διαγράψετε όλους τούς φακέλους που βρίσκονται στο ~/playground/ground/ μπορείτε απλά (βρίσκεστε πάντα στον ~/playground/ground/ ) να δώσετε:
Κώδικας: Επιλογή όλων
rmdir *


Είναι πολύ δυνατό εργαλείο αλλά πρέπει να δείχνετε αρκετή προσοχή.
Για παράδειγμα έστω ότι θέλετε να διαγράψετε όλα τα αρχεία που τελειώνουν σε .html το ακόλουθο είναι ΛΑΘΟΣ
Κώδικας: Επιλογή όλων
rm * .html

Αυτό το κενό μετά το αστράκι κάνει μεγάλη ζημιά. Αυτό που θα συμβεί με την παραπάνω εντολή είναι διαγραφή όλων τών αρχείων και μετά θα σάς πει ότι δεν υπάρχει αρχείο .html για να σβήσει.
Προσοχή λοιπόν στις λεπτομέρειες. Πολλοί συνηθίζουν όταν χρησιμοποιούν την rm με μπαλαντέρ να γράφουν πρώτα την εντολή αλλά με την ls στην θέση τής rm και μετά να κάνουν την αντικατάσταση όταν είναι βέβαιοι ότι δεν έχουν κάνει λάθος.
Τελευταία επεξεργασία από lucinos και 30 Αύγ 2011, 23:50, έχει επεξεργασθεί 2 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Ηχώ και τρόποι διαφυγής

Δημοσίευσηαπό lucinos » 30 Αύγ 2011, 23:13

Και ερχόμαστε σε μια άλλη ενδιαφέρουσα εντολή. Η echo αυτό που κάνει είναι να επιστρέφει σαν έξοδο όττι δίνετε σαν ορίσματα. Έχει ενδιαφέρον γιατί θα δείτε τι βλέπει o φλοιός από αυτά που δίνετε.
Δώστε:
Κώδικας: Επιλογή όλων
echo This     is a test

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

Ας δοκιμάσουμε τώρα κάτι άλλο. Δώστε:
Κώδικας: Επιλογή όλων
echo ~

Θα δείτε πώς διαβάζει το bash την περισπωμένη ~.

Με την ηχώ μπορούμε να αντιληφθούμε καλύτερα τον ρόλο τών μπαλαντέρ. Για να πάρετε μια ιδέα (σε έναν μη κενό φάκελο) δώστε:
Κώδικας: Επιλογή όλων
echo *

Αυτή η μέθοδος λέγεται ανάπτυγμα ατραπωνύμου. Οκ το παραδέχομαι αυτήν την λέξη μόλις τώρα την έπλασα! :D (στα αγγλικά pathname expansion). Το ελαφρώς περίεργο είναι ότι το ανάπτυγμα αυτό σέβεται τα κρυφά αρχεία και δεν τα περιλαμβάνει. Μπορούμε όμως να παρακάμψουμε αυτό το ταμπού χρησιμοποιώντας το .* το οποίο περιλαμβάνει όλα τα κρυφά αρχεία και φακέλους, συμπεριλαμβανομένων και τών τελεία και δύο τελείες που εμφανίζονται πάντα συμβολίζοντας τον τρέχοντα και ακριβώς ανώτερο τού τρέχοντος σε ιεραρχία.

Μια άλλη ενδιαφέρουσα κατηγορία αντικειμένων που μπορούμε να δούμε με την ηχώ είναι οι λεγόμενες μεταβλητές.
Για παράδειγμα η $PWD σημαίνει τον παρόντα φάκελο. Για να δηλωθεί η χρήση μεταβλητής χρησιμοποιείται μπροστά το $
Δώστε:
Κώδικας: Επιλογή όλων
echo $PWD

Αυτό είναι ισοδύναμο με την pwd
Υπάρχει ακόμα η μεταβλητή $ΗΟΜΕ (ισοδύναμη με την περισπωμένη), η $USER (σημαίνει το αποτέλεσμα τής εντολής whoami) και άλλες.
Για να δείτε όλες τις μεταβλητές, μαζί με τις τιμές τους δώστε:
Κώδικας: Επιλογή όλων
printenv|less

Θα παρατηρήσατε ότι μεταξύ άλλων συγκρατείται και ο παρελθών φάκελος (στην μεταβλητή $OLDPWD) Μπορούμε προφανώς να πάμε σε αυτόν με cd $OLDPWD αλλά για τον ίδιο σκοπό υπάρχει και το βραχύτερο cd - (με την απλή παύλα όχι την περισπωμένη)

Υπάρχει ακόμα η σύνταξη: $(εντολή) για παράδειγμα:
Κώδικας: Επιλογή όλων
echo $(ls)

βγάζει την ίδια την έξοδο τής ls αλλά χωρίς χρώματα και στοίχιση καθώς αυτά δεν τα βλέπει η ηχώ. Σκεφτείτε το ακόλουθο παράδειγμα:
Κώδικας: Επιλογή όλων
ls -l $(which dir)


Μπορείτε να κάνετε και αριθμητικές πράξεις στο bash με διπλές παρενθέσεις μετά το $ πχ:
Κώδικας: Επιλογή όλων
echo $((3+5))

Ισχύουν όπως διαπίστωσα τυχαία και οι αγκύλες:
Κώδικας: Επιλογή όλων
echo $[3+5]

Οι πράξεις είναι + - * / % **

Και πάμε στο θέμα τής διαφυγής από τούς ειδικούς χαρακτήρες. Πώς γίνεται να συμπεριφερθούν σαν απλά σύμβολα; Έχουμε τρεις μεθόδους.
Διπλά εισαγωγικά " όπως:
Κώδικας: Επιλογή όλων
echo "This     is a test"

Αυτό θα γίνει αντιληπτό σαν ένα όρισμα και τα κενά θα διατηρηθούν όπως τα γράψαμε.
Πχ στον φάκελο ~/playground δημιουργήστε έναν φάκελο δίνοντας:
Κώδικας: Επιλογή όλων
mkdir "enas fakelos"

Τα διπλά εισαγωγικά δουλεύουν σε όλες τις περιπτώσεις εκτός από τα: $ \ ` όπου το τελευταίο είναι η βαρεία (backquote ή grave) που βρίσκεται στο ίδιο πλήκτρο με την περισπωμένη. Θυμηθείτε ότι το $ διατηρεί την λειτουργικότητά του εντός τών διπλών εισαγωγικών και άρα μπορούμε να χρησιμοποιήσουμε κανονικά μεταβλητές, εντολές ή αριθμητικές πράξεις.

Η αντιπλαγία χρησιμεύει ως χαρακτήρας διαφυγής. Για να πάρετε μια ιδέα εφόσον έχετε δημιουργήσει το "enas fakelos", στον προτροπέα ξεκινήστε να γράφετε ls e και χρησιμοποιήστε αυτοσυμπλήρωση. Η αντιπλαγία λειτουργεί με τα πάντα συμπεριλαμβανομένης και τού εαυτού της! Έτσι το \\ γίνεται \

Αν θέλουμε να γράψουμε κείμενο και να περαστεί ως έχει χωρίς εξαιρέσεις, τα απλά εισαγωγικά κάνουν την δουλειά πχ:
Κώδικας: Επιλογή όλων
echo '    "$  \"\\\ \`   '
Τελευταία επεξεργασία από lucinos και 08 Φεβ 2012, 08:48, έχει επεξεργασθεί 6 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Ψάξε-ψάξε κάτι θα βρεις

Δημοσίευσηαπό lucinos » 30 Αύγ 2011, 23:14

Σκέφτηκα να καταγράψω τις εντολές/προγράμματα που έτυχε να αναφέρω ως τώρα σε αυτήν την παρουσίαση. Με την σειρά που παρουσιάστηκαν έχουμε:

date cal free man df clear exit nano pwd mkdir ls cd mount sudo gksudo who wc cp mv rm less more rmdir echo pwd whoami printenv which dir

Δεν συμπεριέλαβα τα προγράμματα γραφικού περιβάλλοντος (τερματικό, gedit, nautilus) καθώς και το ίδιο το bash. Επίσης τελικά έβαλα το mount αν και είναι ένα ζήτημα αν μπορεί να θεωρηθεί ότι το ανέφερα καν. Αυτό το σύνολο απέχει πολύ από την απεραντοσύνη τής γραμμής εντολών αλλά και είμαστε ακόμα στην αρχή και επιπλέον μην περιμένετε να μάθετε τα πάντα από εδώ.

Αν είσαστε αρκετά ανήσυχοι (πράγμα καλό) θα διαπιστώσατε ότι το εγχειρίδιο man δεν δουλεύει με όλες τις εντολές για παράδειγμα δεν βρίσκει την cd. Οι εντολές είναι διαφόρων τύπων ίσως επανέλθουμε αργότερα σε αυτό το θέμα. Για να ρωτήσουμε τον τύπο μια εντολής μπορούμε να χρησιμοποιήσουμε την type. Δοκιμάστε την με διάφορες εντολές. πχ
Κώδικας: Επιλογή όλων
type cd

Αυτό θα μάς γυρίσει ότι είναι εντοιχισμένη (buildin) στο bash. Τέτοιου είδους εντολές μπορεί να μην έχουν δικό τους man. Υπάρχει όμως βοήθεια με την help. Για παράδειγμα:
Κώδικας: Επιλογή όλων
help cd|less

Επίσης δείτε ότι το ίδιο το bash έχει εγχειρίδιο.
Κώδικας: Επιλογή όλων
man bash

Πρόκειται για το κτηνωδέστερο εγχειρίδιο που υπάρχει!

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

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

Στην προηγούμενη ενότητα έκανε την εμφάνισή της και η which η οποία εντοπίζει τις εντολές. Θα σάς έχει γεννηθεί ίσως η απορία πώς τα προγράμματα εκτελούνται ενώ βρίσκονται σε διάφορους φακέλους. Οι ατραποί που ακολουθούνται όμως είναι συγκεκριμένες.
Για να δείτε ποιες δώστε:
Κώδικας: Επιλογή όλων
echo $PATH


Σε αυτές δεν περιλαμβάνεται ο τρέχων φάκελος! Αν θέλετε να τρέξετε ένα πρόγραμμα που είναι σε άλλο μέρος ακόμα και βρίσκεστε εκεί θα πρέπει να δώσετε την ατραπό του. Μπορείτε απλά να το τρέξετε με:
Κώδικας: Επιλογή όλων
./πρόγραμμα


Μπορείτε για παράδειγμα να τρέξετε:
Κώδικας: Επιλογή όλων
/bin/ls

Με αυτόν τον τρόπο δεν θα χρησιμοποιηθεί το alias που βλέπετε με το type και το ls θα τρέξει "άχρωμο" όπως είναι το φυσικό του.

Με την ευκαιρία να αναφέρω ότι τα πάνω-κάτω βελάκια δεν είναι ο μοναδικός τρόπος πλοήγησης στο ιστορικό. Δοκιμάστε να πατήσετε Ctrl+r και γράψτε κάτι. Με βάση αυτό θα ψάξει στο ιστορικό ταχύτατα!

Με την ευκαιρία σάς δίνω και αυτό: http://www.youtube.com/watch?v=x_R_JSiupzo
Τελευταία επεξεργασία από lucinos και 31 Αύγ 2011, 00:18, έχει επεξεργασθεί 2 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: Τα στοιχειώδη - Μέρος δεύτερο

Δημοσίευσηαπό lucinos » 30 Αύγ 2011, 23:14

Τελευταία επεξεργασία από lucinos και 13 Σεπ 2012, 18:52, έχει επεξεργασθεί 3 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: Τα στοιχειώδη - Μέρος δεύτερο

Δημοσίευσηαπό lucinos » 30 Αύγ 2011, 23:14

Απαντάτε ελεύθερα στο νήμα! Τώρα που συμμάζεψα τα ποστ ώστε να εμφανίζονται μόνος στην πρώτη σελίδα οι απαντήσεις δεν παρεμβάλλονται!
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: Τα στοιχειώδη - Μέρος δεύτερο

Δημοσίευσηαπό lucinos » 08 Φεβ 2012, 08:36

...
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση


Επιστροφή στο Μαθήματα Τερματικού