Συντομεύσεις
Το κέλυφος bash προσφέρει πολλές διευκολύνσεις για τη συντόμευση ορισμένων διαδικασιών και ειδικά των σχετικών με την εισαγωγή ή επιλογή των εντολών.
Ιστορικό του κελύφους
Πολλές φορές έχει χρειαστεί να εισάγετε την ίδια εντολή ή περίπου την ίδια με αυτήν που εκτελέσατε πριν από λίγο το κέλυφος. Σε παλαιότερα κελύφη, όπως το κέλυφος Bourne, θα έπρεπε να ξαναγράψετε την εντολή. Αυτό όμως είναι χάσιμο χρόνου και πηγή εκνευρισμού καθώς, ειδικά για περίπλοκες εντολές, είναι πάντα πιθανό να γίνει κάποιο συντακτικό λάθος και να χρειαστεί να ξαναδώσετε την εντολή. Για το σκοπό αυτό όλα τα σύγχρονα κελύφη, ανάμεσά τους και το bash, υποστηρίζουν ιστορικό εντολών και κατά βούληση μετακίνηση σε αυτό.
Η μετακίνηση στο ιστορικό των εντολών μπορεί να γίνει με τα πάνω και κάτω βέλη του δρομέα (cursor). Μόλις βρείτε την εντολή που σας ενδιαφέρει μπορείτε είτε να την εκτελέσετε απευθείας πατώντας [ENTER] ή να την τροποποιήσετε, όπως ακριβώς θα αλλάζατε ένα κείμενο.
Αν η εντολή που αναζητείτε δε βρίσκεται στις αμέσως προηγούμενες εντολές, μπορείτε να χρησιμοποιήσετε την εντολή history για να δείτε το ιστορικό όλων των τελευταίων εντολών που έχετε δώσει. Οι εντολές θα είναι αριθμημένες (το προκαθορισμένο πλήθος για το ιστορικό του κελύφους bash στο Debian είναι 500) και με αυτόν τον τρόπο μπορείτε να επιλέξετε την ζητούμενη και να την καλέσετε χρησιμοποιώντας τον τελεστή “!”. Παράδειγμα, αν έχουμε κάνει μια αλλαγή στο αρχείο names.txt που χρησιμοποιήσαμε σε προηγούμενη ενότητα και θέλουμε να ταξινομήσουμε ξανά τα δεδομένα του:
$ history [...] 32 ls -l 33 rm sortednames.txt 34 vi names.txt 35 sort -k 2 names.txt > sortednames.txt 36 vi names.txt $ !35 sort -k 2 names.txt > sortednames.txt $
Αφού είδαμε το ιστορικών εντολών με τη history, επιλέξαμε την εντολή με τον αριθμό 35 για να μην την πληκτρολογήσουμε ξανά, απλώς δώσαμε στο κέλυφος !35.
Για την αμέσως προηγούμενη εντολή, εκτός από τα βέλη του δρομέα μπορούμε να χρησιμοποιήσουμε και τον τελεστή !!.
$ sort -k 2 names.txt > sortednames.txt $ !! sort -k 2 names.txt > sortednames.txt
Εδώ αξίζει να σημειωθεί ότι η εντολή history μπορεί επίσης να χρησιμοποιηθεί σε συνδυασμό με την εντολή grep (για την οποία θα μιλήσουμε σε επόμενο κεφάλαιο):
$ history | grep sort 33 rm sortednames.txt 35 sort -k 2 names.txt > sortednames.txt $
Αυτόματη ολοκλήρωση με TAB
Ένας ακόμη τρόπος να γλυτώσετε χρόνο είναι χρησιμοποιώντας την αυτόματη ολοκλήρωση εντολών και ονομάτων αρχείων (command completion και filename completion), πατώντας το πλήκτρο [TAB] (το πλήκτρο πάνω από το CAPS LOCK στα περισσότερα πληκτρολόγια). Αν ξεκινήσετε να γράφετε μία εντολή, τότε πατώντας [TAB] θα συμβεί ένα από τα ακόλουθα:
- υπάρχει μόνο μια εντολή που ταιριάζει με το κείμενο που έχετε γράψει και το κέλυφος θα συμπληρώσει την εντολή
- υπάρχουν περισσότερες από μια εντολές και το κέλυφος θα σας παρουσιάσει μία λίστα με όλες τις εντολές των οποίων το όνομα ταιριάζει σε αυτό που έχετε γράψει.
Για παράδειγμα, αν γράψετε his και πατήσετε [TAB] το κέλυφος θα αναγνωρίζει ότι δεν υπάρχει άλλη εντολή που να αρχίζει με τα γράμματα his, εκτός από τη history, και θα τη συμπληρώσει μόνο του.
$ his[TAB]tory
Αντίθετα, αν γράψετε set και πατήσετε [TAB], το κέλυφος θα σας παρουσιάσει την εξής λίστα:
$ set set setfdprm setkeycodes setleds setmetamode setserial setsid setterm settheme setxkbmap $ set
Το ίδιο σύστημα αυτόματης ολοκλήρωσης ισχύει και για τα ονόματα αρχείων.
Ψευδώνυμα (Aliases)
Τα ψευδώνυμα είναι εικονικές εντολές που αντιστοιχούν σε μια παράσταση με πραγματικές εντολές. Τα ψευδώνυμα δεν υφίστανται ως αρχεία στην πραγματικότητα, αλλά το κέλυφος τα αναγνωρίζει και εκτελεί την παράσταση που έχετε ορίσει. Ο χειρισμός των ψευδωνύμων γίνεται με τις εξής εντολές:
- alias: Χωρίς παράμετρο επιστρέφει τη λίστα των υπαρχόντων ψευδωνύμων.
- alias ALIAS='COMMAND OPTION': ορίζει το ψευδώνυμο με την παράσταση που βρίσκεται εντός εισαγωγικών.
- unalias ALIAS: διαγράφει το ψευδώνυμο ALIAS.
Για παράδειγμα, μπορούμε να ορίσουμε τα εξής χρήσιμα ψευδώνυμα:
$ alias ls='ls –-color=auto' $ alias l='ls -CF' $ alias ll='ls -la' $ alias alias ls='ls –-color=auto' alias l='ls -CF' alias ll='ls -la'
Σημειώστε ότι η ls που βρίσκεται στο 2ο και 3ο ψευδώνυμο του παραπάνω παραδείγματος, είναι η ίδια ψευδώνυμο, δηλαδή η πραγματική τιμή του ψευδωνύμου l είναι ls -–color=auto -CF.
Έτσι κάθε φορά που δίνετε ll θα βλέπετε μια αναλυτική παρουσίαση όλων των περιεχομένων ενός καταλόγου.
Υποκατάσταση Εντολών
Η υποκατάσταση εντολών (command substitution) αποτελεί μια συντακτική δομή του κελύφους, η οποία υποκαθιστά την ίδια την εντολή με την έξοδό της. Για να χρησιμοποιήσετε την υποκατάσταση εντολών θα πρέπει να περικλείσετε την εντολή με δασείες ``.
Ένα παράδειγμα θα βοηθήσει περισσότερο στην κατανόηση αυτής της λειτουργίας:
$ echo “There are “ `who | wc -l` “ users logged in.” There are 17 users logged in.
Σημειώστε ότι χρησιμοποιήσαμε μια εντολή με σωλήνωση εντός των δασειών. Θεωρητικά, μπορείτε να χρησιμοποιήσετε οποιαδήποτε έγκυρη εντολή ή συνδυασμό εντολών εντός των δασειών.
Active forum topics
- Wake up from suspend mode failed
- Οργάνωση στις μεταφράσεις των ελληνικών στο Debian.
- απορια σχετικα με nvidia440
- πρόβλημα εγκατάστασης nvidia driver GTS250.
- kernel 2.6.38 για squeeze
- Gnome3
- 2 μήνες σπασμένο το upgrade σε unstable [SOLVED]
- Οι χρήστες του Internet Explorer είναι χαζοί;
- Debian Lenny + Nvidia drivers
- εγκατασταση usb cosmote
New forum topics
Νέοι χρήστες
- kountp
- Adonthegreat
- giorgos_m
- prodromos
- airmaik
Οι πιο πρόσφατες καταχωρίσεις blog.
- Fosscomm 2012
- armhf officially into Debian!
- back from UDS/Linaro Connect...
- FTF is over, Linaro Interview
- straight from FTF 2011, San Antonio...
- Όσο μεγαλώνεις μαθαίνεις...
- Emdebian 2011 Sprint report, Genesi Europe store goes online...
- Θεσσαλονίκη - open source ERP workshop
- Χρήσιμο URL για Flash Cards και Linux filesystems
- Cambridge, UK, ARM HQ for Emdebian 2011 Sprint