Συνεχίζοντας τη σειρά σημειώσεων για
1) PROMPT_COMMAND
Μπορεί να γνωρίζετε ήδη πώς να χειρίζεστε την προτροπή για να εμφανίζονται διάφορες χρήσιμες πληροφορίες, αλλά δεν γνωρίζουν όλοι ότι μπορείτε να εκτελείτε μια εντολή φλοιού κάθε φορά που εμφανίζεται η προτροπή.
Στην πραγματικότητα, πολλοί σύνθετοι χειριστές εντολών χρησιμοποιούν αυτήν τη μεταβλητή για να εκτελέσουν εντολές για τη συλλογή πληροφοριών που εμφανίζονται στη γραμμή εντολών.
Δοκιμάστε να το εκτελέσετε σε νέο κέλυφος και δείτε τι θα συμβεί στην περίοδο λειτουργίας:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
Αν τρέχεις history
στην κονσόλα, θα λάβετε μια λίστα με εντολές που είχαν εκτελεστεί στο παρελθόν στο λογαριασμό σας.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Μόλις οριστεί αυτή η μεταβλητή, οι νέες καταχωρήσεις καταγράφουν την ώρα μαζί με την εντολή, οπότε η έξοδος θα μοιάζει με αυτό:
1871 Έτρεξα αυτό στις: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Έτρεξα αυτό στις: 01/05/19 13:38:19 curl bbc.co.uk 1873 Έτρεξα αυτό στο : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Έτρεξα αυτό στις: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Έτρεξα αυτό στις: 01 /05/19 13:39:25 sudo su -
Η μορφοποίηση ταιριάζει με χαρακτήρες από man date
.
3) CDPATH
Για να εξοικονομήσετε χρόνο στη γραμμή εντολών, μπορείτε να χρησιμοποιήσετε αυτήν τη μεταβλητή για να αλλάζετε καταλόγους τόσο εύκολα όσο εκδίδεις εντολές.
ως PATH
, μεταβλητή CDPATH
είναι μια λίστα διαδρομών διαχωρισμένη με άνω και κάτω τελεία. Όταν εκτελείτε την εντολή cd
με μια σχετική διαδρομή (δηλαδή χωρίς κάθετο), από προεπιλογή το κέλυφος αναζητά στον τοπικό σας φάκελο για ονόματα που ταιριάζουν. CDPATH
θα αναζητήσει στα μονοπάτια που δώσατε τον κατάλογο στον οποίο θέλετε να μεταβείτε.
Εάν εγκαταστήσετε CDPATH
με αυτόν τον τρόπο:
$ CDPATH=/:/lib
και μετά εισάγετε:
$ cd /home
$ cd tmp
τότε θα καταλήγεις πάντα μέσα /tmp
οπου κι αν είσαι.
Ωστόσο, να είστε προσεκτικοί, γιατί αν δεν προσδιορίσετε το τοπικό στη λίστα (.
), τότε δεν θα μπορείτε να δημιουργήσετε άλλο φάκελο tmp
και πηγαίνετε σε αυτό ως συνήθως:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
Ωχ!
Αυτό είναι παρόμοιο με τη σύγχυση που ένιωσα όταν συνειδητοποίησα ότι ο τοπικός φάκελος δεν περιλαμβανόταν στην πιο οικεία μεταβλητή PATH
... αλλά πρέπει να το κάνετε στη μεταβλητή PATH γιατί μπορεί να σας εξαπατήσουν να εκτελέσετε μια ψεύτικη εντολή από κάποιο ληφθέν κώδικα.
Το δικό μου ορίζεται από το σημείο εκκίνησης:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Έχετε αναρωτηθεί ποτέ, πληκτρολογώντας exit
θα σας μεταφέρει από το τρέχον κέλυφος του bash σε ένα άλλο "γονικό" κέλυφος ή απλά θα κλείσει τελείως το παράθυρο της κονσόλας;
Αυτή η μεταβλητή παρακολουθεί πόσο βαθιά φωλιασμένοι είστε στο κέλυφος του bash. Εάν δημιουργήσετε ένα νέο τερματικό, ορίζεται σε 1:
$ echo $SHLVL
1
Στη συνέχεια, εάν ξεκινήσετε μια άλλη διαδικασία κελύφους, ο αριθμός αυξάνεται:
$ bash
$ echo $SHLVL
2
Αυτό μπορεί να είναι πολύ χρήσιμο σε σενάρια όπου δεν είστε σίγουροι αν πρέπει να βγείτε ή όχι ή να παρακολουθείτε πού βρίσκεστε ένθετα.
5) LINENO
Η μεταβλητή είναι επίσης χρήσιμη για την ανάλυση της τρέχουσας κατάστασης και τον εντοπισμό σφαλμάτων LINENO
, το οποίο αναφέρει τον αριθμό των εντολών που έχουν εκτελεστεί στη συνεδρία μέχρι στιγμής:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
Αυτό χρησιμοποιείται συχνότερα κατά τον εντοπισμό σφαλμάτων σε σενάρια. Εισαγωγή γραμμών όπως echo DEBUG:$LINENO
, μπορείτε γρήγορα να προσδιορίσετε πού στο σενάριο βρίσκεστε (ή όχι).
6) REPLY
Εάν, όπως εγώ, συνήθως γράφετε κώδικα ως εξής:
$ read input
echo do something with $input
Μπορεί να αποτελεί έκπληξη το γεγονός ότι δεν χρειάζεται να ανησυχείτε καθόλου για τη δημιουργία της μεταβλητής:
$ read
echo do something with $REPLY
Αυτό κάνει το ίδιο πράγμα.
7) TMOUT
Για να αποφύγετε την υπερβολική παραμονή σε διακομιστές παραγωγής για λόγους ασφαλείας ή την κατά λάθος εκτέλεση κάτι επικίνδυνο σε λάθος τερματικό, η ρύθμιση αυτής της μεταβλητής λειτουργεί ως προστασία.
Εάν δεν εισαχθεί τίποτα για έναν καθορισμένο αριθμό δευτερολέπτων, το κέλυφος εξέρχεται.
Δηλαδή, αυτή είναι μια εναλλακτική sleep 1 && exit
:
$ TMOUT=1
Πηγή: www.habr.com