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

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

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

Δημοσίευσηαπό ALdaperan » 21 Μάιος 2011, 12:49

Off topic:
Άψογο θέλουμε και άλλες πληροφορίες για τερματικό στην κοινότητα :thumbup:
Γνώσεις ⇛ Linux: Μέτριος | Προγραμματισμός: C | Αγγλικά: Μέτρια
Ubuntu 12.10 quantal 3.5.0-18-generic 32bit (en_US.UTF-8),
Intel Core2 Duo CPU E8400 3.00GHz ‖ RAM 2016 MiB ‖ ASUS INC. P5Q
AMD nee ATI RV770 [Radeon HD 4850] [1002:9442]
eth0: Atheros Inc. AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0)
Οδηγοί - How to - Tutorials | Οδηγοί Video | Οδηγίες για Αρχάριους στο Ubuntu | Γιατί το Linux είναι καλύτερο
Άβαταρ μέλους
ALdaperan
powerTUX
powerTUX
 
Δημοσιεύσεις: 2686
Εγγραφή: 27 Μαρ 2010, 21:07
Εκτύπωση

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

Δημοσίευσηαπό lucinos » 22 Μάιος 2011, 06:06

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

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

Στο 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 και 28 Αύγ 2011, 00:04, έχει επεξεργασθεί 2 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

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

Δημοσίευσηαπό lucinos » 22 Μάιος 2011, 09:33

Κάθε εντολή παίρνει ενδεχομένως μια είσοδο (έχουμε συνηθίσει από τα ορίσματα), κάνει μια δουλειά και ενδεχομένως μάς παρέχει μια έξοδο (αυτό που εμφανίζει στην οθόνη μας). Λογικά θα πρέπει να επανέλθουμε στο θέμα τής εισόδου και τής εξόδου τών εντολών αλλά εδώ θέλουμε μόνο να αναφέρουμε ένα πολύ ισχυρό εργαλείο τής γραμμής εντολών. Τον σωλήνα (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 και 28 Μάιος 2011, 12:06, έχει επεξεργασθεί 5 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

μπαλαντέρ

Δημοσίευσηαπό lucinos » 23 Μάιος 2011, 16:32

Πηγαίνετε στον φάκελο ~/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:] τούς κεφαλαίους. (υπάρχουν και άλλες κλάσσεις χαρακτήρων)

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

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


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

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

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

Δημοσίευσηαπό lucinos » 25 Μάιος 2011, 01:25

Και ερχόμαστε σε μια άλλη ενδιαφέρουσα εντολή. Η 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) που βρίσκεται στο ίδιο πλήκτρο με το κατσαρό. Θυμηθείτε ότι το $ διατηρεί την λειτουργικότητά του εντός τών διπλών εισαγωγικών και άρα μπορούμε να χρησιμοποιήσουμε κανονικά μεταβλητές, εντολές ή αριθμητικές πράξεις.

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

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

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

Δημοσίευσηαπό lucinos » 25 Μάιος 2011, 03:09

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

date cal free man df clear exit nano ls mkdir 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 και 02 Ιουν 2011, 12:21, έχει επεξεργασθεί 4 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Κεφάλαιο δεύτερο

Δημοσίευσηαπό lucinos » 28 Μάιος 2011, 11:47

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

Οι προηγούμενες ένδεκα ενότητες έχουν κατά κάποιον τρόπο μια αυτοτέλεια. Ο πρωταρχικός στόχος που είναι μια πρώτη εξοικείωση με την γραμμή εντολών έχει πιστεύω εκπληρωθεί. Αν υπάρχει στοιχειώδης αυτοπεποίθηση μπορεί κάποιος να λύσει τα περισσότερα προβλήματα με τις επιταγές RTFM και STFW. Δεν απέφυγα σε καμμία περίπτωση την αναφορά σε εντολές αλλά η ιδέα μου είναι η παρουσίαση αυτή να μην μοιάζει με λεξικό, να παρουσιάσω όσο γίνεται τις έννοιες και όχι τις λέξεις. Τα λεξικά έχουν την δική τους χρησιμότητα, αυτή η παρουσίαση την δική της. Έδειξα και μερικά τεράστιας σημασίας "κολπάκια" όπως η αυτοσυμπλήρωση και η χρήση τού ιστορικού αλλά εδώ αναφέρω ότι ο φλοιός έχει και άλλα κολπάκια. Ενδεικτικά, με τον συνδυασμό Ctrl+l καθαρίζεις την οθόνη, με Ctrl+t αντιμεταθέτεις δύο γράμματα (διορθώνεις έτσι ένα συνηθισμένο λάθος στην πληκτρολόγηση). Αλλά φυσικά δεν θα κάτσω να παρουσιάσω κολπάκια στην γραμμή εντολών. Δεν είναι αυτό το θέμα.

Μια βασική υπόθεση που κάνω είναι ότι ο αναγνώστης έχει ubuntu (ξέρω μια τραβηγμένη υπόθεση :) ). Το bash φυσικά είναι το ίδιο παντού (στην χειρότερη διαφέρει η έκδοση) και τα βασικά προγράμματα επίσης δεν αλλάζουν (δεν πιστεύω ότι οποιοδήποτε από όσα έχω παρουσιάσει ως τώρα θα λείπει σε οποιαδήποτε διανομή). Σε μια άλλη διανομή αν έχετε μπει σε CLI με Ctrl+Alt+F1 ενδεχομένως να μην επιστρέφετε σε γραφικό περιβάλλον με Alt+F7 αλλά με Alt+F8 (ή κάποιο άλλο F). Με την ευκαιρία αν έχουν συνδεθεί πολλοί χρήστες με γραφικό περιβάλλον μπορείτε να αλλάζετε από τον έναν στον άλλο με τις συντομεύσεις Ctrl+Alt+F7, Ctrl+Alt+F8, κλπ. Επίσης αυτά που γράφονται πριν τον προτροπέα δεν είναι τα ίδια για όλες τις διανομές (μπορείτε μάλιστα και να τα αλλάξετε όποτε θέλετε). Στο ubuntu αναφέρεται όλη η διαδρομή (με χρήση τής συντόμευσης ~). Για κάποια άλλη διανομή μάλλον θα έπρεπε να αναφέρω την pwd νωρίτερα...

Μετά τι;
Υπάρχουν σημαντικότατες πτυχές τής γραμμής εντολών οι οποίες δεν έχουν εξεταστεί καθόλου. Οπότε θα ήθελα να προχωρήσουμε και σε αυτές. Όταν λέω "προχωρήσουμε" εννοώ να συμμετέχουν και άλλοι από το φόρουμ. Δεν απαγορεύω φυσικά να γράψετε κατευθείαν σε αυτό το νήμα, αλλά προτείνω κάθε τι, περισσότερο η λιγότερο σχετικό, να το συζητηθεί στο: viewtopic.php?f=7&t=18619
Τι νομίζετε ότι λείπει, αν θέλετε να γράψετε για κάποιο θέμα οι ίδιοι, αν θέλετε να προτείνετε έναν σύνδεσμο ή ένα βιβλίο κλπ.

Κάτι σχετικά με τα "χαμηλής προτεραιότητας bugs" τού gksudo. Το πρόβλημα είναι ότι βγάζει μηνύματα σφάλματος όταν το τρέχετε. Αυτά τα μηνύματα μπορείτε να τα αγνοήσετε. Δεν ενοχλούν καθόλου. Ο κύριος λόγος που βγαίνουν είναι επειδή κάποια πανέξυπνη διανομή (ονόματα δεν λέμε) αποφάσισε να καταργήσει τον λογαριασμό υπερχρήστη. Η gksudo ακόμα και έτσι λειτουργεί χωρίς πρόβλημα και ανοίγουν κανονικά τα προγράμματα με μόνη παρενέργεια τα μηνύματα σφάλματος.
Τελευταία επεξεργασία από lucinos και 29 Αύγ 2011, 09:20, έχει επεξεργασθεί 12 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Σημαντικά προγράμματα σε γραμμή εντολών

Δημοσίευσηαπό lucinos » 01 Ιουν 2011, 14:29

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

gcc
Αρχικά συμπιλιστής (compiler) τής C. Τώρα συλλογή συμπιλιστών. Αν με βάλετε να διαλέξω το σημαντικότερο πακέτο τού GNU αυτό θα έλεγα χωρίς δεύτερη σκέψη.

rsync
Εξαιρετικό πρόγραμμα δημιουργίας buckup. Σε αυτό έχει βασιστεί ο Λουκάς Αυγερίου για το πρόγραμμα γραφικού περιβάλλοντος LuckyBuckup (Το rsync το είχα ακούσει από παλιά, το luckybuckup πρόσφατα το άκουσα)

vi
Πανίσχυρος κειμενογράφος, που ομολογώ δεν έχω χρησιμοποιήσει ποτέ. Δείτε και viewtopic.php?f=9&t=3418 Πάντως δεν τον έχω ακουστά μόνο από εκεί. Οι αδαείς βέβαια μπορούν να χρησιμοποιούν τούς ικανοποιητικούς GUI κειμενογράφους και αν αναγκαστούν για λίγο να χρησιμοποιήσουν γραμμή εντολών υπάρχει ο απλός αλλά πολύ κατώτερος nano

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

octave
συμβατό με το Matlab, δεν έχω δουλέψει ούτε αυτό ούτε το matlab αλλά μια ματιά που έριξα φαίνεται πολύ δυνατό

tar
εργαλείο για την αρχειοθέτηση τύπου tar. Επίσης υπάρχει το zip για τα zip και άλλα.

rTorrent
εργαλείο για torrent

mount
εργαλείο για προσάρτηση συστημάτων αρχείων (και αρχεία όπως τα .iso)

dd
εργαλείο για χαμηλού επιπέδου εργασίες στούς δίσκους.

dpkg
το λογισμικό στην βάση τής διαχείρισης πακέτων τού Debian (στο οποίο βασίζεται το ubuntu), συνηθέστερα χρησιμοποιείται το υψηλότερου επιπέδου APT (apt-get) και φυσικά καθώς δεν είναι όλες οι διανομές βασισμένες στο Debian υπάρχουν πολλά εναλλακτικά με ποιο σημαντικό εναλλακτικό σύστημα το RPM.
Τελευταία επεξεργασία από lucinos και 13 Ιούλ 2011, 16:26, έχει επεξεργασθεί 3 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Ανακατευθύνσεις

Δημοσίευσηαπό lucinos » 01 Ιουν 2011, 14:30

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

Ένα ενδιαφέρον προγραμματάκι που δεν έτυχε να δούμε είναι το cat
Στον προτροπέα τρέξτε:
Κώδικας: Επιλογή όλων
cat

Σε αυτό το σημείο ίσως νομίζετε ότι έχει κρεμάσει. Για να δείτε ότι δεν είναι καθόλου έτσι αρχίστε να γράφετε όττι θέλετε. Κάθε φορά που θα πατάτε Enter το πρόγραμμα θα επιστρέφει την είσοδο (αυτά που γράφετε) στην έξοδο (δηλαδή θα επαναλαμβάνει όττι γράφετε) και θα σάς αφήνει να συνεχίσετε. Θα μπορούσατε να διακόψετε βίαια το πρόγραμμα με Ctrl+c όπως έχουμε δει αλλά μπορείτε να πείτε ότι το "αρχείο" τελείωσε με τον συνδυασμό Ctrl+d. Με την ευκαιρία θυμηθείτε ότι για τα unix-οειδή τα πάντα είναι αρχεία και επομένως όταν πληκτρολογείτε αυτό δεν διαφέρει από την ανάγνωση ενός αρχείου από τον υπολογιστή. Αν δώσετε Ctrl+d στον προτροπέα αυτό είναι ισοδύναμο με την εντολή exit (είναι σαν να λέτε ότι τερματίζετε την είσοδο προς το bash)

Αντί για να δώσουμε το cat μόνο του και να περιμένει είσοδο από το πληκτρολόγιο μπορούμε να τού δώσουμε σαν είσοδο το αποτέλεσμα μιας άλλης εντολής με τον σωλήνα ή μπορούμε να δώσουμε ένα αρχείο με το <
Πάτε στο ~/playground εκεί από τα προηγούμενα έχουμε αντιγράψει το fstab και δώστε στον προτροπέα:
Κώδικας: Επιλογή όλων
cat < fstab

Θα διαβάσει το αρχείο fstab και θα σάς επιστρέψει στον προτροπέα.
Συνήθως τα προγράμματα στα οποία θα θέλαμε να κάνουν κάτι τέτοιο μάς δίνουν την δυνατότητα να το κάνουμε από τα ορίσματα. Θα το θυμάστε αυτό από την less, το ίδιο ισχύει και με την cat, δηλαδή:
Κώδικας: Επιλογή όλων
cat fstab

λειτουργεί εξίσου καλά. Αυτό κάνει το < κάπως αχρείαστο. Το αντίθετό του όμως > είναι πιο χρήσιμο. Με:
Κώδικας: Επιλογή όλων
cat > dog

Γράφουμε στο αρχείο dog. Έχουμε πρακτικά έναν από τούς απλούστερους κειμενογράφους που μπορούν να υπάρξουν.

Ένα ακόμα παράδειγμα χρήσης τής ανακατεύθυνσης > είναι το:
Κώδικας: Επιλογή όλων
ls -lahF ~ > ls-my_home

σώζετε το αποτέλεσμα στο αρχείο ls-my_home
Επίσης το:
Κώδικας: Επιλογή όλων
> keno

δημιουργεί ένα κενό αρχείο keno (ένα ωραίο κολπάκι)

Μπορεί την έξοδο να θέλουμε να την πετάξουμε. Αυτό γίνεται αν δώσουμε σαν αρχείο εξόδου το /dev/null (δείτε και το σχετικό αρθράκι τής Βικιπαίδειας)

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

Κάτι ακόμα πολύ σημαντικό. Το > δίνει την κανονική έξοδο στο αρχείο. Τα σφάλματα περνάνε από διαφορετική έξοδο. Αν λοιπόν δώσετε:
Κώδικας: Επιλογή όλων
ls krom > ls-krom

θα δημιουργηθεί ένα κενό αρχείο ls-krom και το μήνυμα σφάλματος θα τυπωθεί κανονικά στην οθόνη. Αν θέλουμε να ανακατευθύνουμε το μήνυμα σφάλματος αντί για την κανονική έξοδο χρησιμοποιούμε το 2> και αν θέλουμε να ανακατευθύνουμε και τα δυο (κανονική έξοδο και σφάλματα) υπάρχει το &> (για τις νεώτερες σχετικά εκδόσεις τού bash, στις παλιότερες είναι ελαφρώς πιο παράξενο)

Σχετικά με τις ανακατευθύνσεις υπάρχει αυτό το άρθρο τής Βικιπαίδειας
Τελευταία επεξεργασία από lucinos και 21 Ιούλ 2011, 09:44, έχει επεξεργασθεί 2 φορά/ες συνολικά
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 06 Ιουν 2011, 03:23

φοβερη ενασχοληση και δουλεια... εισαι τρομερος !!!

Μιας και σε ειδα οτι εχεις συμπεριλαβει και μεταχαρακτηρες - χαρακτηρες μπαλαντερ στην παρουσιαση σου

εχε υποψιν σου και βαλτους και αυτους αν θες...

με
Κώδικας: Επιλογή όλων
!command
εκτελουμε την ακριβως προηγουμενη εντολη που εκτελεσαμε χωρις να χρειαζεται να ξαναβαλουμε τα ορισματα της... πχ εγω τωρα στο τερματικο εχω δωσει την

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ sudo apt-cache subversion


που ειναι ισοδυναμη με την

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ !sudo


που ειναι ισοδυναμη με την

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ !!
:D
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

ΠροηγούμενηΕπόμενο

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

cron