Γράφοντας σενάρια sh στο Unix. Τα σενάρια είναι εύκολα

Οποιοσδήποτε αρχάριος συστηματικός Διαχειριστής Linux Νωρίτερα ή αργότερα αντιμετωπίζει μια τέτοια έννοια ως " γραφή", Αν είναι ένα από τα σενάρια εκκίνησης όπως /etc/rc.d/rc. ή γραμμένο από τον προγραμματιστή στο σενάριο διαμόρφωσης Διαμορφώστε.. Σε αυτό το άρθρο θα προσπαθήσω να δείξω ότι τα σενάρια γραφής Κέλυφος. Δεν είναι κάτι από έναν αριθμό εξερχόμενων και αρκετά κάτω από την εξουσία ακόμη και νεοφερμένο στον κόσμο του Linux.

Ας ξεκινήσουμε με αυτό που θα αναλύσουμε τι κρύβεται πίσω από τους Αγγλικούς Όρους Κέλυφος.και γραφή. Κέλυφος., ή το κέλυφος, καθώς αυτός ο όρος, μερικές φορές η μετάφραση είναι ένας διερμηνέας εντολής, μια διεπαφή μεταξύ του χρήστη και του λειτουργικού συστήματος, του πυρήνα του. Αλλά, επιπλέον, είναι επίσης μια ισχυρή γλώσσα προγραμματισμού και σενάρια γραφής. Περιέχει τις λέξεις εξυπηρέτησης και τα σχέδια ελέγχου και σας επιτρέπει να γράψετε προγράμματα σε αυτό. Ένα τέτοιο πρόγραμμα στα σενάρια που ονομάζεται γραφήΜπορεί να συνδυάσει τις κλήσεις συστήματος και τις εντολές του λειτουργικού συστήματος, καθώς και εξωτερικές βοηθητικές εφαρμογές, δημιουργώντας Ισχυρό εργαλείο Για τη χορήγηση του συστήματος.

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

Η αρχή του χρόνου

Έτσι, πρώτα απ 'όλα, πρέπει να καταλάβουμε τη δομή του σεναρίου. Δεν αποτελεί τίποτα περίπλοκο. Με μεγάλη, το απλούστερο σενάριο είναι απλά η λίστα εντολών συστήματος. Για παράδειγμα:

Echo Αυτό είναι απλά παράδειγμα
Ποιός είμαι.
Απελευθερώστε -α.

Αυτές οι εντολές συνδυάζονται σε ένα αρχείο. Αλλά το κέλυφος πρέπει να γνωρίζει ότι πρέπει να επεξεργαστεί αυτό το αρχείο και όχι μόνο να διαβάσει τα περιεχόμενά του. Για αυτό, εξυπηρετεί ένα ειδικό σχέδιο: #!

Αυτός ο σχεδιασμός ονομάζεται " sha-bang." Στην πραγματικότητα, το # ορίζει ένα σχόλιο, αλλά σε αυτή την περίπτωση, το Sha-Bang σημαίνει ότι μετά από το χειριστή του σεναρίου. Για παράδειγμα:

#! / Bin / bash
#! / bin / sh
#! / USR / BIN / PERL

Θα επικεντρωθούμε σε Bash, Bourne-και πάλι κέλυφος. Αυτό το κέλυφος εγκαθίσταται από προεπιλογή σε όλα σχεδόν τα συστήματα Linux και / bin / s αναφέρεται σε αυτό. Το τέλος του σεναρίου αναφέρει την έξοδο λέξης υπηρεσίας.

Ενόπλωση με αυτές τις γνώσεις, γράψτε το πρώτο μας σενάριο:

#! / Bin / bash
echo Simple Script # Η εντολή ECHO εμφανίζει ένα μήνυμα στην οθόνη
echo You:
wHOAMI # WHOAMI δείχνει το όνομα του εγγεγραμμένου χρήστη
echo Το σύστημά σας ξεκίνησε
uptime # uptime δείχνει χρόνο επεξεργασίας
echo σήμερα
Ημερομηνία # Ημερομηνία εμφανίζει την τρέχουσα ημερομηνία και ώρα
echo για τώρα
ΕΞΟΔΟΣ.

Αποθηκεύστε αυτό το αρχείο με το όνομα Tutor1.Sh. Ας εκτελέσουμε την εντολή για να δημιουργήσετε το σενάριο εκτελέσιμο.

Chmod + rx tutor1.sh

Το αποτέλεσμα της εκτέλεσης του σεναρίου θα είναι:

[Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]: ~ / Doc / open source $ ./Tutor1.sh
Απλό σενάριο
Εσείς:
voland.
Το σύστημά σας ξεκίνησε
14:38:46 Κάτω από 1:48, 2 χρήστες, μέσο φορτίου: 0,47, 0,43, 0,41
Σήμερα
SID FEB 26 14:38:46 MSK 2006
Μέχρι τώρα

Πηγαίνετε πιο σοβαρή.

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

Πρώτα απ 'όλα, είναι απαραίτητο να προσδιοριστεί - ένα αντίγραφο ασφαλείας του τι θα κάνουμε. Επομένως, το σενάριο μας θα πρέπει να είναι σε θέση να συνεργαστεί με τη γραμμή εντολών. Επιχειρήματα Γραμμή εντολών Μετά το όνομα του σεναρίου μέσω του χώρου: Somescript Arg1 Arg2 Arg3. Το σενάριο αντιλαμβάνεται τα επιχειρήματα με τους αριθμούς των παρακάτω, οπότε θα χρησιμοποιήσουμε το σχεδιασμό του τύπου $ number_argument, δηλ. $ 1, $ 2, $ 3. Το $ είναι ένας χαρακτήρας υποκατάστασης που χρειαζόμαστε όταν εργάζεστε με μεταβλητές. Οι μεταβλητές στο σενάριο καθορίζονται ως όνομα_name \u003d τιμή. Θα χρησιμοποιήσουμε μεταβλητές maxparams για να καθορίσουμε τον μέγιστο αριθμό παραμέτρων γραμμής εντολών, backupfile για να ορίσετε το όνομα του αρχείου, το backupdir για ένα φάκελο που θα κάνουμε και το ArchiViedir για ένα φάκελο, βόλτες που θα τοποθετήσουμε το αρχείο. Το πιο σημαντικό μέρος του σεναρίου θα είναι οι εντολές αναζήτησης και αρχειοθέτησης όλων των αρχείων και φακέλων που βρίσκονται στο καθορισμένο:

Εύρημα. -Περισσότερα F -Print0 | Xargs -0 tar rvf "$ archive.tar"\u003e / dev / null
gzip $ archive.tar

Ας το καταλάβουμε ότι αυτές οι ομάδες κάνουν. Το εύρημα αναζητά στον τρέχοντα κατάλογο (λέει το πρώτο επιχείρημα. "") Όλα τα αρχεία και δίνουν την πλήρη διαδρομή τους (Print0). Αυτά τα μονοπάτια ανακατεύουν την εντολή TAR, η οποία συλλέγει όλα τα αρχεία σε ένα. Στη συνέχεια, η εντολή GZIP, αρχειοθετούμε το προκύπτον αρχείο πίσσας. Ομάδα \u003e / dev / null Βολικό αν αρχειοθετήσετε ένας μεγάλος αριθμός από αρχεία. Σε αυτή την περίπτωση, τα ονόματά τους και η πλήρης πορεία τους δεν εμφανίζονται στην κονσόλα.

Το επόμενο βήμα θα πρέπει να παρέχει ώθηση στον χρήστη πώς να χρησιμοποιήσετε το σενάριο εάν επιτρέπει ορισμένα σφάλματα.

Για παράδειγμα, αυτός ο σχεδιασμός

Εάν [$ # -LT "$ MAXPARAMS"];
Επειτα.
Ηχώ.

Ηχώ.
Έξοδος 0.
fi

Πες μου ότι ο χρήστης έδειξε τον ανεπαρκές αριθμό παραμέτρων γραμμής εντολών. Εάν [κατάσταση] ... fi Ορίζει τον υπό όρους σχεδιασμό. $ # -LT "$ MAXPARAMS" Ελέγχει τον αριθμό των παραμέτρων που έχουν εισαχθεί και αν αυτός ο αριθμός είναι μικρότερος από τα maxparams, ο χρήστης θα εκδοθεί ένα εσφαλμένο μήνυμα εισόδου. Η έξοδος 0 θα κάνει τη διακοπή της δέσμης ενεργειών χωρίς να καθορίζει τον κωδικό σφάλματος. Ομοίως επαληθευμένη περίσσεια επιτρεπτός αριθμός Παράμετροι, μόνο αντί LS (λιγότερο - λιγότερο από), πρέπει να καθορίσετε το GT (μεγαλύτερο από τότε - περισσότερο από). Τώρα, όταν εξηγούνται τα στιγμιότυπα του σεναρίου, μπορείτε να πάτε στην πλήρη έκδοση:

#! / Bin / bash
# Περιγραφή:
# + Δημιουργεί ένα αντίγραφο ασφαλείας όλων των αρχείων στον καθορισμένο κατάλογο
# + σε "tarball" (αρχείο Archive Tar.gz).
# + Χρήση:
# + Sh backup.sh_archwheel φάκελο φακέλου-πηγή-πηγή
#+

# Μέγιστος αριθμός παραμέτρων γραμμής εντολών
Maxparams \u003d 3.

Εάν [$ # -LT "$ MAXPARAMS"];
Επειτα.
Ηχώ.
eCHO "Χρήση: SH` Basename $ 0` Ο φάκελος του φακέλου Name_Name"
Ηχώ.
Έξοδος 0.
fi

Εάν [$ # -GT "$ maxparams"];
Επειτα.
Ηχώ.
eCHO "Για αυτό το σενάριο χρειάζεστε μόνο $ MaxParams Γραμμές εντολών!"
Ηχώ.
Έξοδος 0.
fi

# Μεταβλητές που χρησιμοποιούμε στο σενάριο
Backupfile \u003d $ 1-backup - $ (ημερομηνία +% m-% d-% y)
Αρχείο \u003d $ backupfile
Backupdir \u003d $ 2
Archizenir \u003d $ 3

# Ελέγξτε εάν υπάρχει φάκελος προέλευσης και φάκελο προορισμού
ΑΝ [!! -E $ backupdir];
Επειτα.
Ηχώ.
echo "\\" $ backupdir \\ "δεν υπάρχει!"
Ηχώ.
Έξοδος 0.
fi

ΑΝ [!! -α $ artizizizeir];
Επειτα.
Ηχώ.
echo "\\" $ artizivienir \\ "δεν υπάρχει, δημιουργεί ..."
mkdir $ archiziziir.
echo "έτοιμη".
fi

# Ελέγξτε αν υπάρχουν αρχεία στην πηγή και τον προορισμό.
cD $ archiziveir.
Εάν [-e $ archive.tar.gz];
Τότε rm $ archive.tar.gz
fi

cD $ backupdir
Εάν [-e $ archive.tar.gz];
Τότε rm $ archive.tar.gz
fi

# Σπίτι μέρος του σεναρίου ...
echo "Κάντε ένα αντίγραφο ασφαλείας \\" $ backupdir \\ "για να αρχειοθετήσετε \\" $ archive.tar.gz \\ "..."
Εύρημα. -Περισσότερα F -Print0 | Xargs -0 tar rvf "$ archive.tar"\u003e / dev / null
gzip $ archive.tar
echo "\\" $ backupdir \\ "προηγήθηκε με επιτυχία στο αρχείο \\" $ archive.tar.gz \\ "."

# Μετακινήστε το αρχείο αρχείου στον φάκελο ArchiViedir
echo "μετακινήστε το αρχείο \\" $ archive.tar.gz \\ "στο φάκελο \\" $ archiziveir \\ "".
mv $ archive.tar.gz $ artiziveir / $ archive.tar.gz
echo "έτοιμη".

Ελπίζω ότι τα highlights σχολίασα λεπτομερώς. Εάν έχετε οποιεσδήποτε ερωτήσεις, μπορείτε να επικοινωνήσετε μαζί μου στο [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] Συνιστώ επίσης ένα αξιοσημείωτο βιβλίο με προηγμένο οδηγό Bash-Scripting Mendel Cooper (Mendel Cooper), ο οποίος με βοήθησε πάρα πολύ όταν ήμουν γνωστός με σενάρια. Επιτυχής προγραμματισμός.

ΥΣΤΕΡΟΓΡΑΦΟ. Πολλά ευχαριστώ Παραμορφώνω. Για τα σχόλια και τις συμβουλές της.

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

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

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

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

Μικρό παράδειγμα σεναρίου

Το παρακάτω είναι ένα παράδειγμα ενός σεναρίου που αναζητά όλα τα αρχεία καταγραφής στον κατάλογο / var / log. Εάν η κλήση συμβεί χωρίς να καθορίσετε τις παραμέτρους, τα ονόματα όλων των αρχείων καταγραφής γράφονται στο αρχείο LOG-LIST.TXT που βρίσκεται στον αρχικό κατάλογο του χρήστη. Όταν καθορίζετε την παράμετρο String, η αναζήτηση πραγματοποιείται από την είσοδό του σε ονόματα αρχείων. Αυτό το σενάριο Bash θα πρέπει να λειτουργεί εξίσου σε οποιαδήποτε κατανομή του Linux.

#! / bin / bash εάν [-n "$ 1"]; Στη συνέχεια, βρείτε / var / log -ype f -name "* $ 1 * .log" -print\u003e ~ / log-list.txt echo "άσκηση αναζήτηση με φράση" $ 1 "" else find / var / log -ype f - Όνομα "* .Log" -Print\u003e ~ / log-list.txt echo "Αναζήτηση για όλα τα αρχεία καταγραφής που ολοκληρώθηκαν"

Δημιουργήστε ένα αρχείο Findlog στον κατάλογο / usr / τοπικό / bin και αντιγράψτε το παραπάνω Κωδικός προγράμματος. Το αρχείο πρέπει να γίνει εκτελέσιμο χρησιμοποιώντας την εντολή chmod ή κάντε κλικ σε αυτό. Κάντε δεξί κλικ Ποντίκια και πηγαίνετε στο στοιχείο "Ιδιότητες". Στο παράθυρο που ανοίγει, επιλέξτε την καρτέλα "Δεξιά" και ενεργοποιήστε το "Αφήστε την εκτέλεση αρχείων τόσο του διακόπτη προγραμμάτων». Μετά από αυτές τις λειτουργίες, μπορείτε να εκτελέσετε το σενάριο στο τερματικό χρησιμοποιώντας τις οδηγίες του ονόματός του.

Sudo Findlog "Σφάλμα" Made Search by φράση "Σφάλμα" Sudo Findlog Αναζήτηση όλων των αρχείων καταγραφής

Επεξήγηση της χρήσης των σεναρίων

Οποιοδήποτε σενάριο που δημιουργήθηκε στο Linux πρέπει να ξεκινήσει από τη συμβολοσειρά ορισμού του προγράμματος. Δώστε προσοχή στην πρώτη γραμμή από το παράδειγμα "#! / Bin / bash". Αυτή, στην πραγματικότητα, είναι ένα σχόλιο, καθώς ξεκινά με το σήμα πλέγματος, αλλά Θαυμαστικό Λέει ο τερματικός σταθμός ότι το επόμενο κείμενο καθορίζει τη θέση του προγράμματος χειρισμού. Σε αυτή την περίπτωση, δείξαμε τη θέση του εκτελέσιμου αρχείου του διερμηνέα εντολών Bash.

Βάζουμε το σενάριο στον κατάλογο / usr / τοπικό / bin. Αυτός είναι ένας από τους φακέλους στους οποίους λειτουργικό σύστημα Δίνει ιδιαίτερη προσοχή. Κατά την εισαγωγή του ονόματος εντολών στο παράθυρο Terminal, OS προβάλλει έναν αριθμό φακέλων για την παρουσία του εκτελέσιμου αρχείου.

Εάν το σενάριο βρίσκεται σε οποιονδήποτε άλλο κατάλογο, μπορείτε να το καλέσετε χρησιμοποιώντας άμεση κυκλοφορία. Για να το κάνετε αυτό, καθορίστε την απόλυτη ή σχετική διαδρομή προς το αρχείο. Εάν το αρχείο βρίσκεται στον τρέχοντα κατάλογο, η προϋπόθεση είναι η χρήση του σχεδιασμού ". Easter_script".

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

ECHO $ \u200b\u200bPATH /HOME/USERNAME/.LOCAL/BIN: / USR / Local / SBIN: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / usr / games: / usr / Τοπικά / παιχνίδια: / snap / bin

Σας παρουσιάζουμε ένα άρθρο μάθησης για τα σενάρια Bash, τα οποία υποθέτουν ότι η γνώση του Bash σας είναι ίση ή κοντά στο μηδέν. Υποσχόμαστε, με τη βοήθεια αυτού του άρθρου, θα καταλάβετε ότι η δημιουργία των Scripts Bash είναι εξαιρετικά απλή. Ωστόσο, εάν σε αυτό το άρθρο, δεν θα βρείτε απαντήσεις σε όλες τις ερωτήσεις σας (καλά, ή για άλλους λόγους, θα χρειαστείτε βοήθεια Πηγές τρίτων), Μπορείτε να επικοινωνήσετε απευθείας με τον διαχειριστή μας :)

Έτσι, ας αρχίσουμε να μαθαίνω το κέλυφος εντολών Bash.
Ας ξεκινήσουμε την εκπαίδευσή μας με ένα απλό σενάριο "Hello World".

1. Bash Script Hello World
Πρώτα πρέπει να μάθετε πού βρίσκεται ο μεταφραστής. Για να το κάνετε αυτό, πληκτρολογήστε την ακόλουθη εντολή:
$ Ποια bash.
Ανοίξτε τον αγαπημένο σας επεξεργαστή κειμένου και δημιουργήστε ένα αρχείο που ονομάζεται Hello_World.sh. Σε αυτό το αρχείο, αποθηκεύστε τις ακόλουθες γραμμές:
#! / Bin / bash # Ανακοινώστε μια μεταβλητή της συμβολοσειράς String \u003d "Hello World" # Εμφανίστε τη μεταβλητή στην οθόνη STRING ECHO $
Σημείωση.Κάθε σενάριο Bash σε αυτό το σεμινάριο ξεκινά με μια ακολουθία σημείων "#!", Το οποίο δεν ερμηνεύεται ως σχόλιο!
Μεταβείτε στον κατάλογο στο οποίο αποθηκεύσατε το αρχείο hello_world.sh και κάντε αυτό το αρχείο εκτελέσιμο:
$ chmod + x hello_world.sh
Λοιπόν, τώρα είστε πλήρως προετοιμασμένοι να δημιουργήσετε το πρώτο σας σενάριο Bash:
./HELLO_WORLD.SH.

2. Απλό σενάριο Bash για δημιουργία αντιγράφων ασφαλείας:
#! / bin / bash tar -czf myhome_directory.tar.gz / home / linuxconfig

3. Μεταβλητές
Σε αυτό το παράδειγμα, θα δηλώσουμε μια απλή μεταβλητή bash και θα την φέρουμε στην οθόνη χρησιμοποιώντας την εντολή ECHO.
#! / Bin / bash string \u003d "Hello World !!!" Echo $ string
Σενάριο για Αντιγράφων ασφαλείας και μεταβλητές:
#! / Bin / bash of \u003d myhome_directory _ $ (ημερομηνία +% y% m% d) .tar.gz tar -czf $ / home / linuxconfig

3.1. Παγκόσμιες και τοπικές μεταβλητές
#! / BIN / BASH # AD είναι η παγκόσμια μεταβλητή # Αυτή η μεταβλητή είναι παγκόσμια και μπορεί να χρησιμοποιηθεί οπουδήποτε στο VAR \u003d "Παγκόσμια μεταβλητή" λειτουργία Bash Script (# ανακοίνωση μιας τοπικής μεταβλητής # Αυτή η μεταβλητή είναι τοπικά και μπορεί να χρησιμοποιηθεί μόνο μόνο Σε αυτή την τοπική λειτουργία VAR \u003d "τοπική μεταβλητή" ECHO $ \u200b\u200bvar) Echo $ var bash # Σημειώστε ότι η παγκόσμια μεταβλητή δεν έχει αλλάξει # Local είναι μια αποκλειστική λέξη στο Bash Echo $ var

4. Μεταφορά επιχειρήματος στο σενάριο Bash
#! / BIN / BASH # Χρησιμοποιήστε προηγουμένως καθορισμένες μεταβλητές για να αποκτήσετε πρόσβαση στα μεταδιδόμενα επιχειρήματα για να αποκτήσετε πρόσβαση στα μεταβιβάσιμα επιχειρήματα # τα επιχειρήματα στην οθόνη ECHO $ \u200b\u200b1 $ 2 $ 3 "-\u003e ECHO $ \u200b\u200b1 $ 2 $ 3" \u200b\u200b# μπορούμε να σώσουμε Τα επιχειρήματα από τη γραμμή εντολών Bash σε μια ειδική Art Argence \u003d (" [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]") # Ηχώματα στο κέλυφος Echo $ (Args) $ (Args) $ (Args)" -\u003e Args \u003d (" [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]"); echo $ (Args) $ (Args) $ (Args)" # Χρήση [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] Για την παραγωγή όλων των επιχειρημάτων της ECHO [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] "-\u003e ηχώ [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]"# Χρησιμοποιήστε μια μεταβλητή $ # για έξοδο # Αριθμοί που μεταφέρονται στις μεταβλητές δέσμης ενεργειών Bash Echo Αριθμός επιχειρημάτων Πέρασε: $ #" -\u003e Echo Αριθμός επιχειρημάτων Πέρασε: $ # "/ garguments.sh bash scripting turion

5. Εκτέλεση εντολών Shell με Bash
#! / Bin / bash # χρησιμοποιήστε αντίστροφα αποσπάσματα "` `" για να εκτελέσετε το κέλυφος Echo` uname -o` # εκτέλεση αποθεμάτων που προκαλούνται χωρίς αποσπάσματα echo uname -o -o

6. Διαβάστε χρήστη που εισάγεται από το χρήστη
#! / BIN / Bash Echo -e "Γεια σου, πληκτρολογήστε τη λέξη: \\ C" Διαβάστε το Word Echo "Η λέξη που τείνετε είναι: $ Word" Echo -e "Μπορείτε να εισάγετε δύο λέξεις;" Διαβάστε το Word1 Word2 Echo " Εδώ είναι η είσοδός σας: \\ "$ Word1 \\" \\ "echo -e" Πώς αισθάνεστε για το Bash Scripting; "# Η ομάδα ανάγνωση αποθηκεύει απαντήσεις στην προεπιλεγμένη μεταβλητή $ Απάντηση ανάγνωση Echo" Είπατε $ Απάντηση, εγώ "Χαίρομαι που το ακούω! "Echo -e" Ποια είναι τα αγαπημένα σας χρώματα; "# -a επιτρέπει μια εντολή ανάγνωσης για να αποθηκεύσετε διάφορες τιμές στο RAD -A COLORES ECHO ARRAY" Τα αγαπημένα μου χρώματα είναι επίσης $ (χρώματα), $ (χρώματα) και $ (χρώματα) :-) "

7. Παγίδα Team Bash
#! / BIN / BASH # TRAP TRAP BASTRAP Int # Bash-Command Clear Καθαρισμός οθόνης; # Bash Η λειτουργία παγίδας εκτελείται όταν πιέζεται το Ctrl-C # Bash με τη δημοσίευση \u003d\u003e Εκτέλεση παγίδευσης Bash! Bashtrap () (ECHO "CTRL + C ανίχνευσε! ... Εκτελέστε την παγίδα του Bash!") # για τιμές από 1/10 έως 10/10 για ένα `SEQ 1 10`; Κάντε echo "$ a / 10 για έξοδο". Sleep 1; Έγινε ηχώ "Exit Bash Trap Παράδειγμα !!!"

8. Arross
8.1. Ανακοίνωση ενός απλού συστοιχιού Bash
#! / Bin / Bash # Ανακοίνωση της σειράς 3 στοιχείων Array \u003d ("Debian Linux" "Redhat Linux" " Ubuntu linux") Προετοιμασία του αριθμού των στοιχείων ενός συστοιχιού \u003d $ (# Array [@]) # Έξοδος κάθε στοιχείου ενός πίνακα # για ένα δεδομένο εύρος αριθμών για (i \u003d 0; i

8.2. Εισαγωγή αρχείου στη συστοιχία Bash
#! / BIN / BASH # Ανακοίνωση της κατηγορίας Ridare -A Array # Ανάληψη FileDescriptor 10 στο Stdin Exec 10

Εκτέλεση του σεναρίου Bash με έξοδο στο αρχείο εκτέλεσης με έξοδο:
linuxconfig.org $ bash.txt bash scripting οδηγός φροντιστήριο linuxconfig.org $ ./bash-script.sh bash.txt Αριθμός στοιχείων: 4 Bash Scripting Οδηγός φροντιστηρίου Linuxconfig.org $

9. Σενάρια Bash με εάν / αλλιώς / fi
9.1. Εύκολη έκφραση Bash με αν / αλλιώς
Δώστε προσοχή στα κενά σε παρένθεση [και]! Χωρίς αυτά τα κενά, το σενάριο δεν θα λειτουργήσει.
#! / BIN / Bash Directory \u003d "./ BashScripting" # Bash Επαλήθευση της ύπαρξης ενός καταλόγου iF [-d $]; Στη συνέχεια, ο Directory Echo "υπάρχει ο κατάλογος" ECHO "δεν υπάρχει fi

9.2. Ενσωματωμένο εάν / αλλιώς
#! / BIN / BASH # Δήλωση της επιλεγμένης μεταβλητής και εκχώρηση τιμών 4 επιλογής \u003d 4 # έξοδος στην STDOUT ECHO "1. Bash" Echo "2. Scripting" Echo "3. Tutorial" Echo -n "Παρακαλώ επιλέξτε Μια λέξη; "# επανάληψη του κύκλου έως ότου η μεταβλητή είναι 4 # bash, ενώ το κύκλο [$ choice -eq 4], Κάντε # ανάγνωση της εισαγόμενης τιμής της επιλογής ανάγνωσης # bash ένθετο αν / αλλιώς εάν [$ choice -eq 1]; Στη συνέχεια η Echo "έχετε επιλέξει τη λέξη: bash" αλλιώς εάν [$ choice -eq 2]; Στη συνέχεια, η ECHO "έχετε επιλέξει τη λέξη: scripting" αλλιώς εάν [$ choice -eq 3]; Στη συνέχεια, η ECHO "έχετε επιλέξει το Word: Tutorial" Eles Echo "Παρακαλώ κάντε μια επιλογή μεταξύ 1-3!" Echo "1. Bash" Echo "2. Scripting" Echo "3. Tutorial" Echo -n "Επιλέξτε μια λέξη;" επιλογή \u003d 4

10. Συγκρίσεις Bash
10.1. Αριθμητικές συγκρίσεις
-LT -GT\u003e -LE -GE\u003e \u003d
-eq \u003d\u003d
-ne! \u003d.

#! / bin / bash # ανακοίνωση των ακέραιων μεταβλητών num1 \u003d 2 num2 \u003d 2 εάν [$ num1 -eq $ num2]; Στη συνέχεια, η ECHO "και οι δύο τιμές είναι ίσες οι τιμές" ECHO "δεν είναι ίσες" fi

#! / bin / bash # ανακοίνωση των ακέραιων μεταβλητών num1 \u003d 2 num2 \u003d 1 εάν [$ num1 -eq $ num2]; Στη συνέχεια, η ECHO "και οι δύο τιμές είναι ίσες οι τιμές" ECHO "δεν είναι ίσες" fi

#! / bin / bash # ανακοίνωση των ακέραιων μεταβλητών num1 \u003d 2 num2 \u003d 1 εάν [$ num1 -eq $ num2]; Στη συνέχεια, η ECHO "και οι δύο τιμές είναι ίσες" ELIF [$ num1 -gt $ num2]; Στη συνέχεια, η ECHO "Num1 είναι μεγαλύτερη από το Num2" ELS ECHO "num2 είναι μεγαλύτερο από το Num1" Fi

10.2. Σύγκριση συμβολοσειράς
\u003d Ίση
! \u003d Όχι ίση
\u003e Μεγαλύτερη τότε.
-N s1 str s1 δεν είναι κενή
-z s1 str

#! / bin / bash # Ανακοίνωση της γραμμής S1 S1 \u003d "Bash" Γραμμή # Ανακοίνωση της String S2 S2 \u003d "Scripting" εάν [$ S1 \u003d $ S2]; Στη συνέχεια, η ECHO "οι χορδές bot είναι ίσες οι συμβολοσειρές" ECHO "δεν είναι ίσες" fi

#! / bin / bash # Ανακοίνωση της γραμμής S1 S1 \u003d "Bash" Line # Ανακοίνωση της String S2 S2 \u003d "Bash" εάν [$ S1 \u003d $ S2]; Στη συνέχεια, η ECHO "οι χορδές bot είναι ίσες οι συμβολοσειρές" ECHO "δεν είναι ίσες" fi

11. Έλεγχος αρχείου bash
-B Filename - Αποκλεισμός αρχείων
-C Filename - Το αρχείο περιέχει ειδικές προσφορές. Σύμβολα
-D DirectoryName - Επαλήθευση της ύπαρξης του καταλόγου
-Ενό όνομα αρχείου - Έλεγχος της ύπαρξης του αρχείου
-Το όνομα αρχείου - Επαλήθευση της ύπαρξης μη αρνητικών
- Ελέγξτε εάν υπάρχει αρχείο και ανήκει σε αποτελεσματική ταυτότητα ομάδας.
-G game ame true Εάν υπάρχει αρχείο και είναι η ταυτότητα ρύθμισης.
-K filename κολλώδες κομμάτι
-L ονόματος αρχείου συμβολικού συνδέσμου
-O Το όνομα αρχείου TRUE αν υπάρχει το αρχείο και ανήκει στο αποτελεσματικό αναγνωριστικό χρήστη.
-R όνομα αρχείου - έλεγχος διαθεσιμότητας αρχείου
-Επιλέξτε το όνομα αρχείου Ελέγξτε εάν το αρχείο είναι υποδοχή
- το όνομα αρχείου - τον έλεγχο του γεγονότος ότι το μέγεθος του αρχείου είναι μεγαλύτερο από το μηδέν
- Ελέγξτε το όνομα του ονόματος αρχείου εάν έχει οριστεί bit ρύθμισης αρχείων
-W Όνομα αρχείου - Έλεγχος αναζήτησης αρχείων
-X FILENAME - Έλεγχος εκτελέσεως αρχείων
# / bin / bash file \u003d "./ Αρχείο" εάν [-e αρχείο $]; Στη συνέχεια, το αρχείο echo "υπάρχει" αλλιώς το αρχείο echo "δεν υπάρχει" fi
Ομοίως, ο κύκλος ενώ μπορεί να χρησιμοποιηθεί για να ελέγξει την ύπαρξη του αρχείου. Αυτό το σενάριο δεν θα λειτουργήσει μέχρι να υπάρξει το αρχείο. Δώστε προσοχή στον χειριστή της άρνησης Bash "!", Το οποίο αρνείται τη λειτουργία -Ε.
#! / Bin / bash ενώ [! -E myfile]; Do # Μην αντιδράσετε κατά τη δημιουργία του αρχείου και υπάρχει ύπνος 1

12. Κύκλος
12.1. Ομάδα ψύξης bash
#! / BIN / BASH # Κύκλος Bash για F σε $ (LS / VAR /); Do echo $ f
Εκτελέστε έναν κύκλο από τη γραμμή εντολών Bash:
$ for f σε $ (ls / var /); do echo $ f; Ολοκληρώθηκε

12.2. Κύκλος του Bash ενώ
#! / Bin / bash count \u003d 6 # bash, ενώ ενώ [$ count -gt 0] κύκλος? Η ηχητική αξία του Count είναι: $ Count Αφήστε την Count \u003d Count-1 Έγινε

12.3. Ο κύκλος του bash μέχρι
#! / Bin / bash count \u003d 0 # bash μέχρι να [$ count -gt 5]; Το Echo Value of Count είναι: $ Count Αφήστε Count \u003d Count + 1 Έγινε

12.4. Έλεγχος του Bash Cycle
Παρακάτω είναι ένα παράδειγμα ενός κατά τη διάρκεια του κύκλου που ελέγχεται από την τυπική είσοδο. Ο Bash Ο κύκλος λειτουργεί ενώ υπάρχει μια μετάβαση από το Stdout προς Stdin και στην εντολή ανάγνωσης.
#! / Bin / bash # Αυτό το σενάριο bash θα βρείτε και θα αντικαταστήσει τα κενά # στα ονόματα αρχείων dir \u003d "". # Κλείστε τον έλεγχο χρησιμοποιώντας την εντολή Bash που διαβάζεται με την ανακατεύθυνση Stdout στο # Stdin σε ένα κύκλο # Η ομάδα βρίσκει Δεν θα απορρίψει τα ονόματα αρχείων που περιέχουν Find $ dir -type f | Ενώ διαβάζετε αρχείο. Κάντε # χρησιμοποιώντας την τάξη Posix [: Space:] για να αναζητήσετε ένα κενό στο όνομα του αρχείου εάν [["$ αρχείο" \u003d * [: Space:]] *]]; Στη συνέχεια # σύμβολο του χώρου αντικατάστασης "_" και, ως εκ τούτου, μετονομάζοντας το αρχείο mv "$ αρχείο" echo $ αρχείο | Tr "" "_" fi; # End Whole Κύκλος

13. Λειτουργίες Bash
#! / BIN / BASH # λειτουργίες μπορούν να δηλωθούν σε οποιαδήποτε λειτουργία λειτουργίας παραγγελίας_A (ECHO $ \u200b\u200b1) Λειτουργία λειτουργίας_D (ECHO Λειτουργία D.) Λειτουργία λειτουργίας_C (ECHO $ \u200b\u200b1) # Calling Λειτουργίες # Επιλογές παραμέτρων Λειτουργία Α. Λειτουργία_B # Μεταφορά της παραμέτρου λειτουργίας με λειτουργία_C "Λειτουργία C." Λειτουργία_d.

14. Κατανομή Bash
#! / BIN / BASH PS3 \u003d "Επιλέξτε μία λέξη:" # Bash Επιλέξτε Επιλογή Word in "Linux" "Bash" "Scripting" "Turion" "TurioRial" Do Echo "Η λέξη που έχετε επιλέξει είναι: $ Word" # Σταματήστε τον κύκλο, Διαφορετικά θα γίνει μια ατελείωτη διακοπή ολοκλήρωση 0

15. Διακόπτης
#! / bin / bash echo "Ποια είναι η προτιμώμενη γλώσσα προγραμματισμού / δέσμες γραφείων" ECHO "1) Bash" Echo "2) Perl" Echo "3) Python" Echo "4) C ++" ECHO "5) Δεν το κάνω ξέρω! " Διαβάστε την υπόθεση; Δομή απλών συνθηκών bash # Παρακαλείστε να σημειώσετε: Σε αυτή την περίπτωση, η περίπτωση $ είναι μια μεταβλητή που δεν απαιτείται να καλέσετε # Εδώ ονομάζεται για παράδειγμα υπόθεση Case in 1) Echo "Επιλέξατε Bash" ;; 2) echo "επιλέξατε perl"; 3) Echo "επιλέξατε τον Python"; 4) ECHO "επιλέξατε C ++"; 5) Έξοδος ESAC

16. Αποσπάσματα σε Bash
Τα αποσπάσματα αποτελούν σημαντικό στοιχείο της γλώσσας Bash και τα σενάρια Bash. Παρακάτω θα βρείτε κάποια βασικά στοιχεία της χρήσης αποσπασμάτων σε Bash.
16.1. Θωράκιση Ειδικοί χαρακτήρες
Πριν προχωρήσουμε στη χρήση αποσπασμάτων, πρέπει να μάθουμε πώς να ασχολούνται ειδικοί χαρακτήρες. Αυτή η διαδικασία θα επιτρέψει τη Bash να αναγνωρίσει άμεσα την αξία αυτών των χαρακτήρων. Για να το κάνετε αυτό, πρέπει να χρησιμοποιήσουμε την αντίθετη κοπή "\\". Για παράδειγμα:
#! / Bin / bash # ανακοίνωση Bash μεταβλητή τύπου string bash_var \u003d "bash script" # μεταβλητή bash_var echo $ bash_var # εάν ένα ειδικό "$" θωρακισμένο από ένα σύμβολο "\\", μπορεί να αναγνωριστεί άμεσα από την ECHO \\ $ Bash_Var # στο αντίθετο υπάρχει επίσης μια ειδική τιμή και μπορεί να αποκαλυφθεί χρησιμοποιώντας μια ακόμη κοπή "\\" echo "\\\\"

16.2. Ενιαία αποσπάσματα
Απλά αποσπάσματα σε Bash ασπίδουν όλους τους ειδικούς χαρακτήρες. Έτσι, οι ειδικοί χαρακτήρες θα αναγνωριστούν κυριολεκτικά. Ταυτόχρονα, είναι αδύνατο να χρησιμοποιηθούν μοναδικά αποσπάσματα μέσα στα δύο Durga των ίδιων αποσπασμάτων, ακόμη και αν μερικές από αυτές θωρακισμένες από την αντίστροφη διαδρομή.
#! / Bin / bash # ad bash μεταβλητή τύπου string bash_var \u003d "bash script" # μεταβλητή bash_var echo $ bash_var # που σημαίνει ειδική Τα σύμβολα στο Bash είναι θωρακισμένο όταν χρησιμοποιείτε ενιαία αποσπάσματα ECHO "$ Bash_Var" $ Bash_Var ""

16.3. Διπλά εισαγωγικά
Τα διπλά εισαγωγικά χρησιμοποιούνται σε Bash για να προστατεύσουν όλους τους ειδικούς χαρακτήρες, εκτός από το "$", "\\" και "". Όλες οι άλλες προσφορές. Τα σύμβολα θα αναγνωριστούν κυριολεκτικά. Σε αντίθεση με την προηγούμενη παράγραφο, τα εσωτερικά διπλά εισαγωγικά μπορούν να χρησιμοποιηθούν μεμονωμένα. Εάν χρειαστεί να χρησιμοποιήσετε μια άλλη διπλή προσφορά ανάμεσα σε διπλά εισαγωγικά, μπορείτε να πιέσετε τη Bash να τα αναγνωρίσετε κυριολεκτικά χρησιμοποιώντας το αντίστροφο στρώμα "\\". Για παράδειγμα:
#! / bin / bash # ad bash μεταβλητή τύπου string bash_var \u003d "bash script" # echo μεταβλητή bash_var echo $ bash_var # Ειδική Το σύμβολο και η αξία του είναι θωρακισμένη # όταν χρησιμοποιούν διπλά εισαγωγικά επιτακτικά "$", "\\" και "` "echo" its bash_var και \\ "$ bash_var \\" χρησιμοποιώντας backticks: `date`"

16.4. Bash θωράκιση ansi-c
Στο Bash, υπάρχει επίσης ένας άλλος τύπος θωράκισης - ansi-c. Όταν χρησιμοποιείτε αυτόν τον τύπο θωράκισης, οι χαρακτήρες που ορίζονται από την αντίδραση "\\" λαμβάνουν ειδική τιμή σύμφωνα με το πρότυπο ANSI-C.
\\ Alert (Bell)
\\ B backspace.
\\ E ένα χαρακτήρα διαφυγής
\\ F form feed
\\ N Newline
\\ R επιστροφή μεταφοράς
\\ T οριζόντια καρτέλα
\\ V κάθετη καρτέλα
\\\\ backslash.
\\ `Ενιαία απόσπασμα
\\ Nnn οκταδική τιμή των χαρακτηριστικών (βλέπε)
\\ Xnn δεκαεξαδική αξία χαρακτήρων (βλ.)

Ansi-C Bash-Θωράκιση Ονομασία: $ ". Παράδειγμα:
#! / bin / bash # για παράδειγμα, χρησιμοποιήσαμε \\ n για μια νέα γραμμή, \\ x40 για Δεκαεξαδικός @ # και \\ 56 για οκταδική έννοια. ECHO $ \u200b\u200b"Web: www.linuxconfig.org \\ nemail: web \\ x40linuxconfig \\ 56org"

17. Αριθμητικές λειτουργίες
17.1. Παράδειγμα προσθήκης χρησιμοποιώντας bash
#! / bin / bash lett1 \u003d $ 1 + $ 2 echo $ 1 + $ 2 \u003d $ refale1 "-\u003e # lett1 \u003d $ 1 + $ 2" δήλωση -I αποτέλεσμα2 Αποτέλεσμα2 \u003d $ 1 + $ 2 + $ 2 \u003d $ αποτέλεσμα 2 "-\u003e Δηλώστε -i Αποτέλεσμα2; Αποτέλεσμα 2 \u003d $ 1 € 2" ECHO $ \u200b\u200b1 + $ 2 \u003d $ (($ 1 + $ 2)) "-\u003e # $ (($ 1 + $ 2) ""

17.2. Αριθμητική σε Bash
#! / BIN / Bash Echo "### Αφήστε ###" # Bash Προσθήκη Αφήστε την προσθήκη \u003d 3 + 5 ECHO "3 + 5 \u003d" $ προσθήκη # Bash αφαίρεση αφήστε την αφαίρεση \u003d 7-8 ECHO "7 - 8 \u003d" $ Αφαίρεση # Bash Πολλαπλασιασμός Αφήστε τον πολλαπλασιασμό \u003d 5 * 8 Echo "5 * 8 \u003d" $ Πολλαπλασιασμός # Bash Division Αφήστε το Division \u003d 4/2 Echo "4/2 \u003d" $ Division # Bash Modulus Αφήστε το Modulus \u003d 9% 4 ECHO "9 % 4 \u003d "$ modulus # bash" αφήστε το poweroftwo \u003d 2 ** 2 echo "2 ^ 2 \u003d" $ poweroftwo echo "### bash αριθμητική επέκταση ###" # υπάρχουν δύο μορφές αριθμητικών εκφράσεων: $ [έκφραση] # και $ ((έκφραση #)) - Μπορείτε να επιλέξετε αυτό που σας αρέσει περισσότερο ηχώ 4 + 5 \u003d $ ((4 + 5)) ECHO 7 - 7 \u003d $ [7 - 7] ECHO 4 x 6 \u003d $ ( (3 * 2)) Echo 6/3 \u003d $ ((6/3)) Echo 8% 7 \u003d $ ((8% 7)) ECHO 2 ^ 8 \u003d $ [2 ** 8] ECHO "### Δηλώστε ### "ECHO -E" Εισάγετε δύο αριθμούς \\ C "# # Αναγνώριση εισόδου Διαβάστε Num1 Num2 Δηλώστε -i Αποτέλεσμα Αποτέλεσμα \u003d $ Num1 + $ Num2 Echo" Αποτέλεσμα είναι: $ αποτέλεσμα "# Bash Δυαδική μετατροπή 10001 Αποτέλεσμα \u003d 2 # 10001 ECHO $ \u200b\u200bαποτέλεσμα # μετατροπή Bash Octal Number 16 Αποτέλεσμα \u003d 8 # 16 Echo $ αποτέλεσμα # Bash Μετατροπή του εξαγωνικού αριθμού 0xe6a Αποτέλεσμα \u003d 16 # E6a Echo Αποτέλεσμα

17.3. Στρογγυλοποίηση ενός αριθμού πλωτή
#! / Bin / bash # πάρει ένα πλωτό σημείο σημείο floating_point_number \u003d 3.3446 eCho $ floating_point_number # στρογγυλοποίηση ενός πλωτικού σημείου αριθμού χρησιμοποιώντας bash για bash_round_number σε $ (printf% .0f $ floating_point_number); Do Echo "Στρογγυλεμένος αριθμός με Bash:" $ bash_rounded_number doney

17.4. Bash Floating Point Υπολογισμοί
#! / BIN / BASH # Εφαρμογή ενός απλού αριθμομηχανή σε Linux σε Bash Echo "Εισάγετε την είσοδο:" Διαβάστε την αναψυχή # Έξοδος του αποτελέσματος με δύο σημάδια μετά το Commas Echo "Αποτέλεσμα με 2 ψηφία μετά από δεκαδικό σημείο:" echo "κλίμακα \u003d 2; $ (UserInput) "| BC # Έξοδος με δέκα σημάδια μετά από κόμμα Echo "Αποτέλεσμα με 10 ψηφία μετά από δεκαδικό σημείο:" echo "κλίμακα \u003d 10; $ (userinput)" | BC # Έξοδος με τη μορφή στρογγυλεμένης ακέραιου ECHO "Αποτέλεσμα ως στρογγυλεμένος ακέραιος:" Echo $ UserInput | ΠΡΟ ΧΡΙΣΤΟΥ.

18. Ανακατευθύνει
18.1. Stdout από το σενάριο Bash στο Stderr
#! / Bash Echo "Ανακατεύθυνση αυτού του Stdout στο Stderr" 1\u003e & 2
Για να ελέγξετε την ανακατεύθυνση Stdout στο Stderr, μπορείτε να ανακατευθύνετε την έξοδο του σεναρίου στο αρχείο:

18.2. STDERR Bash Script στο Stdout
#! / BIN / Bash Cat $ 1 2\u003e & 1
Για να ελέγξετε την ανακατεύθυνση του Stdout Stderr IV, μπορείτε να ανακατευθύνετε την έξοδο του σεναρίου στο αρχείο:

18.3. Stdout στην οθόνη
Ο απλός τρόπος για να ανακατευθύνει το Stdout είναι μια απλή χρήση οποιασδήποτε εντολής, καθώς το προεπιλεγμένο stdout εμφανίζεται αυτόματα στην οθόνη. Αλλά πρώτα, δημιουργήστε ένα αρχείο "αρχείο1:
$ Touch file1 $ ls file1 αρχείο1
Όπως μπορείτε να δείτε από το παραπάνω παράδειγμα, η εκτέλεση της εντολής LS καλεί το Stdout, το οποίο από προεπιλογή εμφανίζεται στην οθόνη.

18.4. Stdout για αρχείο.
Για να εμποδίσετε την προεπιλεγμένη συμπεριφορά Stdout, μπορούμε να χρησιμοποιήσουμε "\u003e" για να ανακατευθύνουμε την έξοδο στο αρχείο:
$ Ls lap1\u003e stdout $ stdout file1

18.5. Stderr στο αρχείο.
Από προεπιλογή, εμφανίζεται ο Stderr:
$ Ls file1 stdout $ ls file2 ls: Δεν είναι δυνατή η πρόσβαση στο αρχείο2: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος
Στο παρακάτω παράδειγμα, ανακατεύετε το τυπικό σφάλμα (stderr) στο αρχείο και το stdout είναι ως προεπιλογή, στην οθόνη. Λάβετε υπόψη ότι το stdout εμφανίζεται στην οθόνη και το stderr είναι γραμμένο στο αρχείο κάτω από το standr:
$ Ls file1 stdout $ ls file1 αρχείο2 2\u003e stderr file1 $ cat stderr ls: δεν μπορεί να αποκτήσει πρόσβαση στο αρχείο2: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος

18.6. Stdout στο Stderr.
Είναι επίσης δυνατό να ανακατευθύνετε το Stdout και το Stderr σε ένα αρχείο. Στο παρακάτω παράδειγμα, στείλτε το Stdout στην ίδια λαβή με το Stderr. Και το Stdout, και ο Stderr θα ανακατευθυνθεί στο αρχείο "stderr_stdout".
$ Ls file1 stdout stdout $ ls file1 αρχείο2 2\u003e stderr_stdout 1\u003e & $ 2 cat stderr_stdout ls: Δεν είναι δυνατή η πρόσβαση στο αρχείο2: Δεν υπάρχει τέτοιο αρχείο ή ένα αρχείο καταλόγου1
Τώρα το αρχείο stderr_stdot περιέχει τόσο το stdout όσο και το stderr.

18.7. Stderr στο Stdout
Ένα παραπάνω παράδειγμα μπορεί να αφαιρεθεί έτσι ώστε να ανακατευθύνει το stderr στην ίδια λαβή με το SDTout:
$ Ls laps1 stdout stdout $ ls file1 αρχείο2\u003e stderr_stdout 2\u003e & 1 $ cat stderr_stdout ls: δεν μπορεί να αποκτήσει πρόσβαση στο αρχείο2: Δεν υπάρχει τέτοιο αρχείο ή αρχείο καταλόγου1

18.8. Stderr και stdout στο αρχείο
Και τα δύο άνω δείγματα ανακατευθύνονται stdout και stderr στο αρχείο. Υπάρχει ένας άλλος τρόπος για να επιτευχθεί το ίδιο αποτέλεσμα:
$ Ls lds1 stdout stdout $ ls file1 αρχείο2 &\u003e stderr_stdout $ cat stderr_stdout ls: δεν μπορεί να αποκτήσει πρόσβαση στο αρχείο2: Δεν υπάρχει τέτοιο αρχείο ή ένα αρχείο καταλόγου1
Ή.
LS File1 Αρχείο2\u003e & STERDR_STDOUT $ CAT STERDR_STDOUT LS: Δεν είναι δυνατή η πρόσβαση στο αρχείο2: Δεν υπάρχει τέτοιο αρχείο ή ένα αρχείο καταλόγου1

Αυτό το άρθρο είναι μια ερασιτεχνική μετάφραση του άρθρου με

Μετά την ανάγνωση αυτού του άρθρου, θα μάθετε τι Κτυπώ δυνατά (Τυπική διερμηνεία εντολών Linux), μάθετε πώς να χειρίζεστε τις τυπικές εντολές: ls., cP., mv... θα καταλάβετε το σκοπό των εισερχόμενων, σκληρών και συμβολικών συνδέσμων και πολλά άλλα.

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

Εισαγωγή στο Bash

Κέλυφος.

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

\$

Εάν μετά από τα φορτία σύνδεσης Γραφικό κέλυφος, Για να φτάσετε στον διερμηνέα εντολής, πρέπει να ξεκινήσετε τον εξομοιωτή τερματικού (GNOME-Terminal, XFCE4-Terminal, Konsole, Xterm, RXVT ...) ή μεταβείτε σε ένα από τα εικονικά τερματικά κάνοντας κλικ ΚονδύλιοAlt.F1 ή ΚονδύλιοAlt.F2. και τα λοιπά.

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

Έχετε ξεκινήσει το Bash;

Ελέγξτε εάν ο Bash εκτελεί την ακόλουθη εντολή:

\$ echo \\ $ κέλυφος / bin / bash

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

\$ Κτυπώ δυνατά

Τι είναι το bash

Bash (ακρωνύμιο από " ΣΙ.ourne- ΕΝΑ.Κέρδος. SHell ") Πρόκειται για έναν τυποποιημένο διερμηνέα εντολών στα περισσότερα από τα συστήματα Linux. Οι υποχρεώσεις του περιλαμβάνουν την επεξεργασία και την εκτέλεση εντολών με τις οποίες ο χρήστης διαχειρίζεται τον υπολογιστή. Αφού ολοκληρώσετε τη διαδικασία, μπορείτε να συμπληρώσετε τη διαδικασία διερμηνέα εντολών κλειδιά ΚονδύλιοΡΕ., της ομάδας ΕΞΟΔΟΣ. ή Αποσύνδεση. Η διαδικασία διερμηνέα εντολών θα ολοκληρωθεί και μια πρόσκληση θα εμφανιστεί ξανά στην οθόνη για να εισέλθει στο όνομα χρήστη και τον κωδικό πρόσβασης.

Χρησιμοποιώντας το "CD"

Ας αρχίσουμε να χρησιμοποιούμε bash για να περιηγηθείτε στο σύστημα αρχείων. Για να ξεκινήσετε, πληκτρολογήστε την ακόλουθη εντολή:

$ cd /

Τονίζει το bash που θέλουμε να μετακινηθούμε στον ριζικό κατάλογο - / . Όλοι οι κατάλογοι στο σύστημα οργανώνονται σε δομή δέντρου και / Αυτή είναι η αρχή (ή ρίζα). Ομάδα cD Χρησιμοποιείται για την αλλαγή του τρέχοντος καταλόγου εργασίας.

Μονοπάτι

Για να μάθετε σε ποια θέση του συστήματος αρχείων τη στιγμή που βρίσκεστε (ο τρέχων κατάλογος) Dial:

\$ pwd. /

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

Απόλυτα μονοπάτια

Εδώ είναι μερικά παραδείγματα απόλυτων διαδρομών

/ Dev / usr / usr / bin / usr / local / bin

Όπως θα μπορούσατε να έχετε παρατηρήσει, όλα αυτά τα μονοπάτια ενώσουν τι αρχίζουν με / . Δείχνοντας το μονοπάτι / usr / τοπικό / bin ως ένα επιχείρημα εντολής cD Της λέμε να πάει στον ριζικό κατάλογο / , στη συνέχεια στον κατάλογο USR, στη συνέχεια σε τοπικό και κάδο. Οι απόλυτες διαδρομές ξεκινούν πάντα με /

Σχετικές διαδρομές

Ο δεύτερος τύπος διαδρομών ονομάζεται σχετικός. Κτυπώ δυνατά, ομάδα cD Και άλλες εντολές μετράνε αυτές τις διαδρομές σχετικά με τον τρέχοντα κατάλογο. Οι σχετικές διαδρομές δεν αρχίζουν ποτέ με / . Για παράδειγμα, αν είμαστε στο / usr

\$ cD / USR.

Στη συνέχεια, μπορούμε να πάμε στο / usr / τοπικό / δοχείο χρησιμοποιώντας τη σχετική διαδρομή

\$ cD τοπικό / δοχείο \$ pwd. / Usr / τοπικό / bin

Χρήση ".."

Οι σχετικές διαδρομές ενδέχεται να περιέχουν έναν ή περισσότερους καταλόγους ".." . ".." υποδεικνύει τον γονέα κατάλογο σε σχέση με τον κατάλογο εργασίας μας. Παράδειγμα:

\$ pwd. / Usr / τοπικό / bin \\ cD .. \$ pwd. Usr / τοπική

Πώς βλέπετε την ομάδα cD .. "Μας ανεβαίνει πάνω."

Μπορεί να προσθέσει .. στη σχετική διαδρομή. Αυτό θα μετακινηθεί στον κατάλογο που βρίσκεται σε ένα επίπεδο με εκείνο στην οποία είμαστε. Παράδειγμα:

\$ pwd. Usr / τοπικό \\ $ cD ../Share. \$ pwd. Usr / share

Παραδείγματα χρησιμοποιώντας σχετικές διαδρομές

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

\$ cD / BIN. \$ cD ../usr/share/zoneinfo. \$ cD / USR / X11R6 / BIN \$ cD ../lib/x11 \$ cD / USR / BIN \$ cD ../bin/../bin.

Κατάλογος εργασίας "."

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

\$ ./MYPROG.

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

cD και οικείο κατάλογος

Για να μεταβείτε στον οικείο κατάλογο, πρέπει να καλέσετε

\$ cD

Χωρίς το CD Argument, σας μεταφέρει στον οικείο κατάλογο. Για ένα superuser, το σπίτι είναι συνήθως ο κατάλογος / ρίζα και για τους απλούς χρήστες - / σπίτι / όνομα χρήστη /. Αλλά τι συμβαίνει αν θέλουμε να καθορίσουμε ένα συγκεκριμένο αρχείο που βρίσκεται στον οικείο κατάλογο. Για παράδειγμα, ως επιχείρημα στο πρόγραμμα "Myprog"? Μπορείς να γράψεις:

\$ ./MYPROG /HOME/USER/MYFILE.TXT

Ωστόσο, η χρήση απόλυτων διαδρομών στα αρχεία δεν είναι πάντα βολική. Αυτή η λειτουργία μπορεί να γίνει με ~ -Είναι:

\$ ./myprog ~ / myfile.txt

~ - Ειδικό όνομα που δείχνει Bash στον αρχικό κατάλογο του χρήστη.

Αρχική σελίδα άλλων χρηστών

Αλλά τι γίνεται αν χρειαστεί να καθορίσουμε το αρχείο στον αρχικό κατάλογο άλλου χρήστη; Για να το κάνετε αυτό, μετά την Tilde, πρέπει να καθορίσετε το όνομα αυτού του χρήστη. Για παράδειγμα, για να καθορίσετε το αρχείο Fredsfile.txt που βρίσκεται στον οικιακό κατάλογο του Fred:

\$ ./myprog ~ fred / fredsfile.txt

Ομάδες Linux

Εισαγωγή στο LS.

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

\$ cD / USR. \$ ls. X11r6 doc i686-pc-linux-gnu lib man sbin ssl bin gentoo-x86 περιλαμβάνουν libexec portage share tmp distfiles i686-linux info τοπικό portage.old src

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

\$ ls -a. . Bin gentoo-x86 Συμπεριλάβετε το Libexec Portage Share TMP .. Distfiles I686-Linux Πληροφορίες τοπικού Portage.old SRC X11R6 DOC I686-PC-Linux-GNU LIB MAN SBIN SSL

Λεπτομερής λίστα καταλόγων

Μετά την ίδια την ομάδα ls. Μπορείτε να ορίσετε ένα ή περισσότερα αρχεία ή καταλόγους ως το επιχείρημά της. Εάν καθορίσετε το όνομα του αρχείου, τότε η εντολή ls. Εμφανίζει πληροφορίες μόνο σχετικά με αυτό το αρχείο. Και αν καθορίσετε το όνομα του καταλόγου, ls. Θα δείξει όλα τα περιεχόμενά του. Επιλογή "-μεγάλο" Της ομάδας ls. Είναι πολύ χρήσιμο αν θέλετε άλλα ονόματα αρχείων λεπτομερείς πληροφορίες Για αυτούς (τα δικαιώματα του αρχείου, το όνομα του ιδιοκτήτη, ο χρόνος τελευταία αλλαγή Αρχείο και το μέγεθος του).

Το ακόλουθο παράδειγμα εμφανίζει την εφαρμογή της επιλογής. "-μεγάλο" Για να εμφανίσετε πληροφορίες σχετικά με τα αρχεία που είναι αποθηκευμένα στον κατάλογο / USR

\$ lS -L / USR DRWXR-XR-X 7 ρίζα ρίζας 168 Νοε 2010 14:02 X11R6 DRWXR-XR-XR-X1 ρίζα ρίζας 14576 Δεκ 27 08:56 BIN DRWXR-XR-XR 2 ρίζα ρίζας 8856 Δεκ 26 Δεκ 26 12:47 Distfiles lrwxrwxrwx 1 ρίζα root ρίζα 9 Δεκεμβρίου 22 20:57 Doc -\u003e Share / Doc DRWXR-XR-XR-XR 62 ρίζα ρίζας 1856 Δεκ 27 15:54 Gentoo-X86 DRWXR-XR-X86 DRWXR-XR-X86 DRWXR-XR-X86 DRWXR-XR-X 4 ρίζα ρίζας 152 Δεκ 12 23:10 I686-Linux DRWXR-XR-X 4 ρίζα ρίζας 96 Νοε 2010 13:17 I686-PC-Linux-GNU DRWXR-XR-XR-54 ρίζα ρίζας 5992 Δεκ 24 22:30 Περιλάβετε LRWXRWXRWX 1 ρίζα ρίζας 10 Δεκ 22 20:57 Info -\u003e Share / info drwxr-xr -x 28 root root 13552 Δεκ 26 00:31 lif drwxr-xr-xr 3 ρίζα root 72 Νοεμβρίου 25 00:34 libexec drwxr-xr-xr 8 ρίζα root 240 Δεκ 22 20:57 Τοπικό LRWXRWXRWX 1 ρίζα ρίζας 9 Δεκ 22 20: 57 Man -\u003e Share / Man LRWXRWXRWX 1 ρίζα ρίζας 11 Δεκ 8 07:59 Πόρτα -\u003e Gentoo-X86 / DRWXR-XR-X8 ρίζα ρίζα 1864 Δεκ 8 07:55 Πόρτα DRWXR-XR-XR 3 ρίζα root 3096 Δεκ 22 20:57 SBIN DRWXR-XR-X6 ρίζα ρίζας 1144 Δεκ 24 15:32 Μοιραστείτε DRWXR-XR-XR 8 ρίζα root 328 Δεκ 26 Δεκ 26 00:07 SRC DRWXR-XR-X 6 Ρίζα ρίζας 176 Νοε 2010 14: 25 SSL LRWXRWXRWX 1 ρίζα ρίζας 10 Δεκεμβρίου 22 20:57 TMP -\u003e ../VAR/TMP

Η πρώτη στήλη εμφανίζει πληροφορίες σχετικά με τα δικαιώματα πρόσβασης σε κάθε αρχείο στη λίστα. (Λίγο αργότερα θα εξηγήσω ποια επιστολή τι δείχνει) Η ακόλουθη στήλη δείχνει τον αριθμό των αναφορών σε κάθε στοιχείο της λίστας. Η τρίτη και η τέταρτη στήλη είναι ο ιδιοκτήτης και η ομάδα αρχείων, αντίστοιχα. Πέμπτη στήλη - μέγεθος. Έξι - ο τελευταίος χρόνος αλλαγής αρχείων ("Τελευταίος τροποποιημένος χρόνος" ή MITTIME). Η τελευταία στήλη είναι το όνομα αρχείου ή ο κατάλογος (εάν αυτός ο σύνδεσμος, στη συνέχεια μετά το σημάδι " –> "Αξίζει το όνομα του αντικειμένου στο οποίο αναφέρεται).

Πώς να δείτε μόνο καταλόγους

Μερικές φορές η ανάγκη προκύπτει για την προβολή πληροφοριών μόνο για τον κατάλογο και όχι για το περιεχόμενό τους. Με αυτή την εργασία θα βοηθήσει στην αντιμετώπιση της επιλογής "-ΡΕ"η οποία υποδεικνύει την εντολή για την εμφάνιση πληροφοριών μόνο για τους καταλόγους. Παράδειγμα:

\$ lS -DL / USR / USR / BIN / USR / X11R6 / BIN ../Share DRWXR-XR-X 4 ρίζα ρίζας 96 Δεκ 18 18:17 ../Share DRWXR-XR-XR 17 ρίζα ρίζας 576 Δεκ 24 09:03 / USR DRWXR-XR-X 2 ρίζα ρίζας 3192 Δεκ 26 Δεκέμβριος 26 12:52 / usr / X11r6 / bin drwxr-xr-x 2 root root 14576 Δεκ 27 08:56 / usr / bin

Αναδρομική λίστα και πληροφορίες για το JAR

Επιλογή δράσης "-R" Αντίθετη ενέργεια "-ΡΕ". Σας επιτρέπει να εμφανίζετε πληροφορίες σχετικά με τα αρχεία στον κατάλογο αναδρομικά. Πρώτον, εμφανίζονται τα περιεχόμενα του καταλόγου ανώτερου επιπέδου και στη συνέχεια ενεργοποιήστε τα περιεχόμενα όλων των υποκατηγοριών και ούτω καθεξής. Η έξοδος αυτής της εντολής μπορεί να είναι αρκετά ογκώδης, οπότε δεν αναφέρουμε το παράδειγμα του, αλλά μπορείτε να προσπαθήσετε να το κάνετε μόνοι σας, πληκτρολογώντας στη γραμμή εντολών " ls -r." ή " ls -rl".

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

\$ lS -I / USR ( 784 TMP

Ποια είναι η πηγή;

Κάθε αντικείμενο αντικειμένου αντικειμένου (αρχείο, κατάλογος ...) έχει τον δικό του μοναδικό αριθμό που ονομάζεται ενσωματώνω (Αριθμός inode). Αυτές οι πληροφορίες ενδέχεται να φαίνονται ασήμαντες, αλλά η κατανόηση των λειτουργιών των εισοδημάτων θα σας βοηθήσει να κατανοήσετε πολλές λειτουργίες στο σύστημα αρχείων. Για παράδειγμα, κοιτάξτε "." και ".." Όπως οι παραπομπές που υπάρχουν σε κάθε κατάλογο. Για να καταλάβετε ποιος κατάλογος αντιπροσωπεύει ".." , Μάθετε τον κατάλογο / τοπικό κατάλογο

\$ lS -ID / USR / Local 5120 / USR / Local

Όπως μπορούμε να δούμε, τον κωδικό / usr / τοπικό - 5120 περίπου. Τώρα ας δούμε ποιες πληροφορίες από τον κατάλογο / usr / τοπικό / bin / ..:

\$ lS -ID / USR / LOCAL / BIN / .. 5120 / USR / LOCAL / BIN / ..

Αποδεικνύεται ότι τα διευθυντικά καθίσματα / usr / τοπικά και / usr / τοπικά / bin / .. συμπίπτουν! Αυτό σημαίνει ότι το ingot 5120 αναφέρεται στα δύο ονόματα: / usr / τοπικό και / usr / τοπικό / bin / .. δηλαδή, αυτά είναι δύο διαφορετικά ονοματεπώνυμο ενός καταλόγου. Κάθε ασιατικό δείχνει ένα συγκεκριμένο μέρος στο δίσκο.

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

\$ lS -DL / USR / LOCAL DRWXR-XR-X 8 ρίζα ρίζας 240 Δεκ 22 20:57 / USR / Local

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

Usr / τοπικό / usr / τοπικό /. Usr / τοπικός / bin / .. / usr / τοπικός / lib / .. / usr / τοπικό / sbin / .. / usr / τοπικό / src / ..

mkdir.

Ας δούμε την ομάδα mkdir.. Χρησιμεύει για τη δημιουργία νέων καταλόγων. Το ακόλουθο παράδειγμα καταδεικνύει τη δημιουργία τριών νέων καταλόγων (TIC, TAC, TOE) στον κατάλογο / TMP

\$ cD / TMP. $ mkdir tic tac toe

Προεπιλεγμένη ομάδα mkdir. Δεν είναι δυνατή η δημιουργία μιας επενδυμένης δομής καταλόγου. Επομένως, αν χρειαστεί να δημιουργήσετε μερικές ενσωματωμένες σε άλλο καταλόγιο ( ΕΚΠΛΗΚΤΙΚΟΣ), τότε θα έχετε τρεις φορές εναλλάξ τηλεφωνήστε αυτήν την εντολή:

\$ mkdir κέρδισε / der / ful MKDIR: Δεν είναι δυνατή η δημιουργία καταλόγου "Won / der / Ful": Δεν υπάρχει τέτοιο αρχείο ή κατάλογος \\ $ Ο Mkdir κέρδισε. \$ mkdir κέρδισε / der \$ mkdir κέρδισε / der / ful

Μπορείτε να απλοποιήσετε αυτήν τη λειτουργία προσθέτοντας την επιλογή "-Π" στην εντολή Mkdir. Αυτή η επιλογή σάς επιτρέπει να δημιουργήσετε μια συνημμένη δομή καταλόγου:

\$ mkdir -p εύκολο / as / pie

Για να μάθετε σχετικά με τις δυνατότητες αυτής της χρησιμότητας, διαβάστε περισσότερα, διαβάστε τη βοήθεια που ονομάζεται από την εντολή άνθρωπος mkdir. Η βοήθεια είναι σχεδόν όλες οι εντολές από αυτό το εγχειρίδιο (για παράδειγμα Άνθρωπος ls.), Εκτός cDεπειδή Είναι ενσωματωμένο σε Bash (για τέτοιες εντολές, το πιστοποιητικό ονομάζεται έτσι: Βοήθεια CD)

Αφή

Γυρίζουμε στη μελέτη των εντολών cP. και mvΥπηρεσίες για αντιγραφή, μετονομασία και μετακίνηση αρχείων και καταλόγων. Αλλά πριν δημιουργηθεί αυτό Άδειο αρχείο στον κατάλογο / TMP χρησιμοποιώντας την ομάδα Αφή:

\$ cD / TMP. \$ Αγγίξτε το copyme

Ομάδα Αφή Ενημερώνει την ώρα της τελευταίας πρόσβασης αρχείου (έκτη στήλη εξόδου ομάδας ls -l) Εάν υπάρχει ήδη, ή δημιουργεί ένα νέο κενό αρχείο αν δεν είναι ακόμα. Μετά από αυτή τη λειτουργία, πρέπει να εμφανίσουμε ένα κενό αρχείο. / TMP / Copyme.

Ηχώ.

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

\$ echo "Firstfile" Πρώτηfile.

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

\$ echo "Firstfile"\u003e Copyme

Σημάδι > (περισσότερο) υποδεικνύει Διακοσμητική θήκη Τι πρέπει να ανακατευθύνετε την έξοδο της εντολής που στέκεται στα αριστερά στο αρχείο του οποίου το όνομα είναι στα δεξιά. Εάν δεν υπάρχει το αρχείο με το ίδιο όνομα, θα δημιουργηθεί αυτόματα. Και αν ένα τέτοιο αρχείο είναι ήδη εκεί, θα αντικατασταθεί (όλα τα περιεχόμενά του θα διαγραφούν πριν γράψετε τη γραμμή μας). Ομάδα "Ls -l" Θα δείξει ότι το μέγεθος του αρχείου μας είναι τώρα ίση με 10 bytes - εννέα byte παίρνουν τη λέξη "firstfile" και ένα σύμβολο bytes για τη σειρά μετάφρασης.

\$ lS -L Copyme. -RW-R - R- 1 ρίζα ρίζας 10 Δεκεμβρίου 28 14:13 Copyme

Γάτα και cp.

Για να εμφανίσετε τα περιεχόμενα του αρχείου στο τερματικό, η εντολή χρησιμοποιείται. Γάτα.:

\$ cAP COPYME. Πρώτηfile.

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

\$ cpyme copiedme

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

\$ lS -I Copyme Copiedme 648284 Copiedme 650704 Copyme

mv

Τώρα εφαρμόστε την εντολή mv Για να μετονομάσετε το αρχείο ("copiedme" -\u003e "movedme"). Ο αριθμός πηγής μετά από αυτή τη λειτουργία δεν αλλάζει και μόνο η ονομασία του αρχείου αλλάζει.

\$ mv copiedme movedme. \$ ls -i movedme. 648284 MOVEDME

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

Ομάδα mv Επιτρέπει όχι μόνο να μετονομάζουμε αρχεία, αλλά και να τα μετακινήσετε. Για παράδειγμα, για να μετακινήσετε το αρχείο /Var/tmp/myfile.txt Στον κατάλογο / Αρχική / χρήστης Πρέπει να δώσετε στην ομάδα:

\$ mv /var/tmp/myfile.txt / σπίτι / χρήστης

Το αρχείο θα μεταφερθεί στον αρχικό κατάλογο του χρήστη Χρήστης. Ακόμη και αν βρίσκεται σε άλλο σύστημα αρχείων (σε αυτήν την περίπτωση, το αρχείο θα αντιγραφεί σε ένα νέο μέρος μετά το οποίο θα διαγραφεί το πρωτότυπο). Όπως θα μπορούσατε ήδη να μαντέψετε, μετακινώντας το αρχείο σε ένα άλλο σύστημα αρχείων οδηγεί σε μια αλλαγή στην πηγή του. Αυτό συμβαίνει επειδή το καθένα σύστημα αρχείων Έχει το δικό της σύνολο sequel.

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

Για να μετακινηθείτε ταυτόχρονα πολλά αρχεία σε έναν κατάλογο, πρέπει να γράψετε:

\$ mv /var/tmp/myfile1.txt /var/tmp/myfile2.txt / σπίτι / χρήστης \$ mv -t / home / user /var/tmp/myfile1.txt /var/tmp/myfile2.txt

Προσθήκη επιλογής "-V"Η οθόνη θα εμφανιστεί στη λειτουργία της λειτουργίας:

\$ mV -VT / HOME / USER /VAR/TMP/MYFILE1.TXT /VAR/TMP/MYFILE2.TXT "/var/tmp/myfile1.txt" -\u003e "/home/user/myfile1.txt" "/var/tmp/myfile2.txt" -\u003e "/ home/user/myfile2.txt"

Δημιουργία συνδέσμων και διαγραφής αρχείων

Σκληρές αναφορές

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

\$ cD / TMP. \$ Αγγίξτε το FirstLink. \$ ln firstlink secondlink. \$ lS -I FirstLink SecondLink 15782 FirstLink 15782 SecondLink

Όπως μπορεί να φανεί από το παράδειγμα, οι σκληροί σύνδεσμοι λειτουργούν στο επίπεδο του πάγου, δείχνουν ένα συγκεκριμένο αρχείο. Στο Linux, οι σκληρές αναφορές έχουν αρκετούς περιορισμούς. Πρώτον, μπορείτε να δημιουργήσετε σκληρούς συνδέσμους μόνο σε αρχεία, αλλά όχι στον κατάλογο. Αυτό ακριβώς, παρά το γεγονός ότι υπάρχουν στενές αναφορές στον κατάλογο (" . "Και" .. "), Ακόμη και ο superuser δεν μπορεί να δημιουργήσει πρόσθετους σκληρούς δεσμούς με τον κατάλογο. Δεύτερον, είναι αδύνατο να δημιουργήσετε έναν άκαμπτο σύνδεσμο στο αρχείο που βρίσκεται σε άλλο σύστημα αρχείων, επειδή κάθε σύστημα αρχείων έχει το δικό του μοναδικό σύνολο και των δύο εικονιδίων.

Συμβολικοί σύνδεσμοι

Στην πράξη, οι συμβολικοί σύνδεσμοι χρησιμοποιούνται συχνότερα (ή Σιμληϊκή). Το Simlink είναι μια ειδική μορφή ενός αρχείου που αναφέρεται σε ένα άλλο αρχείο με όνομα και όχι απευθείας στο εικονίδιο. Οι Simlinks δεν προστατεύουν το αρχείο από την αφαίρεση. Εάν το αρχείο διαγραφεί, τότε ο Simlink δεν λειτουργεί (ή Χημείο).

Οι Simlinks δημιουργούνται από την ομάδα ln. Με την επιλογή "-μικρό":

\$ ln -s secondlink ationallink \$ ls -l firstink secondlink ationallink -RW-RW-R-G 2 AGRIFFIS AGRIFFIS 0 Δεκ 15 Δεκ 19:08 FirstLink -RW-RW-R-- 2 AGRIFFIS AGRIFFIS 0 Δεκ 31 19:08 SecondLink LRWXRWXRWX 1 AGRIFFIS AGRIFIS 10 Δεκ 19 Δεκ 19 Δεκ 19 Δεκ 19:39 -\u003e SecondLink -\u003e SecondLink -\u003e

Ο συμβολικός σύνδεσμος μπορεί να αναγνωριστεί από την απόσυρση εντολών ls -l: Πρώτον, στην πρώτη στήλη του Simlkov υπάρχει μια επιστολή "ΜΕΓΑΛΟ" (Το πρώτο γράμμα της αγγλικής γλώσσας λέξης-σύνδεσης), δεύτερον, το μέγεθος του συμπληρώματος ισούται με τον αριθμό των γραμμάτων στο όνομα του αρχείου στο οποίο αναφέρεται ( "SecondLink" Στην περίπτωσή μας), τρίτον, η τελευταία στήλη εκτός από το όνομα σύνδεσης περιέχει το όνομα του αρχείου στο οποίο αναφέρεται μετά το σημάδι –>

Περισσότερα για το Simlinkakh

Εξετάστε την κατάσταση όταν θέλουμε να κάνουμε Simlink που υποδεικνύει / usr / τοπικό / bin και βρίσκεται στον κατάλογο / TMP / Directory. Μπορούμε να γράψουμε:

\$ lN -S / USR / LOCAL / BIN1 \$ ls -l bin1. Lrwxrwxrwx 1 ρίζα root 14 Ιανουαρίου 1 15:42 bin1 -\u003e / usr / local / bin \\ ln -s ../usr/local/bin bin2 \$ ls -l bin2. Lrwxrwxrwx 1 ρίζα root 16 Ιανουαρίου 1 15:43 bin2 -\u003e ../usr/local/bin \\ $ ls -l bin2. Lrwxrwxrwx 1 ρίζα root 16 Ιανουαρίου 1 15:43 bin2 -\u003e ../usr/local/bin \\ $ mkdir mynewdir. \$ mv bin2 mynewdir \$ cD mynewdir. \$ cD bin2. Bash: CD: bin2: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος

Δεδομένου ότι δεν υπάρχει καταλόγος / tmp / usr / τοπικός / bin /, δεν θα μπορέσουμε να αλλάξουμε τον κατάλογο εργασίας στο bin2. Με άλλα λόγια, αφού μετακινήσετε τη σύνδεση που σταμάτησε να λειτουργεί (έγινε "Bat").

Για το λόγο αυτό, αξίζει μερικές φορές να αποφεύγεται η δημιουργία των Symlinks χρησιμοποιώντας σχετικές διαδρομές. Αλλά μερικές φορές συμβαίνει άνετα. Εξετάστε μια τέτοια περίπτωση: Ας πούμε ότι θέλουμε να συνδεθούμε με το πρόγραμμα στο / usr / bin (ή με άλλα λόγια για να εκχωρήσετε ένα εναλλακτικό όνομα για αυτό το πρόγραμμα):

# lS -L / USR / BIN / KEYCHAIN -RWXR-XR-X 1 ρίζα root 10150 Δεκ 12 20:09 / USR / Bin / Keychain

Το Superventor (ρίζα) μπορεί να θέλει να κάνει μια σύνδεση με το πρόγραμμα "Keychain" με ένα συντομότερο όνομα "KC". Σε αυτό το παράδειγμα, έχουμε μια πρόσβαση δρομολόγησης στο σύστημα, όπως αποδεικνύεται από την πρόσκληση των bash, η οποία έχει αλλάξει "#" . Χρειαζόμαστε το δικαίωμα του superuser επειδή Συμβατικοί χρήστες Δεν είναι δυνατή η δημιουργία αρχείων στον / usr / bin / bin / directory. Τώρα μπορούμε, εξ ονόματος της ρίζας, να δημιουργήσουμε ένα εναλλακτικό όνομα για το πρόγραμμά μας:

# cD / USR / BIN # lN -S / USR / BIN / KEYCHAIN \u200b\u200bKC # ls -l keychain. -RWXR-XR-X 1 ρίζα root 10150 Δεκ 12 20:09 / USR / Bin / Keychain lS -L KC. LRWXRWXRWX 1 ρίζα root 17 Μαρτίου 27 17:44 KC -\u003e / USR / Bin / Keychain

Σε αυτό το παράδειγμα, δημιουργήσαμε ένα sylink kc που αναφέρεται στο αρχείο / usr / bin / keychain.

# mV / USR / BIN / KEYCHAIN \u200b\u200b/ USR / BIN / KC / USR / LOCAL / BIN # lS -L / USR / LOCAL / BIN / KC LRWXRWXRWX 1 ρίζα root 17 Μαρτίου 27 17:44 KC -\u003e / USR / Bin / Keychain

Λόγω του γεγονότος ότι χρησιμοποιήσαμε την απόλυτη διαδρομή κατά τη δημιουργία ενός συνδέσμου, συνεχίζει να καθορίζει το αρχείο / usr / bin / keychain, το οποίο δεν είναι πλέον. Αλλά αν χρησιμοποιήσαμε τη σχετική διαδρομή κατά τη δημιουργία ενός συνδέσμου, θα παραμείνει εργασίας.

Συχνά και οι δύο τύποι προσομοιογράφησης (με απόλυτο και σχετικό και μονοπάτι) λειτουργούν κανονικά. Το ακόλουθο παράδειγμα δείχνει έναν τρόπο δημιουργίας ενός simlink που συνεχίζει να λειτουργεί μετά τη μετακίνηση και το αρχείο στο οποίο αναφέρεται σε άλλο καταλόγιο:

# cD / USR / BIN # ln -s keychain kc # lS -L KC. LRWXRWXRWX 1 ρίζα ρίζας 8 Ιανουαρίου 5 12:40 KC -\u003e Keychain # mV Keychain KC / USR / Local / Bin # lS -L / USR / LOCAL / BIN / KEYCHAIN -RWXR-XR-X 1 ρίζα ρίζας 10150 Δεκ 12 20:09 / USR / Local / Bin / Keychain lS -L / USR / LOCAL / BIN / KC LRWXRWXRWX 1 ρίζα root 17 Μαρτίου 27 17:44 KC -\u003e Keychain

Τώρα μπορούμε να τρέξουμε το πρόγραμμα "Keychain" επικοινωνώντας με το όνομα / usr / τοπικό / bin / kc

rm

Τώρα όταν γνωρίζουμε πώς λειτουργούν οι ομάδες cP., mv και ln. Ήρθε η ώρα να μάθετε πώς να διαγράψετε αρχεία. Συνήθως, η διαγραφή γίνεται χρησιμοποιώντας την εντολή rm. Για να διαγράψετε πολλά αρχεία, απλώς προσδιορίστε τα ονόματά τους μέσω του χάσματος στη γραμμή εντολών ως επιχειρήματα rm:

\$ cD / TMP. \$ Αγγίξτε το αρχείο αρχείων1. \$ ls -l αρχείο1 αρχείο2 -RW-R - R- 1 ρίζα ρίζας 0 Ιαν 1 16:41 αρχείο1 -RW-R - r- 1 ρίζα ρίζας 0 Ιαν 1 16:41 αρχείο rM αρχείο1 αρχείο2. \$ ls -l αρχείο1 αρχείο2 LS: αρχείο1: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος LS: αρχείο2: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος

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

\$ rm -i αρχείο1 αρχείο2 RM: Κατάργηση κανονικού άδειου αρχείου αρχείου1 "; y. RM: Αφαιρέστε τακτικό κενό αρχείο αρχείου2 "; y.

Στο τελευταίο παράδειγμα, πριν αφαιρέσετε κάθε αρχείο, η εντολή rm Ρωτάει: Ο χρήστης θέλει πραγματικά να διαγράψει το αρχείο; Για να επιβεβαιώσετε τη διαγραφή, το TENTO πατήστε το πλήκτρο "Y" στο πληκτρολόγιο και να αρνηθείτε να διαγράψετε - κλειδί "N".

Να διακόψετε την εκτέλεση οποιασδήποτε εντολής (αν κάτι δεν το δεν σκέφτηκε) μπορείτε να πιέσετε έναν συνδυασμό ΚονδύλιοΝΤΟ..

Κάντε την επιβεβαίωση της επιβεβαίωσης της εντολής RM για να διαγράψετε κάθε αρχείο ακόμη και χωρίς επιλογή "-Εγώ" Μπορείτε να προσθέσετε στο αρχείο ~ / .bashrc. Χρησιμοποιώντας την αγαπημένη σας συμβολοσειρά επεξεργασίας κειμένου:

alias \u200b\u200bRM \u003d "RM -I"

rmdir.

Υπάρχουν δύο τρόποι για να διαγράψετε τους καταλόγους: Μπορείτε να διαγράψετε εναλλάξ όλους τους περιεχόμενο του καταλόγου και, στη συνέχεια, να χρησιμοποιήσετε την εντολή rmdir. Για να καταργήσετε τον ίδιο τον κατάλογο:

\$ mkdir mydir. \$ Αγγίξτε το MyDir / File1 \$ rm mydir / αρχείο1 \$ rmdir mydir.

Αυτή η μέθοδος ονομάζεται συνήθως η μέθοδος αφαίρεσης καταλόγου διαγραφής καταλόγου. " Πολύ πιο βολικό να χρησιμοποιήσετε την ομάδα "RM -RF" Για να καταργήσετε τον κατάλογο με όλα τα περιεχόμενά του.

\$ rm -rf mydir.

Χρησιμοποιήστε αυτήν την εντολή με προσοχή, αφού με τη βοήθειά του έναν άπειρο διαχειριστή (ειδικά με τα ριζικά δικαιώματα), είναι πολύ εύκολο να αποκλείσετε τα καυσόξυλα (και τα συστήματα Linux).

Χρησιμοποιώντας μπαλαντέρ

Τι είναι μπαλαντέρ

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

\$ rM File1 Αρχείο2 Αρχείο 6 Αρχείο5 Αρχείο5 Αρχείο 6 Αρχείο7 Αρχείο8

Μπορείτε να λύσετε αυτό το πρόβλημα χρησιμοποιώντας πρότυπα αντικατάστασης (μπαλαντέρ). Ο διερμηνέας εντολών Linux υποστηρίζει τη δυνατότητα να καθορίζει πολλαπλά αρχεία χρησιμοποιώντας πρότυπα (για ιστορικούς λόγους, ονομάζεται επίσης "globing"). Bash και άλλες εντολές Linux Επιλέξτε μόνο τα αρχεία που αντιστοιχούν στο πρότυπο. Έτσι, αν χρειαστεί να διαγράψετε αρχεία από το αρχείο1 στο αρχείο8, πρέπει να γράψετε:

\$ Αρχείο RM

Και αν θέλετε να διαγράψετε όλα τα ονόματα των ονόματα των οποίων ξεκινούν με το αρχείο λέξης και το αρχείο που ονομάζεται αρχείο:

\$ Αρχείο RM *

Πρότυπο * Αντιστοιχεί σε οποιοδήποτε χαρακτήρα, ακολουθίες συμβόλων ή "έλλειψη συμβόλου". Φυσικά, τα πρότυπα μπορούν να εφαρμοστούν όχι μόνο για τη διαγραφή αρχείων, όπως θα εμφανίζονται παρακάτω.

Εάν η σύμπτωση δεν βρέθηκε

Αν θέλετε να εμφανίσετε μια λίστα αρχείων στα / etc / των οποίων τα ονόματα ξεκινούν με το γράμμα "ΣΟΛ" και το αρχείο που ονομάζεται "G" (αν υπάρχει τέτοια), πρέπει να γράψετε:

\$ ls -d / etc / g * / Etc / gimp / etc / gnome / etc / gnome-vfs-mime-magic / etc / gpm / etc / group / etc / etc / etc / group

Ας δούμε τι συμβαίνει εάν ορίσετε ένα πρότυπο που δεν ταιριάζει με κανένα όνομα αρχείου:

\$ lS -D / USR / BIN / ASDF * JKL LS: / USR / BIN / ASDF * JKL: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος

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

Πρότυπο σύνταξης: * και;

Εξετάσαμε το πώς λειτουργεί η εργασία Globing (ονόματα αρχείων). Και τώρα εξετάστε λεπτομερέστερα τη σύνταξη των προτύπων:

* αντιστοιχεί σε μηδέν ή περισσότερους χαρακτήρες:

  • / etc / g * - όλα τα αρχεία στα / etc / ονόματα των οποίων ξεκινούν με "g" και το αρχείο που ονομάζεται "g".
  • / Tmp / my * 1 - Όλα τα αρχεία στα ονόματα καταλόγων / TMP ξεκινούν με το "My" και το τέλος σας στο "1" (συμπεριλαμβανομένου του αρχείου που ονομάζεται "My1")

? Αντικαθιστά ένα σύμβολο:

  • myfile; - Οποιοδήποτε αρχείο του οποίου το όνομα αρχίζει με τη λέξη "myfile" ακολουθούμενη από έναν κάθε χαρακτήρα.
  • / Tmp / σημειώσεις; txt - Κάνει αρχεία με τα αρχεία ονομάτων.TXT και "Notes_txt" (εάν υπάρχουν στο / tmp /).

Αγκύλες:

Το πρότυπο "" είναι πολύ παρόμοιο με το " ? "Αλλά σας επιτρέπει να καθορίσετε ρητά ένα σύνολο χαρακτήρων. Το πρότυπο" "ταιριάζει με έναν χαρακτήρα από εκείνους που καθορίζονται σε παρένθεση. Επίσης σε παρένθεση, μπορείτε να καθορίσετε το εύρος συμβόλων (για αυτό χρησιμοποιείται - / παύλα) ή πολλές σειρές σε ένα Σειρά, τότε το πρότυπο θα συμπέσει με ένα σύμβολο από αυτό το εύρος:

  • myfile. - Αγώνες MyFile1 και MyFile2. Το πρότυπο θα λειτουργήσει ενώ υπάρχει τουλάχιστον ένα από αυτά τα δύο αρχεία.
  • hangeog. - Συμμορφώνεται με τα αρχεία με τα ονόματα Changelog, Changelog, Changelog και Changelog. Όπως ίσως παρατηρήσετε, η χρήση του προτύπου είναι χρήσιμη κατά την αναζήτηση των ονομάτων των χαρακτηριστικών γραμμάτων.
  • ls / etc / * - Εμφανίστε μια λίστα αρχείων στα ονόματα / ETC / των οποίων τα ονόματα ξεκινούν με αριθμούς.
  • lS / TMP / * - Εμφανίστε μια λίστα αρχείων στον κατάλογο / TMP / των οποίων τα ονόματα ξεκινούν με το γράμμα (τίτλος ή κεφάλαιο)

Ο σχεδιασμός [παρόμοιος με, εκτός από το ότι αντιστοιχεί σε ένα μόνο σύμβολο που δεν αναφέρεται μεταξύ [[ και ] . Για παράδειγμα:

  • rm myfile [ - Διαγράψτε όλα τα αρχεία των οποίων τα ονόματα αποτελούνται από τη λέξη "MyFile" και τρέχοντας ένα ψηφίο μετά από αυτό, εκτός από το αρχείο "MyFile9".

Παραδείγματα χρήσης

Εδώ είναι μερικά παραδείγματα χρήσης προτύπων. Δεδομένου ότι ο Bash ερμηνεύει τους χαρακτήρες ? , [ , ] , * Ως πρότυπα αντικατάστασης, είναι απαραίτητο να ληφθούν προφυλάξεις κατά τη χρήση επιχειρήσεων που περιέχουν αυτούς τους χαρακτήρες. Για παράδειγμα, εάν θέλετε να δημιουργήσετε ένα αρχείο που περιέχει μια συμβολοσειρά " * ", Η επόμενη ομάδα δεν θα κάνει ό, τι θέλετε:

\$ echo *\u003e /tmp/mynewfile.txt

Εάν έχετε ένα ή περισσότερα αρχεία στον κατάλογό εργασίας σας, τα ονόματα των οποίων εμπίπτουν στο πρότυπο " * "Θα βρείτε τη λίστα / ttmp/mynewfile.txt κατάλογος των ονομάτων τους, όχι μια συμβολοσειρά" * "Αλλά πώς να επιτύχουμε αυτό που θέλαμε; ο πρώτος τρόπος είναι να πάρετε μια συμβολοσειρά μέσα ενιαία αποσπάσματα. Μια σειρά σε μονές μπαταρίες Bash αναφέρεται στη συνήθη συμβολοσειρά κειμένου και δεν αποκαλύπτει τα σύμβολα αντικατάστασης.

\$ echo "*"\u003e /tmp/mynewfile.txt

Μετά την εκτέλεση αυτής της εντολής, το αρχείο σας θα περιέχει μια συμβολοσειρά " * "Όπως αναμενόταν, ένας άλλος τρόπος είναι να καθαρίσετε τους ειδικούς με τη βοήθεια μιας αντίστροφης κοπής ( \ ). Ο Bakslash που στέκεται μπροστά από τον ειδικό αναφέρει ο διερμηνέας ότι αυτό το σύμβολο πρέπει να θεωρείται ως συνηθισμένο κείμενο και όχι ως πρότυπο.

\$ echo \\\\ *\u003e /tmp/mynewfile.txt

Και οι δύο προτεινόμενες μέθοδοι (μόνο αποσπάσματα και θωράκιση) δίνουν το επιθυμητό αποτέλεσμα. Από τότε που μιλήσαμε για θωράκιση με τη βοήθεια μιας αντίστροφης κάθετο, αξίζει να το να το να το να ορίσετε ένα σύμβολο κειμένου "\" Μπορείτε να ολοκληρώσετε σε αποσπάσματα ή να γράψετε "\\\" (Αυτός ο συνδυασμός θα γίνει αντιληπτός από τον διερμηνέα ως ένα συνηθισμένο απλό bakslash "\" )

Σχόλιο: Τα διπλά εισαγωγικά λειτουργούν σχεδόν τα ίδια με το μόνο, αλλά επιτρέπουν το Bash-In να ερμηνεύσει μερικούς ειδικούς. Επομένως, μεμονωμένα αποσπάσματα - Ο καλύτερος τρόπος Μεταφέρετε το κείμενο μόνο για εντολή. Για περισσότερες πληροφορίες σχετικά με τα πρότυπα, διαβάστε το πιστοποιητικό "Άνθρωπος 7 GOBL". Για περισσότερες πληροφορίες σχετικά με τη χρήση αποσπασμάτων, διαβάστε την ενότητα Παραθέτω πιστοποιητικά "Άνθρωπος 8 GOBL".

συμπέρασμα

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

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

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

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

Ποιος θα πρέπει να διαβάσει αυτό το βιβλίο;

Το πλεονέκτημα της ανάγνωσης αυτού του βιβλίου μπορεί να μάθει όποιον λειτουργεί με συστήματα UNIX ή συστήματα που επιθυμούν να ανακουφίσουν τη ζωή, τους έμπειρους χρήστες, καθώς και Διαχειριστές συστήματος. Οι αναγνώστες που έχουν ήδη κατανόηση του τρόπου με τη χρήση της γραμμής εντολών για να συνεργαστεί με το σύστημα, να μάθετε όλες τις λεπτομέρειες της δημιουργίας των σεναρίων Shell Command, με τις οποίες μπορείτε να διευκολύνετε την εκτέλεση καθημερινών καθηκόντων. Η χορήγηση του συστήματος βασίζεται κυρίως για τη δημιουργία σεναρίων. Οι καθημερινές εργασίες είναι συχνά αυτοματοποιημένες χρησιμοποιώντας Απλά σενάρια. Σε αυτό το έγγραφο, η μάζα των παραδειγμάτων που σας εμπνεύσει να περάσετε τα δικά σας σενάρια και θα σας κάνουν να βελτιώσετε τα υπάρχοντα σενάρια.

Πριν προχωρήσετε στο σημερινό μάθημα:

  • Πρέπει να είστε ένας έμπειρος χρήστης Unix ή Linux, εξοικειωμένος με τις κύριες ομάδες, με τις σελίδες των περιγραφών και τεκμηρίωσης του ανθρώπου.
  • να είναι σε θέση να χρησιμοποιήσετε έναν επεξεργαστή κειμένου.
  • Κατανοήστε τον τρόπο φόρτωσης του συστήματος και οι διαδικασίες σταματούν, γεγονός που καθιστά το Init και το πώς χρησιμοποιούνται τα σενάρια init.
  • Δημιουργία χρηστών και ομάδων, ορίστε κωδικούς πρόσβασης.
  • γνωρίζουν ποια δικαιώματα πρόσβασης και ειδικές λειτουργίες είναι.
  • Γνωρίστε τους κανόνες που ονομάζουν συσκευές, καταλάβετε ποια διαμερίσματα είναι, Mount / Uncount File Systems.
  • να είστε σε θέση να προσθέσετε λογισμικό Στο σύστημά σας και διαγράψτε το από το σύστημα.

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

Στην εκτύπωση, αυτό το εγχειρίδιο είναι διαθέσιμο στο Fultus.com.

Εικ.1. Καλύψτε το βιβλίο "Bash Οδηγός για αρχάριους"

Αυτό το εγχειρίδιο έχει μεταφραστεί:

Η μεταφορά στα γαλλικά και ο σύνδεσμος θα δοθεί αμέσως μετά την ολοκλήρωση της μετάφρασης.

Ιστορία της αλλαγής

Ιστορία της αλλαγής

Οι αναγνώστες λαμβάνονται υπόψη: Σταθερές εξηγήσεις της ομάδας μετατόπισης στο κεφάλαιο 9, ΤΥΠΟΣ στο Κεφάλαιο 7, Κεφάλαιο 3, Κεφάλαιο 10.

Ζητεί τις επιθυμίες των αναγνωστών.

Αλλαγή διεύθυνσης

Τα σχόλια των αναγνωστών εισάγονται, χρησιμοποιώντας ετικέτες DocBook, έχει προστεθεί ένας δείκτης.

Ένα παράδειγμα εξηγείται στο Κεφάλαιο 4, μια περιγραφή των ενσωματωμένων εγγράφων (εδώ doc) ρυθμίζεται στο κεφάλαιο 9, η συνολική επαλήθευση και η διόρθωση των τυπογραφικών σφαλμάτων, προστιθέμενοι συνδέσμοι σε κινεζικές και ουκρανικές μεταφράσεις, σχόλια και άλλα AWK στο κεφάλαιο 6.

Σταθερά τυπογραφικά σφάλματα στο κεφάλαιο 3, 6 και 7, πρόσθεσε σχόλια των χρηστών, πρόσθεσε μια παρατήρηση στο κεφάλαιο 7.

Λίγο για την αποσφαλμάτωση, πρόσθεσε πολλά Λέξεις-κλειδιά, Πληροφορίες σχετικά με το νέο Bash 3.0, προστιθέμενη εικόνα.

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

Αναθεώρηση 1.0-βήτα

Ευχαριστώ

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

  • Hans Bool (Hans Bol) ένας από τους οπαδούς.
  • Mike Sim (Mike Sim) για σχόλια σχετικά με το ύφος.
  • Dan richter για παραδείγματα με συστοιχίες.
  • George Ferguson (Gerg Ferguson) για ιδέες που σχετίζονται με τον τίτλο.
  • Ο Mendel Leo Cooper (Mendel Leo Cooper), ο οποίος χορήγησε τόπο εργασίας.
  • # Linux.be, για να με υποστηρίξει τη ζωή.
  • Frank Wang (Frank Wang), για λεπτομερή σχόλια σχετικά με όλα όσα δεν έκανα όπως θα έπρεπε ;-)

Ευχαριστίες χάρη στο Tabatha Marshall, το οποίο ανέλαβε να κάνει έναν γενικό έλεγχο και δοκιμή ορθογραφίας και γραμματικής. Είχαμε σπουδαία ομάδα: Εργάστηκε όταν κοιμήθηκα. Και αντίστροφα;-)

(Πρόκειται για σφάλματα στην αγγλική έκδοση - prim.per.).

Πληροφορίες πνευματικών δικαιωμάτων

* Πνευματικά δικαιώματα (γ) 2002-2007, Machtelt Garrels * Όλα τα δικαιώματα διατηρούνται. * Η αναδιανομή και η χρήση σε πηγή και δυαδικές μορφές, με ή χωρίς * τροποποίηση, επιτρέπονται, εφόσον πληρούνται οι ακόλουθες προϋποθέσεις: * * * Οι αναδιανομές του πηγαίου κώδικα πρέπει να διατηρήσουν την παραπάνω πνευματική ιδιοκτησία * ειδοποίηση, αυτόν τον κατάλογο των συνθηκών και την ακόλουθη αποποίηση ευθυνών. * * Οι αναδιαλύσεις στη δυαδική μορφή πρέπει να αναπαράγουν την παραπάνω πνευματική ιδιοκτησία * ειδοποίηση, αυτόν τον κατάλογο των συνθηκών και την ακόλουθη αποποίηση ευθυνών στην τεκμηρίωση * και άλλα υλικά που παρέχονται με τη διανομή. * * Ούτε το όνομα του συγγραφέα, ο Machtelt Garrels, ούτε τα ονόματα των συντελεστών της, μπορεί να χρησιμοποιηθεί για να υποστηρίξει ή να προωθήσει τα προϊόντα * που προέρχονται από αυτό το λογισμικό χωρίς συγκεκριμένη προηγούμενη γραπτή άδεια. * * Αυτό το λογισμικό παρέχεται από τον συγγραφέα και τους συνεισφέροντες "όπως είναι" και τυχόν * ρητή ή σιωπηρές εγγυήσεις, συμπεριλαμβανομένων, αλλά δεν περιορίζονται, οι σιωπηρές * εγγυήσεις εμπορευσίας και καταλληλότητας για συγκεκριμένο σκοπό είναι * αποποιούνται. Σε καμία περίπτωση ο συγγραφέας και οι συνεισφέροντες ευθύνεται για κάθε * άμεση, έμμεση, παρεπόμενη, ειδική, υποδειγματική ή επακόλουθη ζημία * (συμπεριλαμβανομένων, αλλά δεν περιορίζεται, προμήθεια υποκατάστατων αγαθών ή υπηρεσιών · * απώλεια χρήσης, δεδομένα ή Κέρδη. Ή επιχειρηματική διακοπή) ωστόσο προκλήθηκαν και * σε οποιαδήποτε θεωρία του LIBER, είτε στη σύμβαση, την αυστηρή ευθύνη είτε την αδικοπραξία * (συμπεριλαμβανομένης της αμέλειας του εξωτερικού) που προκύπτουν με κάθε τρόπο από τη χρήση αυτού του λογισμικού *, ακόμη και αν συμβουλεύεται τη δυνατότητα της ζημίας αυτών.

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

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

Ο, τι χρειάζεσαι?

Οργάνωση αυτού του εγγράφου

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

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

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

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

  • ΚΕΦΑΛΑΙΟ 1 "ΔΙΕΥΘΥΝΣΗ ΘΗΚΩΝ ΚΑΙ ΣΧΕΔΙΑΣΜΟΣ BONH" - Bash Βασικά: Γιατί το Bash είναι τόσο καλά εξαρτήματα, αρχικές συμβουλές για την ανάπτυξη καλών σεναρίων.
  • ΚΕΦΑΛΑΙΟ 2 "Γράφουμε και σφαλμάτων σφαλμάτων" - τα βασικά στοιχεία των σεναρίων: γράφουμε και σφαλμάτων σφαλμάτων.
  • Κεφάλαιο 3 "Περιβάλλον BASH" - Περιβάλλον Bash Περιβάλλον: Αρχεία αρχικοποίησης, μεταβλητές, αλλαγή Ιδιότητες των ειδικών χαρακτήρων, τη διαδικασία εκτέλεσης υποκαταστάσεων στο κέλυφος εντολών, ψευδώνυμα, παραμέτρους.
Συνεχίζοντας το θέμα:
Λινάρι

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

Νέα άρθρα
/
Δημοφιλής