Δημοσιεύτηκε: 25 Μάιος 2011, 01:25
από lucinos
Και ερχόμαστε σε μια άλλη ενδιαφέρουσα εντολή. Η 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 '    "$  \"\\\ \`   '