Skip to main content

Τέφρα - εντολή Linux

How to Setup Multinode Hadoop 2 on CentOS/RHEL Using VirtualBox (Ενδέχεται 2024)

How to Setup Multinode Hadoop 2 on CentOS/RHEL Using VirtualBox (Ενδέχεται 2024)

Πίνακας περιεχομένων:

Anonim

ΟΝΟΜΑ

sh - διερμηνέας εντολών (shell)

ΣΥΝΟΨΗ

SH -/ + aCefnuvxIimqsVEbc -o longname -words στόχος …

ΠΕΡΙΓΡΑΦΗ

Ο Sh είναι ο συνήθης ερμηνευτής εντολών για το σύστημα. Η τρέχουσα έκδοση τουSH βρίσκεται στη διαδικασία αλλαγής ώστε να συμμορφώνεται με τοPOSIX 1003.2 και 1003.2a για το κέλυφος. Αυτή η έκδοση έχει πολλά χαρακτηριστικά τα οποία την κάνουν να φαίνεται παρόμοια σε ορισμένες απόψεις με το κέλυφος Korn, αλλά δεν είναι κλώνος κέρινου Korn (βλ. Ksh (1)). Μόνο χαρακτηριστικά που ορίζονται από τοPOSIX συν μερικές επεκτάσεις Berkeley, ενσωματώνονται σε αυτό το κέλυφος. ΠροσδοκούμεPOSIX συμμόρφωση με το χρόνο 4.4 απελευθερώνεται BSD. Αυτή η σελίδα δεν προορίζεται να είναι ένα σεμινάριο ή μια πλήρης περιγραφή του κελύφους.

ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ

Το κέλυφος είναι μια εντολή που διαβάζει γραμμές από ένα αρχείο ή το τερματικό, τις ερμηνεύει και γενικά εκτελεί άλλες εντολές. Πρόκειται για το πρόγραμμα που εκτελείται όταν ένας χρήστης συνδεθεί στο σύστημα (αν και ένας χρήστης μπορεί να επιλέξει ένα διαφορετικό κέλυφος με την εντολή chsh (1)). Το κέλυφος εφαρμόζει μια γλώσσα που έχει δομές ελέγχου ροής, μια μακροεντολή που παρέχει μια ποικιλία χαρακτηριστικών εκτός από την αποθήκευση δεδομένων, μαζί με ενσωματωμένες δυνατότητες επεξεργασίας ιστορικού και γραμμής. Ενσωματώνει πολλά χαρακτηριστικά που βοηθούν τη διαδραστική χρήση και έχει το πλεονέκτημα ότι η ερμηνευτική γλώσσα είναι κοινή τόσο σε διαδραστική όσο και σε μη διαδραστική χρήση (script scripts). Δηλαδή, οι εντολές μπορούν να δακτυλογραφούν απευθείας στο τρέχον κέλυφος ή μπορούν να τεθούν σε ένα αρχείο και το αρχείο μπορεί να εκτελεστεί απευθείας από το κέλυφος.

Επίκληση

Εάν δεν υπάρχουν παξιμάδια και εάν η τυποποιημένη είσοδος του κελύφους είναι συνδεδεμένη με ένα τερματικό (ή εάν το -Εγώσημαία έχει οριστεί), και -ντο δεν υπάρχει, το κέλυφος θεωρείται ένα διαλογικό κέλυφος. Ένα διαδραστικό κέλυφος προτρέπει γενικά κάθε εντολή και χειρίζεται διαφορετικά τα σφάλματα προγραμματισμού και εντολής (όπως περιγράφεται παρακάτω). Κατά την πρώτη εκκίνηση, το κέλυφος επιθεωρεί το όρισμα 0 και αν αρχίζει με ένα παύλα `- ', το κέλυφος θεωρείται επίσης ένα κέλυφος σύνδεσης. Αυτό γίνεται συνήθως αυτόματα από το σύστημα όταν ο χρήστης συνδεθεί πρώτα. Ένα κέλυφος σύνδεσης διαβάζει πρώτα τις εντολές από τα αρχεία / etc / profile και .profile, αν υπάρχουν. Αν η μεταβλητή περιβάλλοντοςENV έχει οριστεί στην είσοδο σε ένα κέλυφος ή έχει οριστεί στο .profile ενός κελύφους σύνδεσης, το κελί έπειτα διαβάζει εντολές από το αρχείο με όνομαENVΕπομένως, ένας χρήστης πρέπει να τοποθετήσει εντολές που πρέπει να εκτελεστούν μόνο κατά την ώρα σύνδεσης στο αρχείο .profile και εντολές που εκτελούνται για κάθε κέλυφος μέσα στοENV αρχείο. Για να ρυθμίσετε τοENV μεταβλητή σε κάποιο αρχείο, τοποθετήστε την ακόλουθη γραμμή στο προφίλ σας του οικείου καταλόγου σας

ENV = $ HOME / .shinit; εξαγωγή ENV

αντικαθιστώντας με το `` .shinit '' οποιοδήποτε όνομα αρχείου θέλετε. Δεδομένου ότι τοENV το αρχείο διαβάζεται για κάθε κλήση του κελύφους, συμπεριλαμβανομένων των χειρογράφων κελύφους και των μη διαδραστικών κελυφών, το ακόλουθο παράδειγμα είναι χρήσιμο για τον περιορισμό των εντολών στοENV αρχείου σε διαλογικές επικλήσεις. Τοποθετήστε τις εντολές στο `` case '' και `` esac '' παρακάτω (αυτές οι εντολές περιγράφονται παρακάτω):

περίπτωση $ - σε * i *)

# εντολές μόνο για διαδραστική χρήση

esac

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

Επεξεργασία λίστας παραμέτρων

Όλες οι επιλογές ενός γράμματος έχουν ένα αντίστοιχο όνομα που μπορεί να χρησιμοποιηθεί ως ένα επιχείρημα για το -o επιλογή. Το σετ -o όνομα δίπλα στην επιλογή γραμματοσειράς στην παρακάτω περιγραφή. Ο καθορισμός μιας παύλας `` - '' ενεργοποιεί την επιλογή, ενώ χρησιμοποιώντας ένα συν `` + '' απενεργοποιεί την επιλογή. Οι ακόλουθες επιλογές μπορούν να ρυθμιστούν από τη γραμμή εντολών ή με το σύνολο (1) που είναι ενσωματωμένο (περιγράφεται παρακάτω).

-ένα allexport

Εξαγωγή όλων των μεταβλητών που έχουν εκχωρηθεί. (ΧΩΡΙΣ ΕΦΑΡΜΟΓΗ για 4.4αλφα)

-ντο

Διαβάστε τις εντολές από τη γραμμή εντολών. Δεν θα διαβαστούν εντολές από την τυπική είσοδο.

-ΝΤΟ noclobber

Μην αντικαταστήσετε υπάρχοντα αρχεία με ``> '' (UNIMPLEMENTED για 4.4alpha)

-μι errexit

Εάν δεν είναι αλληλεπιδραστική, βγείτε αμέσως εάν αποτύχει οποιαδήποτε μη δοκιμασμένη εντολή. Η κατάσταση εξόδου μιας εντολής θεωρείται ότι εξετάζεται ρητά εάν η εντολή χρησιμοποιείται για τον έλεγχο ενόςαν elifwhile ήμέχρι ή αν η εντολή είναι ο αριστερός χειρός ενός χειριστή `` && '' ή `` || ''.

-φά noglob

Απενεργοποίηση επέκτασης ονόματος διαδρομής.

noexec

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

-u nounset

Γράψτε ένα μήνυμα στο τυπικό σφάλμα όταν προσπαθείτε να αναπτύξετε μια μεταβλητή που δεν έχει οριστεί και αν το κέλυφος δεν είναι διαδραστικό, βγείτε αμέσως. (ΧΩΡΙΣ ΕΦΑΡΜΟΓΗ για 4.4αλφα)

-v πολύλογος

Το κέλυφος γράφει την είσοδό του στο τυπικό σφάλμα καθώς διαβάζεται. Χρήσιμο για την αποσφαλμάτωση.

xtrace

Γράψτε κάθε εντολή σε τυποποιημένο σφάλμα (που προηγείται από ένα `+ 'πριν εκτελεστεί.) Χρήσιμο για σφάλμα.

-q quietprofile

Εάν το -v ή -Χ έχουν οριστεί επιλογές, δεν τις εφαρμόζετε όταν διαβάζετε αρχεία αρχικοποίησης, αυτά είναι / etc / profile .profile και το αρχείο που καθορίζεται από τοENV μεταβλητή περιβάλλοντος.

-ΕΓΩ ignoreeof

Αγνοήστε τα EOF από την είσοδο όταν είναι διαδραστικά.

-Εγώ διαδραστικό

Αναγκάστε το κέλυφος να συμπεριφέρεται διαδραστικά.

-m οθόνη

Ενεργοποιήστε τον έλεγχο εργασιών (ρυθμίζεται αυτόματα όταν διαδραματίζεται).

-μικρό stdin

Ανάγνωση εντολών από την τυπική είσοδο (αυτόματη ρύθμιση εάν δεν υπάρχουν επιχειρήματα αρχείου). Αυτή η επιλογή δεν έχει καμία επίδραση όταν έχει οριστεί αφού το κέλυφος έχει ήδη αρχίσει να τρέχει (δηλ. Με το σετ (1)).

-V vi

Ενεργοποίηση του ενσωματωμένου επεξεργαστή γραμμής εντολών vi (1) (απενεργοποιεί -μι αν έχει ρυθμιστεί).

-ΜΙ emacs

Ενεργοποιήστε τον ενσωματωμένο επεξεργαστή γραμμής εντολών emacs (1) (απενεργοποιεί -V αν έχει ρυθμιστεί).

-σι κοινοποιώ

Ενεργοποίηση ασύγχρονης ειδοποίησης της ολοκλήρωσης εργασιών φόντου. (ΧΩΡΙΣ ΕΦΑΡΜΟΓΗ για 4.4αλφα)

Λεξική δομή

Το κέλυφος διαβάζει την είσοδο από την άποψη των γραμμών από ένα αρχείο και το διαχωρίζει σε λέξεις στο κενό διάστημα (κενά και καρτέλες) και σε ορισμένες ακολουθίες χαρακτήρων που είναι ειδικές στο κέλυφος που ονομάζεται `` operators '' Υπάρχουν δύο τύποι χειριστών: τους φορείς εκμετάλλευσης ελέγχου και τους φορείς ανακατεύθυνσης (η σημασία τους εξετάζεται αργότερα). Ακολουθεί μια λίστα με τους φορείς εκμετάλλευσης:

"Διαχειριστές ελέγχου:"

& && ( ) ; ;; | ||

"Διαχειριστής ανακατεύθυνσης:"

< > >| << >> <& >& <<- <>

Αναφορά

Η παραπομπή χρησιμοποιείται για την κατάργηση της ιδιαίτερης σημασίας ορισμένων χαρακτήρων ή λέξεων στο κέλυφος, όπως οι χειριστές, ο κενός χώρος ή οι λέξεις-κλειδιά. Υπάρχουν τρεις τύποι παραπομπών: αντιστοιχισμένα μεμονωμένα εισαγωγικά, αντιστοιχισμένα διπλά εισαγωγικά και αντίστροφη κάθετος.

Αντίστροφη κάθετο

Μια αντίστροφη κάθετος διατηρεί την κυριολεκτική έννοια του ακόλουθου χαρακτήρα, με εξαίρεση την Aq newline. Μια αντίστροφη κάθετος που προηγείται μιας νέας γραμμής Aq αντιμετωπίζεται ως συνέχιση της γραμμής.

Ενιαία αποσπάσματα

Ο αποκλεισμός χαρακτήρων σε μοναδικά εισαγωγικά διατηρεί την κυριολεκτική σημασία όλων των χαρακτήρων (εκτός από τα μοναδικά εισαγωγικά, καθιστώντας αδύνατη την τοποθέτηση μονών εισαγωγών σε μια μονό-αναφερόμενη συμβολοσειρά).

Διπλά αποσπάσματα

Ο συσχετισμός χαρακτήρων μέσα σε διπλά εισαγωγικά διατηρεί το κυριολεκτικό νόημα όλων των χαρακτήρων εκτός από το dollarsign ($) backquote (`) και την ανάστροφη κάθετο () Η αντίστροφη κάθετη μέσα στα διπλά εισαγωγικά είναι ιστορικά περίεργη και χρησιμεύει για να παραθέσει μόνο τους ακόλουθους χαρακτήρες:

$ `

Αλλιώς παραμένει κυριολεκτικά.

Δεσμευμένες λέξεις

Οι δεσμευμένες λέξεις είναι λέξεις που έχουν ιδιαίτερη σημασία στο κέλυφος και αναγνωρίζονται στην αρχή μιας γραμμής και μετά από έναν χειριστή ελέγχου. Τα παρακάτω είναι αποκλειστικές λέξεις:

! ΤαElif Ta fi Ta, ενώ η υπόθεση Ta

αλλι Ταγια Ta τότε Ta {Ta}

κάνε Τακάνει Ta μέχρι Ta, αν Ta esac

Η σημασία τους συζητείται αργότερα.

Ψευδώνυμα

Ένα ψευδώνυμο είναι ένα όνομα και η αντίστοιχη τιμή που έχει οριστεί χρησιμοποιώντας την εντολή ενσωματωμένης ψευδωνύμου (1). Κάθε φορά που μπορεί να εμφανιστεί μια δεσμευμένη λέξη (βλ. Παραπάνω) και αφού ελέγξει για επιφυλασσόμενες λέξεις, το κέλυφος ελέγχει τη λέξη για να δει αν αντιστοιχεί σε ένα ψευδώνυμο. Εάν το κάνει, το αντικαθιστά στο ρεύμα εισόδου με την τιμή του. Για παράδειγμα, εάν υπάρχει ένα ψευδώνυμο που ονομάζεται `` lf '' με την τιμή `` ls-F '' τότε η είσοδος:

Αν foobar

θα γινόταν

ls -F foobar

Τα ψευδώνυμα παρέχουν έναν βολικό τρόπο για τους αφανούς χρήστες να δημιουργούν συντομογραφίες εντολών χωρίς να χρειάζεται να μάθουν πώς να δημιουργούν λειτουργίες με επιχειρήματα. Μπορούν επίσης να χρησιμοποιηθούν για να δημιουργήσουν λεξικά σκοτεινό κώδικα. Η χρήση αυτή αποθαρρύνεται.

Εντολές

Το κέλυφος ερμηνεύει τις λέξεις που διαβάζει σύμφωνα με μια γλώσσα, η προδιαγραφή της οποίας βρίσκεται εκτός του πλαισίου της σελίδας αυτής της σελίδας (ανατρέξτε στην BNF στοPOSIX 1003.2 έγγραφο). Ουσιαστικά όμως, μια γραμμή διαβάζεται και αν η πρώτη λέξη της γραμμής (ή μετά από έναν χειριστή ελέγχου) δεν είναι μια δεσμευμένη λέξη, τότε το κέλυφος έχει αναγνωρίσει μια απλή εντολή. Διαφορετικά, μπορεί να έχει αναγνωριστεί μια σύνθετη εντολή ή κάποια άλλη ειδική κατασκευή.

Απλές εντολές

Εάν έχει αναγνωριστεί μια απλή εντολή, το κέλυφος εκτελεί τις ακόλουθες ενέργειες:

  1. Οι κορυφαίες λέξεις της φόρμας `` name = value '' απογυμνώνουν και εκχωρούνται στο περιβάλλον της απλής εντολής. Οι χειριστές ανακατεύθυνσης και τα επιχειρήματά τους (όπως περιγράφεται παρακάτω) αφαιρούνται και αποθηκεύονται για επεξεργασία.

  2. Οι υπόλοιπες λέξεις επεκτείνονται όπως περιγράφεται στην ενότητα που ονομάζεται `` Expansions '' και η πρώτη λέξη που απομένει θεωρείται το όνομα της εντολής και εντοπίζεται η εντολή. Οι υπόλοιπες λέξεις θεωρούνται τα επιχειρήματα της εντολής. Εάν δεν προέκυψε κανένα όνομα εντολής, τότε οι μεταβλητές αντιστοιχίσεων `` name = value '' που αναγνωρίζονται στο στοιχείο 1 επηρεάζουν το τρέχον κέλυφος.

  3. Οι ανακατευθύνσεις πραγματοποιούνται όπως περιγράφεται στην επόμενη ενότητα.

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

Οι ανακατευθύνσεις χρησιμοποιούνται για να αλλάξουν πού μια εντολή διαβάζει την είσοδό της ή στέλνει την έξοδο της. Σε γενικές γραμμές, οι ανακατευθύνσεις ανοίγουν, κλείνουν ή αντιγράφουν μια υπάρχουσα αναφορά σε ένα αρχείο. Η συνολική μορφή που χρησιμοποιείται για την ανακατεύθυνση είναι:

n αρχείο redir-op

όπου redir-op είναι ένας από τους προαναφερθέντες φορείς ανακατεύθυνσης. Ακολουθεί μια λίστα με τις πιθανές ανακατευθύνσεις. Το Bq n είναι ένας προαιρετικός αριθμός, όπως στο '3' (όχι `Bq 3 'που αναφέρεται σε έναν περιγραφέα αρχείου.

n> αρχείο

Επαναφορά τυπικής εξόδου (ή n) στο αρχείο.

n> | αρχείο

Ίδια, αλλά υπερισχύουν -ντο επιλογή.

n >> αρχείο

Προσθέστε τυπική έξοδο (ή n) στο αρχείο.

n <αρχείο

Ανακατεύθυνση τυπικής εισόδου (ή n) από αρχείο.

n1 <& n2

Διπλή τυπική είσοδος (ή n1) από τον περιγραφέα αρχείου n2.

n <& -

Κλείστε τυποποιημένη είσοδο (ή n).

n1> & n2

Διπλή τυπική έξοδος (ή n1) από n2.

n> & -

Κλείστε την τυπική έξοδο (ή n).

n <> αρχείο

Άνοιγμα αρχείου για ανάγνωση και εγγραφή σε τυπική είσοδο (ή n).

Η ακόλουθη ανακατεύθυνση καλείται συχνά "εδώ-έγγραφο"

n << οριοθέτης

εδώ-doc-κείμενο …

οριοθέτη

Το όλο κείμενο σε διαδοχικές γραμμές έως τον αποδιαμορφωτή αποθηκεύεται μακριά και τίθεται στη διάθεση της εντολής στην τυποποιημένη είσοδο ή στον περιγραφέα αρχείων n, εάν έχει καθοριστεί.Εάν αναφέρεται ο οριοθέτης όπως καθορίζεται στην αρχική γραμμή, τότε το here-doc-κείμενο αντιμετωπίζεται κυριολεκτικά, αλλιώς το κείμενο υπόκειται σε επέκταση παραμέτρων, υποκατάσταση εντολών και αριθμητική επέκταση (όπως περιγράφεται στην ενότητα "Επεκτάσεις") 'Αν ο χειριστής είναι `` << -' 'αντί για `` <<' 'τότε οι κορυφαίες καρτέλες στο here-doc-text είναι απογυμνωμένες.

Αναζήτηση και Εκτέλεση

Υπάρχουν τρεις τύποι εντολών: λειτουργίες κελύφους, ενσωματωμένες εντολές και κανονικά προγράμματα - και η εντολή αναζητείται (με το όνομα) με αυτή τη σειρά. Εκτελούνται με διαφορετικό τρόπο.

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

Οι ενσωματωμένες Shell εκτελούνται εσωτερικά στο κέλυφος, χωρίς να δημιουργείται νέα διαδικασία.

Διαφορετικά, εάν το όνομα της εντολής δεν ταιριάζει με κάποια λειτουργία ή ενσωματωμένη, η εντολή αναζητείται ως κανονικό πρόγραμμα στο σύστημα αρχείων (όπως περιγράφεται στην επόμενη ενότητα). Όταν εκτελείται ένα κανονικό πρόγραμμα, το κέλυφος τρέχει το πρόγραμμα, μεταβιβάζοντας τα επιχειρήματα και το περιβάλλον στο πρόγραμμα. Εάν το πρόγραμμα δεν είναι ένα κανονικό εκτελέσιμο αρχείο (δηλ. Εάν δεν αρχίζει με τον "μαγικό αριθμό" του οποίουASCII η παράσταση είναι "#!", έτσι execve (2) επιστρέφει Er ENOEXEC στη συνέχεια) το κέλυφος θα ερμηνεύσει το πρόγραμμα σε μια υποσέλιδα. Το κέλυφος του παιδιού θα ξεκινήσει εκ νέου σε αυτήν την περίπτωση, έτσι ώστε το αποτέλεσμα θα είναι σαν να είχε χρησιμοποιηθεί ένα νέο κέλυφος για να χειριστεί το σενάριο ad-hoc shell, εκτός από το ότι η θέση των χαστούμενων εντολών που βρίσκονται στο γονικό κέλυφος θα θυμόμαστε παιδί.

Σημειώστε ότι οι προηγούμενες εκδόσεις αυτού του εγγράφου και ο ίδιος ο πηγαίος κώδικας αναφέρονται παραπλανητικά και σποραδικά σε ένα σενάριο κελύφους χωρίς μαγικό αριθμό ως "διαδικασία κελύφους".

Αναζήτηση διαδρομής

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

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

  2. Το κέλυφος αναζητά κάθε είσοδο στοΜΟΝΟΠΑΤΙ με τη σειρά του για την εντολή. Η αξία τουΜΟΝΟΠΑΤΙη μεταβλητή θα πρέπει να είναι μια σειρά καταχωρίσεων που χωρίζονται από τα τετράγωνα. Κάθε καταχώρηση αποτελείται από ένα όνομα καταλόγου. Ο τρέχων κατάλογος μπορεί να υποδηλώνεται σιωπηρά από ένα κενό όνομα καταλόγου ή ρητά από μία μόνο περίοδο.

Κατάσταση εξόδου εντολών

Κάθε εντολή έχει κατάσταση εξόδου που μπορεί να επηρεάσει τη συμπεριφορά άλλων εντολών κελύφους. Το παράδειγμα είναι ότι μια εντολή εξέρχεται με μηδέν για κανονική ή επιτυχημένη και μη μηδενική για αποτυχία, σφάλμα ή ψευδή ένδειξη. Η σελίδα "man" για κάθε εντολή πρέπει να υποδεικνύει τους διάφορους κωδικούς εξόδου και τι σημαίνουν. Επιπλέον, οι ενσωματωμένες εντολές επιστρέφουν τους κωδικούς εξόδου, όπως και μια εκτελεσμένη λειτουργία κελύφους.

Σύνθετες εντολές

Οι σύνθετες εντολές είναι συνδυασμοί απλών εντολών με χειριστές ελέγχου ή δεσμευμένες λέξεις, δημιουργώντας μαζί μια πιο σύνθετη εντολή. Γενικότερα, μια εντολή είναι μία από τις ακόλουθες:

  • απλή εντολή
  • αγωγός
  • λίστα ή σύνθετη λίστα
  • σύνθετη εντολή
  • ορισμός λειτουργίας

Εκτός εάν δηλώνεται διαφορετικά, η κατάσταση εξόδου μιας εντολής είναι αυτή της τελευταίας απλής εντολής που εκτελείται από την εντολή.

Αγωγούς

Ένας αγωγός είναι μια ακολουθία μίας ή περισσότερων εντολών που διαχωρίζονται από τον χειριστή ελέγχου |. Η τυπική έξοδος όλης της τελευταίας εντολής συνδέεται με την τυπική είσοδο της επόμενης εντολής. Η τυπική έξοδος της τελευταίας εντολής κληρονομείται από το κέλυφος, όπως συνήθως.

Η μορφή ενός αγωγού είναι:

! εντολή1 command2 …

Η τυπική έξοδος της εντολής1 συνδέεται με την τυπική είσοδο της εντολής2. Η τυποποιημένη είσοδος, η τυπική έξοδος ή και οι δύο εντολές θεωρείται ότι εκχωρούνται από τον αγωγό πριν από οποιαδήποτε ανακατεύθυνση που καθορίζεται από τους χειριστές ανακατεύθυνσης που είναι μέρος της εντολής.

Εάν ο αγωγός δεν βρίσκεται στο παρασκήνιο (συζητείται αργότερα), το κέλυφος περιμένει να ολοκληρωθούν όλες οι εντολές.

Εάν η δεσμευμένη λέξη! δεν προηγείται του αγωγού, η κατάσταση εξόδου είναι η κατάσταση εξόδου της τελευταίας εντολής που καθορίζεται στην αγωγό. Διαφορετικά, η κατάσταση εξόδου είναι το λογικό NOT της κατάστασης εξόδου της τελευταίας εντολής. Δηλαδή, αν η τελευταία εντολή επιστρέψει μηδέν, η κατάσταση εξόδου είναι 1. αν η τελευταία εντολή επιστρέφει μεγαλύτερη από μηδέν, η κατάσταση εξόδου είναι μηδέν.

Επειδή η αντιστοίχιση αγωγών με τυποποιημένη είσοδο ή πρότυπη έξοδο ή και τα δύο λαμβάνει χώρα πριν από την ανακατεύθυνση, μπορεί να τροποποιηθεί με ανακατεύθυνση. Για παράδειγμα:

$ command1 2> & 1 | command2

στέλνει τόσο την τυπική έξοδο όσο και το τυπικό σφάλμα της εντολής1 στην τυπική είσοδο της εντολής2.

ΕΝΑ ; ή τερματισμού προκαλεί την εκτέλεση της προηγούμενης λίστας AND-OR (που περιγράφεται στη συνέχεια) διαδοχικά. το & a προκαλεί ασύγχρονη εκτέλεση της προηγούμενης λίστας AND-OR.

Σημειώστε ότι σε αντίθεση με μερικά άλλα κελύφη, κάθε διαδικασία στον αγωγό είναι ένα παιδί του κελύφους που επικαλείται (εκτός και αν είναι ενσωματωμένο στο κέλυφος, οπότε εκτελείται στο τρέχον κέλυφος - αλλά κάθε αποτέλεσμα που έχει στο περιβάλλον σκουπίζεται).

Εντολές φόντου -

Αν μια εντολή τερματιστεί από τον χειριστή ελέγχου ampersand (&), το κέλυφος εκτελεί την εντολή ασύγχρονα - δηλαδή, το κέλυφος δεν περιμένει την ολοκλήρωση της εντολής πριν εκτελέσει την επόμενη εντολή.

Η μορφή εκτέλεσης εντολής στο παρασκήνιο είναι:

εντολή1 & εντολή2 & …

Εάν το κέλυφος δεν είναι αλληλεπιδραστικό, η τυπική είσοδος μιας ασύγχρονης εντολής έχει οριστεί σε / dev / null

Λίστες - Γενικά Μιλώντας

Μια λίστα είναι μια ακολουθία μηδενικών ή περισσοτέρων εντολών που διαχωρίζονται από νέες γραμμές, ερωτηματικά ή αμπαρδές και προαιρετικά τερματίζονται από έναν από αυτούς τους τρεις χαρακτήρες. Οι εντολές σε μια λίστα εκτελούνται με τη σειρά που έχουν γραφτεί. Εάν η εντολή ακολουθείται από ένα ampersand, το κέλυφος ξεκινάει την εντολή και αμέσως προχωράει στην επόμενη εντολή. διαφορετικά περιμένει να τερματίσει η εντολή πριν προχωρήσετε στην επόμενη.

Λειτουργοί λίστας μικρών κυκλωμάτων

`` && '' και `` || '' είναι τελεστές OR-OR. Το `` && '' εκτελεί την πρώτη εντολή και στη συνέχεια εκτελεί τη δεύτερη εντολή εάν η κατάσταση εξόδου της πρώτης εντολής είναι μηδέν. Το `` || '' είναι παρόμοιο, αλλά εκτελεί τη δεύτερη εντολή iff η κατάσταση εξόδου της πρώτης εντολής είναι μηδενική. `` && '' και `` || 'και οι δύο έχουν την ίδια προτεραιότητα.

Κατασκευές Ελέγχου Ροής - εάν, αν και, για περίπτωση

Η σύνταξη της εντολής if είναι

αν υπάρχει λίστα

στη συνέχεια, στη λίστα

λίστα ελλείμματος

στη συνέχεια …

άλλος κατάλογος

fi

Η σύνταξη της εντολής while είναι

ενώ λίστα

κάντε μια λίστα

Έγινε

Οι δύο λίστες εκτελούνται επανειλημμένα ενώ η κατάσταση εξόδου της πρώτης λίστας είναι μηδενική. Η εντολή μέχρι είναι παρόμοια, αλλά έχει τη λέξη μέχρι να αντικατασταθεί, γεγονός που την αναγκάζει να επαναληφθεί έως ότου η κατάσταση εξόδου της πρώτης λίστας είναι μηδέν.

Η σύνταξη της εντολής για είναι

για μεταβλητή στη λέξη …

κάντε μια λίστα

Έγινε

Οι λέξεις έχουν επεκταθεί και, στη συνέχεια, η λίστα εκτελείται επανειλημμένα με τη μεταβλητή που έχει οριστεί σε κάθε λέξη με τη σειρά της. να κάνετε και να κάνετε μπορεί να αντικατασταθεί με `` {'' και ``} ''

Η σύνταξη της εντολής διάλειμμα και συνέχιση είναι

σπάσει num

συνέχεια num

Ο διαχωρισμός τερματίζει τον αριθμό των εσώτατων γραμμών για ή κατά τους βρόχους. Συνεχίστε με την επόμενη επανάληψη του εσώτερου βρόχου. Αυτά υλοποιούνται ως ενσωματωμένες εντολές.

Η σύνταξη της εντολής είναι

λέξη περίπτωση στην

μοτίβο) ?;

esac

Το μοτίβο μπορεί να είναι ένα ή περισσότερα μοτίβα (δείτε τα μοτίβα Shell που περιγράφονται παρακάτω), χωρισμένα με χαρακτήρες `` ''.

Ομαδοποίηση εντολών μαζί

Οι εντολές μπορούν να ομαδοποιηθούν γράφοντας είτε

(λίστα)

ή

{list;

Το πρώτο από αυτά εκτελεί τις εντολές σε ένα υποσύνολο. Ενσωματωμένες εντολές ομαδοποιημένες σε μια (λίστα) δεν θα επηρεάσουν το τρέχον κέλυφος. Η δεύτερη φόρμα δεν κάνει άλλο κοχύλι, επομένως είναι ελαφρώς πιο αποδοτική. Ομαδοποίηση εντολών μαζί με αυτόν τον τρόπο σας επιτρέπει να ανακατευθύνετε την έξοδο τους σαν να ήταν ένα πρόγραμμα:

{printf hello; printf world n ";}> χαιρετισμός

Λειτουργίες

Η σύνταξη ενός ορισμού λειτουργίας είναι

όνομα ()

Ο ορισμός συνάρτησης είναι μια εκτελέσιμη δήλωση. όταν εκτελείται, εγκαθιστά μια συνάρτηση που ονομάζεται όνομα και επιστρέφει μηδενική κατάσταση εξόδου. Η εντολή είναι κατά κανόνα μια λίστα που συνοδεύει το `` {'' και ``} ''

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

τοπική μεταβλητή | - …

Τοπική υλοποιείται ως ενσωματωμένη εντολή.

Όταν μια μεταβλητή γίνεται τοπική, κληρονομεί την αρχική τιμή και τις εξαγόμενες και αναγνωρισμένες σημαίες από τη μεταβλητή με το ίδιο όνομα στο περιβάλλον πεδίο, αν υπάρχει. Διαφορετικά, η μεταβλητή αρχικά είναι απενεργοποιημένη. Το κέλυφος χρησιμοποιεί δυναμική οριοθέτηση, έτσι ώστε αν κάνετε την μεταβλητή x τοπική για να λειτουργήσει το f, η οποία στη συνέχεια καλεί τη συνάρτηση g, οι αναφορές στην μεταβλητή x που γίνεται μέσα στο g θα αναφέρονται στη μεταβλητή x δηλωμένη στο f, όχι στην παγκόσμια μεταβλητή που ονομάζεται x .

Η μόνη ειδική παράμετρος που μπορεί να γίνει τοπικά είναι `` - '' Κάνοντας `` - '' τοπικές οποιεσδήποτε επιλογές κελύφους που αλλάζουν μέσω της εντολής set μέσα στη λειτουργία που θα αποκατασταθεί στις αρχικές τους τιμές όταν επιστρέψει η συνάρτηση.

Η σύνταξη της εντολής επιστροφής είναι

επιστροφή exitstatus

Τερματίζει την τρέχουσα λειτουργία εκτέλεσης. Η επιστροφή υλοποιείται ως ενσωματωμένη εντολή.

Μεταβλητές και παράμετροι

Το κέλυφος διατηρεί ένα σύνολο παραμέτρων. Μια παράμετρος που δηλώνεται με ένα όνομα ονομάζεται μεταβλητή. Κατά την εκκίνηση, το κέλυφος μετατρέπει όλες τις μεταβλητές περιβάλλοντος σε μεταβλητές κελύφους. Μπορείτε να ορίσετε νέες μεταβλητές χρησιμοποιώντας τη φόρμα

όνομα = τιμή

Οι μεταβλητές που ορίζονται από το χρήστη πρέπει να έχουν ένα όνομα που αποτελείται αποκλειστικά από αλφαβητικά, αριθμητικά στοιχεία και υπογραμμίσεις - το πρώτο από τα οποία δεν πρέπει να είναι αριθμητικά. Μια παράμετρος μπορεί επίσης να συμβολίζεται με έναν αριθμό ή έναν ειδικό χαρακτήρα όπως εξηγείται παρακάτω.

Παράμετροι θέσης

Μια παράμετρος θέσης είναι μια παράμετρος που δηλώνεται με έναν αριθμό (n> 0). Το κέλυφος τα θέτει αρχικά στις τιμές των γραμμών εντολών που ακολουθούν το όνομα του σεναρίου κελύφους. Το ενσωματωμένο σύνολο (1) μπορεί επίσης να χρησιμοποιηθεί για τη ρύθμιση ή την επαναφορά του.

Ειδικές παράμετροι

Μια ειδική παράμετρος είναι μια παράμετρος που δηλώνεται με έναν από τους ακόλουθους ειδικούς χαρακτήρες. Η τιμή της παραμέτρου παρατίθεται δίπλα στον χαρακτήρα της.

*

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

@

Επέκταση στις παραμέτρους θέσης, ξεκινώντας από μία.Όταν η επέκταση εμφανίζεται μέσα σε διπλά εισαγωγικά, κάθε παράμετρος θέσης επεκτείνεται ως ξεχωριστό όρισμα. Εάν δεν υπάρχουν παράμετροι θέσης, η επέκταση του @ δημιουργεί μηδενικά επιχειρήματα, ακόμα και όταν το @ είναι διπλός. Για παράδειγμα, αυτό σημαίνει ότι αν το $ 1 είναι `` abc '' και το $ 2 είναι `` def ghi '' τότε το Qq $ @ επεκτείνεται στα δύο επιχειρήματα:

abc def ghi

#

Επέκταση στον αριθμό των παραμέτρων θέσης.

?

Επέκταση στην κατάσταση εξόδου του πιο πρόσφατου αγωγού.

- (Hyphen.)

Επεκτείνεται στις τρέχουσες σημαίες επιλογής (τα ονόματα επιλογών ενός γράμματος που συνενώνονται σε μια συμβολοσειρά), όπως καθορίζεται στην κλήση, από την καθορισμένη εντολή ή από το κέλυφος.

$

Επεκτείνεται στο αναγνωριστικό διαδικασίας του κληθέντος κελύφους. Ένας υποσέλιδος διατηρεί την ίδια τιμή του $ με τον γονέα του.

!

Επεκτείνεται στο αναγνωριστικό διαδικασίας της πιο πρόσφατης εντολής φόντου που εκτελείται από το τρέχον κέλυφος. Για έναν αγωγό, το αναγνωριστικό διαδικασίας είναι εκείνο της τελευταίας εντολής στη γραμμή.

0 (μηδέν.)

Επέκταση στο όνομα του σεναρίου κελύφους ή shell.

Word Expansions

Αυτή η ρήτρα περιγράφει τις διάφορες επεκτάσεις που εκτελούνται σε λέξεις. Δεν εκτελούνται όλες οι επεκτάσεις σε κάθε λέξη, όπως εξηγείται αργότερα.

Οι επεκτάσεις Tilde, οι επεκτάσεις παραμέτρων, οι υποκαταστάσεις εντολών, οι αριθμητικές επεκτάσεις και οι μετακινήσεις προσφορών που εμφανίζονται μέσα σε μια μόνο λέξη, επεκτείνονται σε ένα μόνο πεδίο. Είναι μόνο επέκταση πεδίων ή επέκταση διαδρομής που μπορεί να δημιουργήσει πολλαπλά πεδία από μία μόνο λέξη. Η μόνη εξαίρεση σε αυτόν τον κανόνα είναι η επέκταση της ειδικής παραμέτρου @ μέσα σε διπλά εισαγωγικά, όπως περιγράφηκε παραπάνω.

Η σειρά επέκτασης λέξεων είναι:

  1. Επέκταση Tilde, επέκταση παραμέτρων, αντικατάσταση εντολών, αριθμητική επέκταση (όλα αυτά συμβαίνουν ταυτόχρονα).

  2. Ο χωρισμός πεδίου πραγματοποιείται σε πεδία που δημιουργούνται από το βήμα (1), εκτός εάν τοIFS η μεταβλητή είναι μηδενική.

  3. Επέκταση ονόματος διαδρομής (εκτός εάν έχει οριστεί -φά ισχύει).

  4. Απόσπασμα από παράθεση.

Ο χαρακτήρας $ χρησιμοποιείται για την εισαγωγή επέκτασης παραμέτρων, αντικατάσταση εντολών ή αριθμητική αξιολόγηση.

Tilde Expansion (αντικαθιστώντας τον οικείο κατάλογο του χρήστη)

Μια λέξη που αρχίζει με ένα μη τιμαριθμημένο χαρακτήρα tilde (~) υπόκειται σε επέκταση tilda. Όλοι οι χαρακτήρες μέχρι την κάθετο (/) ή το τέλος της λέξης αντιμετωπίζονται ως όνομα χρήστη και αντικαθίστανται από τον οικείο κατάλογο του χρήστη. Αν το όνομα χρήστη λείπει (όπως στο ~ / foobar) η tilde αντικαθίσταται με την τιμή του ΣΠΙΤΙ μεταβλητή (ο αρχικός κατάλογος του τρέχοντος χρήστη).

Επέκταση παραμέτρων

Η μορφή επέκτασης παραμέτρων έχει ως εξής:

$ {έκφραση}

όπου η έκφραση αποτελείται από όλους τους χαρακτήρες έως ότου η αντιστοίχιση ``} '' Οποιαδήποτε ``} '' ξεφύγει από μια ανάστροφη κάθετο ή μέσα σε μια συμβολοσειρά και οι χαρακτήρες σε ενσωματωμένες αριθμητικές επεκτάσεις, αντικαταστάσεις εντολών και μεταβλητές επεκτάσεις δεν εξετάζονται για τον προσδιορισμό αντιστοίχιση ``} ''

Η απλούστερη μορφή επέκτασης παραμέτρων είναι:

$ {parameter}

Η τιμή, εάν υπάρχει, της παράμετρος αντικαθίσταται.

Το όνομα ή το σύμβολο της παραμέτρου μπορούν να περικλείονται σε τιράντες, οι οποίες είναι προαιρετικές εκτός από τις παραμέτρους θέσης με περισσότερα από ένα ψηφία ή όταν ακολουθείται από μια παράμετρο που μπορεί να ερμηνευτεί ως τμήμα του ονόματος. Εάν εμφανιστεί μια επέκταση παραμέτρων μέσα σε διπλά εισαγωγικά:

  1. Η επέκταση της οδού δεν εκτελείται στα αποτελέσματα της επέκτασης.

  2. Ο διαχωρισμός πεδίου δεν εκτελείται στα αποτελέσματα της επέκτασης, με την εξαίρεση της @.

Επιπλέον, μια επέκταση παραμέτρων μπορεί να τροποποιηθεί χρησιμοποιώντας μία από τις ακόλουθες μορφές.

$ {παράμετρος: -γλώσσα}

Χρησιμοποιήστε τις προεπιλεγμένες τιμές. Εάν η παράμετρος είναι απενεργοποιημένη ή μηδενική, η επέκταση της λέξης αντικαθίσταται. διαφορετικά, η τιμή της παραμέτρου αντικαθίσταται.

$ {παράμετρος: = λέξη}

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

$ {παράμετρος:? λέξη}

Αναφέρετε σφάλμα εάν είναι μηδέν ή ανενεργό. Εάν η παράμετρος είναι απενεργοποιημένη ή μηδενική, η επέκταση της λέξης (ή ένα μήνυμα που υποδηλώνει ότι είναι απενεργοποιημένη αν παραλείπεται η λέξη) γράφεται στο τυπικό σφάλμα και το κέλυφος εξέρχεται με κατάσταση μη εξόδου. Διαφορετικά, αντικαθίσταται η τιμή της παραμέτρου. Ένα διαδραστικό κέλυφος δεν χρειάζεται να βγει.

$ {παράμετρος: + λέξη}

Χρήση εναλλακτικής τιμής. Εάν η παράμετρος είναι απενεργοποιημένη ή μηδενική, η τιμή null αντικαθίσταται. διαφορετικά, η επέκταση της λέξης αντικαθίσταται.

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

$ {# parameter}

Μήκος στοιχειοσειράς. Το μήκος των χαρακτήρων της τιμής της παραμέτρου.

Οι ακόλουθες τέσσερις ποικιλίες επέκτασης παραμέτρων προβλέπουν την επεξεργασία υποσέλιδου. Σε κάθε περίπτωση, χρησιμοποιείται για την αξιολόγηση των μοτίβων η συμβολική αντιστοίχιση (βλέπε Shell Patterns) αντί για κανονική σημείωση έκφρασης. Εάν η παράμετρος είναι * ή @, το αποτέλεσμα της επέκτασης είναι απροσδιόριστο. Η συμπλήρωση της πλήρους συμβολοσειράς επέκτασης σε διπλά εισαγωγικά δεν προκαλεί την παραπομπή των ακόλουθων τεσσάρων ειδών χαρακτήρων μοτίβων, ενώ η αναφορά των χαρακτήρων μέσα στα τιράντες έχει αυτό το αποτέλεσμα.

$ {παράμετρος% λέξη}

Αφαιρέστε το μικρότερο μοτίβο προσφοράς. Η λέξη επεκτείνεται για να παράγει ένα μοτίβο. Η επέκταση παράμετρος παράγει παράμετρο, με το μικρότερο τμήμα της κατάληξης να αντιστοιχεί στο διαγραμμένο πρότυπο.

$ {παράμετρος %% λέξη}

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

$ {παράμετρος # λέξη}

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

$ {παράμετρος ## λέξη}

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

Αντικατάσταση εντολών

Η αντικατάσταση εντολών επιτρέπει την αντικατάσταση της εξόδου μιας εντολής στη θέση του ίδιου του εντολή. Η αντικατάσταση της εντολής εμφανίζεται όταν η εντολή περικλείεται ως εξής:

$ (εντολή)

ή Po `` backquoted '' έκδοση Pc:

«εντολή»

Το κέλυφος διευρύνει την αντικατάσταση εντολών εκτελώντας εντολή σε ένα περιβάλλον υποσέλιδου και αντικαθιστώντας την αντικατάσταση εντολών με την τυπική έξοδο της εντολής, αφαιρώντας ακολουθίες ενός ή περισσοτέρων s στο τέλος της υποκατάστασης. (Ενσωματωμένο s πριν από το τέλος της εξόδου δεν έχουν αφαιρεθεί. Ωστόσο, κατά τη διάρκεια του χωρισμού του πεδίου, μπορεί να μεταφραστούν σε s, ανάλογα με την τιμή τουIFS και αναφέροντας ότι ισχύει.)

Αριθμητική επέκταση

Η αριθμητική επέκταση παρέχει έναν μηχανισμό για την αξιολόγηση μιας αριθμητικής έκφρασης και την αντικατάσταση της αξίας της. Η μορφή της αριθμητικής επέκτασης έχει ως εξής:

$ ((έκφραση))

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

Στη συνέχεια, το κέλυφος αντιμετωπίζει αυτό ως αριθμητική έκφραση και υποκαθιστά την αξία της έκφρασης.

Διαχωρισμός λευκού χώρου (χωρισμός πεδίου)

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

Το κέλυφος αντιμετωπίζει κάθε χαρακτήρα τουIFS ως οριοθέτης και χρησιμοποιήστε τους οριοθέτες για να χωρίσετε τα αποτελέσματα επέκτασης παραμέτρων και αντικατάσταση εντολών σε πεδία.

Διόρθωση ονόματος αρχείου (δημιουργία ονόματος αρχείου)

Εκτός αν το -φά σημαία έχει οριστεί, η δημιουργία ονόματος αρχείου εκτελείται μετά την ολοκλήρωση του διαχωρισμού λέξεων. Κάθε λέξη θεωρείται ως μια σειρά μοτίβων, που χωρίζονται από πτέρυγες. Η διαδικασία επέκτασης αντικαθιστά τη λέξη με τα ονόματα όλων των υπαρχόντων αρχείων των οποίων τα ονόματα μπορούν να σχηματιστούν αντικαθιστώντας κάθε πρότυπο με μια συμβολοσειρά που ταιριάζει με το καθορισμένο μοτίβο. Υπάρχουν δύο περιορισμοί: πρώτον, ένα μοτίβο δεν μπορεί να ταιριάζει με μια συμβολοσειρά που περιέχει μια κάθετο, και δεύτερον, ένα μοτίβο δεν μπορεί να ταιριάζει με μια συμβολοσειρά που αρχίζει με μια περίοδο εκτός εάν ο πρώτος χαρακτήρας του μοτίβου είναι μια περίοδος. Η επόμενη ενότητα περιγράφει τα μοτίβα που χρησιμοποιούνται τόσο για την επέκταση Pathname όσο και για την εντολή case (1).

Shell Patterns

Ένα μοτίβο αποτελείται από κανονικούς χαρακτήρες, οι οποίοι ταιριάζουν με τους ίδιους και μετα-χαρακτήρες. Οι μετα-χαρακτήρες είναι ``! `` `` `` `` `` Και `` '' Αυτοί οι χαρακτήρες χάνουν τ