Συντομεύσεις

Εικόνα: markos
Submitted by markos on Κυρ, 04/03/2007 - 22:01

Το κέλυφος 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.

Σημειώστε ότι χρησιμοποιήσαμε μια εντολή με σωλήνωση εντός των δασειών. Θεωρητικά, μπορείτε να χρησιμοποιήσετε οποιαδήποτε έγκυρη εντολή ή συνδυασμό εντολών εντός των δασειών.

0
Your rating: None