Πώς να δημιουργήσετε σενάρια για προγράμματα. Εισαγωγή στο σενάριο. register_globals = Off και τίποτα άλλο

Τι είναι ένα σενάριο; Ένα σενάριο είναι ένα πρόγραμμα γραμμένο σε μια γλώσσα προγραμματισμού Ιστού για ιστότοπους που επιλύει οποιεσδήποτε δυναμικές εργασίες στον ιστότοπο, είτε δημιουργεί ένα καλάθι αγορών για τον αγοραστή είτε οργανώνει αλληλογραφία στον ιστότοπο είτε η ψηφοφορία γενικά υλοποιεί οποιαδήποτε ανάγκη τυπικά μέσα html ή css δεν έχει υλοποιηθεί. Τα σενάρια είναι σχεδόν το κύριο συστατικό οποιουδήποτε ιστότοπου, με τη βοήθεια σεναρίων ένας ιστότοπος μετατρέπεται από μια συνηθισμένη σελίδα που σχεδιάζεται με το χέρι σε μια πολυλειτουργική δομή και έτσι δεν μπορείτε να κάνετε χωρίς σενάρια.
Σχεδόν κάθε σενάριο μπορεί να προσαρμοστεί και να εφαρμοστεί για έναν συγκεκριμένο ιστότοπο. Σε αυτήν την ενότητα, σας προσφέρονται πολύ ενδιαφέροντα και χρήσιμα σενάρια που θα σας βοηθήσουν να κάνετε τον ιστότοπό σας πιο βολικό και διαφορετικό.

Αυτό αναβαθμισμένη έκδοσηγνωστό και αγαπημένο σε όλους CMS Wordpress, που διαχειρίζεται την πλειοψηφία των ιστολογίων στο Διαδίκτυο. Η έκδοση είναι εντελώς ρωσισμένη και σωστή. Σε αυτήν την έκδοση, πολλά έχουν βελτιωθεί και οριστικοποιηθεί, για παράδειγμα, βελτιώθηκαν επεξεργαστής κειμένου, δημιούργησε μια νέα εμφάνιση για τη βιβλιοθήκη εικόνων, έναν νέο κατάλογο προσθηκών και ούτω καθεξής. Μπορείτε να κατεβάσετε το Wordpress 4 και να έχετε ένα υπέροχο blog σήμερα.

Ένα υπέροχο ισχυρό φόρουμ που έχει μεγάλες δυνατότητες και το καλύτερο από όλα είναι επίσης δωρεάν. Η έκδοση 3 είναι μια λογική συνέχεια του διάσημου phpbb2, αλλά φυσικά πολύ περισσότερη λειτουργικότητα, ποιότητα και κάθε είδους βελτιώσεις. Ένα καλό cms που δεν είναι σε καμία περίπτωση κατώτερο από τα αντίστοιχα επί πληρωμή.

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

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

Το Joomla είναι ένα σύνολο σεναρίων γραμμένων στη γλώσσα Προγραμματισμός PHP. Αυτή είναι μια έτοιμη και δωρεάν μηχανή για την ιστοσελίδα σας. Joomla! προσπαθεί να κρατά τα πράγματα όσο πιο απλά γίνεται, παρέχοντας παράλληλα μεγάλες ευκαιρίες. Τέλος, άτομα που δεν είναι εξοικειωμένα με τον προγραμματισμό μπορούν να έχουν τον απόλυτο έλεγχο των τοποθεσιών τους χωρίς να ξοδεύουν υπέρογκα ποσά σε λογισμικό κλειστού κώδικα. Συνήθως ένας web server είναι προνόμιο των hosters, ωστόσο, μπορείτε να εγκαταστήσετε πολύ απλά και γρήγορα το D.E.N.W.E.R., το οποίο θα εγκαταστήσει ένα έτοιμο πακέτο στον υπολογιστή σας λογισμικόδιακομιστή web και στον οποίο μπορείτε να αναπτύξετε και να εγκαταστήσετε το Joomla CMS. Έκδοση του Joomla! 1.5.12 με τοπικό υλικό επίδειξης και προεγκατεστημένη ρωσική γλώσσα διαλόγων. Αυτό το κιτ διανομής δεν διαφέρει από το τυπικό, εκτός από τα προεγκατεστημένα πακέτα τοπικής προσαρμογής στη ρωσική γλώσσα, το υλικό επίδειξης στα ρωσικά, τα αρχεία γλώσσας TinyMCE και το κείμενο άδειας χρήσης που εμφανίζεται κατά την εγκατάσταση.

Στην πραγματικότητα, αυτό είναι ένα μίνι Yandex στον ιστότοπό σας. Σενάριο αναζήτησης ιστότοπου χωρίς χρήση MySQL. Κατάλληλο για τις περισσότερες μικρές έως μεσαίες τοποθεσίες. Χρησιμοποιεί ευρετηρίαση, επομένως ο χρόνος αναζήτησης μειώνεται σημαντικά. Ευρετήρια ~1Mb σε 1sec (η ταχύτητα εξαρτάται από την ένθεση των φακέλων και τη δομή των σελίδων σας). Η αναζήτηση διαρκεί από κλάσματα του δευτερολέπτου (ανάλογα με την πολυπλοκότητα του ερωτήματος και το βάρος του ευρετηρίου) έως...

Το WordPress είναι ένα δωρεάν CMS με ανοιχτή πηγήδιανέμεται υπό την GNU GPL. Το WordPress είναι μια από τις πιο δημοφιλείς πλατφόρμες blogging σήμερα. Με αυτό το σενάριο, μπορείτε να δημιουργήσετε έναν ιστότοπο με εξαιρετική λειτουργικότητα, από μια απλή σελίδα με αναρτήσεις, σε έναν πολυλειτουργικό ιστότοπο με εγγραφή χρήστη και κάθε είδους υπηρεσίες, χάρη σε έναν μεγάλο αριθμό προσθηκών. Επίσης, έχει γραφτεί ένας τεράστιος αριθμός δωρεάν προτύπων για αυτό το CMS, που θα σας βοηθήσουν να κάνετε το blog σας κομψό και όμορφο.
Μάθημα εγκατάστασης και διαμόρφωσης.

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

Από πού να ξεκινήσω;

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

  • WScript.Echo("Hello!");
  • text = "";

Τώρα πρέπει να αποθηκεύσουμε το αρχείο .js. Πώς να εκτελέσετε το σενάριο; Απλώς κάντε διπλό κλικ στο αρχείο που δημιουργήθηκε και voila - εμφανίζεται ένα κλασικό παράθυρο ειδοποίησης των Windows με το κείμενο "Hi!". Μπορείτε να κάνετε κλικ στο "σταυρός" ή στο πλήκτρο "OK" και να κλείσετε το σενάριο. Διαβάστε περισσότερα στο άρθρο μας. Έτσι, έχετε γράψει ένα σενάριο και μπορείτε ακόμη και τώρα να δημιουργήσετε τέτοια παράθυρα ειδοποιήσεων με τυχόν επιγραφές, αλλά δεν καταλαβαίνετε καθόλου τι σημαίνουν οι εντολές, απλώς τις αντιγράφετε. Εάν αντιμετωπίζετε την εργασία ότι όταν κάνετε κλικ στο κουμπί "OK", εμφανίζεται κάποιο είδος μενού, θα βρεθείτε εντελώς σε απώλεια. Εάν θέλετε πραγματικά να γράφετε σενάρια και όχι να τα αντιγράψετε, θα πρέπει πρώτα να μάθετε τη σύνταξη και τη δομή των γλωσσών δέσμης ενεργειών.

Γλώσσες σεναρίου

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

  • σενάριο εντολής. Το πιο γνωστό είναι το JCL. Αυτή η ομάδα γλωσσών χρησιμοποιείται για τη διαχείριση εργασιών σε λειτουργικά συστήματα. Οι γλώσσες δημιουργήθηκαν τη δεκαετία του 1960, αλλά λίγοι άνθρωποι εργάζονται με αυτές σήμερα.
  • εφαρμοζόμενα σενάρια. Αυτά περιλαμβάνουν το πιο δημοφιλές JavaScript. Αυτή η ομάδα γλωσσών λειτουργεί στην πλευρά πελάτη του λογισμικού. Μπορείτε να βρείτε καλά μαθήματα JavaScript.
  • γλώσσες σήμανσης που επιτρέπουν την ενσωμάτωση ετικετών σε απλό κείμενο για δόμηση και συγκεκριμένη δυναμική συμπεριφορά. Το πιο γνωστό είναι το PostScript, το μελετάμε.
  • καθολικές γλώσσες, οι πλέον κατάλληλες για τον προγραμματισμό του διαδικτυακού χώρου. Το πιο δημοφιλές είναι το Tcl, ας εμβαθύνουμε στη σύνταξή του.

Μπορείτε να βρείτε καλά πρότυπα σεναρίων στους ιστότοπους - webnav.ru και besttemplates.ru.

Εγκατάσταση του σεναρίου

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

  1. Ανεβάστε το αρχείο σεναρίου στον ιστότοπο σε ανάλυση ftp.
  2. Ορίστε το δικαίωμα εκτέλεσης του σεναρίου στις ρυθμίσεις ασφαλείας.
  3. Εκκινούμε τη φόρμα εγκατάστασης και συμπληρώνουμε τα απαραίτητα δεδομένα.
  4. Πραγματοποιούμε πρόσθετη διαμόρφωση του σεναρίου στον πίνακα ελέγχου.

Εντολή

Ανάλογα με το πού εκτελείται το σενάριο, τα σενάρια χωρίζονται σε "client" και "server". Πηγαίνοντας σε κάποια διεύθυνση στο δίκτυο, στέλνουμε τη διεύθυνση URL της σελίδας που μας ενδιαφέρει στον διακομιστή και ο διακομιστής εκτελεί το σενάριο (script) που βρίσκεται στην καθορισμένη διεύθυνση. Το σενάριο, εκτελώντας τις ενέργειες που έχουν προγραμματιστεί σε αυτό στον διακομιστή, συλλέγει τη σελίδα από τα απαραίτητα μπλοκ και τη στέλνει στο πρόγραμμα περιήγησης. Αυτό είναι ένα σενάριο διακομιστή. Έχοντας λάβει τη σελίδα, το πρόγραμμα περιήγησης στο δικό μας την αποδίδει για εμάς και εάν υπάρχει κάποιο είδος σεναρίου στον λαμβανόμενο κώδικα σελίδας, τότε εκτελεί ήδη αυτό το σενάριο. Αυτό είναι ένα σενάριο πελάτη.
Προκειμένου ένας διακομιστής ή ένα πρόγραμμα περιήγησης να διαβάσει, να κατανοήσει και να εκτελέσει ένα σενάριο, πρέπει να συντεθεί και να γραφτεί σύμφωνα με τους κανόνες που γνωρίζει. Τέτοια σύνολα κανόνων ονομάζονται γλώσσες προγραμματισμού δέσμης ενεργειών. Τα περισσότερα σενάρια διακομιστή είναι γραμμένα αυτήν τη στιγμή Γλώσσα PHP, και τα περισσότερα από την πλευρά του πελάτη είναι σε JavaScript. Για να γράψετε ένα σενάριο, αρκεί να έχετε ένα κανονικό πρόγραμμα επεξεργασίας κειμένου - σημειωματάριο. Αλλά για συνεχή προγραμματισμό σεναρίων, δεν μπορείτε να κάνετε χωρίς έναν εξειδικευμένο επεξεργαστή. Ένας τέτοιος συντάκτης αναλαμβάνει τη μερίδα του λέοντος στη δουλειά ρουτίνας της συγγραφής σεναρίων, αφήνοντας στον προγραμματιστή περισσότερο χρόνο για δημιουργικότητα.
Ας γράψουμε ένα απλό σενάριο PHP. Η πρώτη γραμμή πρέπει να λέει στον ερμηνευτή ότι το σενάριο ξεκινά από αυτό το μέρος. Στην PHP, αυτή η ετικέτα ανοίγματος μοιάζει με αυτό:Ανάμεσα σε αυτές τις δύο ετικέτες βρίσκονται οι οδηγίες γλώσσας. Για παράδειγμα, εκτυπώστε την επιγραφή που άφησε ο O. Bender στους βράχους του Καυκάσου, ως εξής: ηχώ ("Η Κίσυα και η Όσια ήταν εδώ") και η οδηγία για την εμφάνιση της τρέχουσας ώρας με τη μορφή HOUR: MINUTE είναι γραμμένη ως εξής: ηχώ ημερομηνία ("H: i"); Ένα σενάριο PHP που αποτελείται από αυτές τις δηλώσεις θα μοιάζει με αυτό:echo date ("H:i");
echo ("Η Kisya και η Osya ήταν εδώ!");

Και το ίδιο σενάριο στην JavaScript από την πλευρά του πελάτη θα μοιάζει με αυτό: var now = new date();
document.write("Προς");
document.write (now.getHours() + ":" + now.getMinutes());
document.write("Kisya και Osya ήταν εδώ!"); Εδώ η γραμμή var now = new date() δίνει εντολή στον εκτελεστή του σεναρίου να δημιουργήσει ένα νέο εικονικό αντικείμενο με το όνομα "now", το οποίο αντιπροσωπεύει την τρέχουσα ημερομηνία και ώρα. Το document.write() είναι μια εντολή για να γράψετε στη σελίδα ό,τι υποδεικνύεται σε αγκύλες και οι εντολές now.getHours() και now.getMinutes() για εξαγωγή της τρέχουσας ώρας και λεπτού από το αντικείμενο "τώρα".
Απομένει για μεγαλύτερη σαφήνεια να συνδυάσετε αυτά τα δύο σενάρια σε ένα αρχείο, να το αποθηκεύσετε στον διακομιστή και να πληκτρολογήσετε τη διεύθυνση URL στη γραμμή διευθύνσεων του προγράμματος περιήγησης. Ως αποτέλεσμα, θα δούμε τις ίδιες γραμμές, η μία από τις οποίες εκτελέστηκε σύμφωνα με το σενάριό μας στον διακομιστή (διερμηνέας PHP) και η άλλη - στον υπολογιστή μας (διερμηνέας JavaScript).

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

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

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

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

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

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

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

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

#!/bin/bash
#!/bin/sh
#!/usr/bin/perl

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

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

#!/bin/bash
echo Απλή δέσμη ενεργειών # Η εντολή echo εκτυπώνει ένα μήνυμα στην οθόνη
επαναλαμβάνω:
whoami # whoami δείχνει το όνομα του εγγεγραμμένου χρήστη
echo Το σύστημά σας έχει ξεκινήσει
uptime # uptime δείχνει την ώρα ενεργοποίησης του μηχανήματος
ηχώ Σήμερα
Η ημερομηνία # ημερομηνία δείχνει την τρέχουσα ημερομηνία και ώρα
ηχώ Αυτό είναι όλο προς το παρόν
έξοδος

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

Chmod +rx tutor1.sh

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

[email προστατευμένο]:~/Doc/Open Source$ ./tutor1.sh
Απλό σενάριο
Εσείς:
Voland
Το σύστημά σας έχει ξεκινήσει
14:38:46 έως 1:48, 2 χρήστες, μέσος όρος φόρτωσης: 0,47, 0,43, 0,41
Σήμερα
Κυρ 26 Φεβρουαρίου 02:38:46 μμ MSK 2006
Αντίο

Ας περάσουμε σε κάτι πιο σοβαρό.

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

Πρώτα απ 'όλα, είναι απαραίτητο να ορίσουμε - αντιγράφων ασφαλείαςτι θα κάνουμε. Επομένως, το σενάριό μας πρέπει να μπορεί να λειτουργεί με τη γραμμή εντολών. Επιχειρήματα γραμμή εντολώνκαθορίζονται μετά το όνομα του σεναρίου που χωρίζεται με κενό: somescript arg1 arg2 arg3. Το σενάριο δέχεται ορίσματα από τους αριθμούς ακολουθίας τους, επομένως θα χρησιμοποιήσουμε δομές όπως το $argument_number, π.χ. $1, $2, $3. Το $ είναι ένας χαρακτήρας μπαλαντέρ, τον οποίο θα χρειαστούμε και όταν εργαζόμαστε με μεταβλητές. Οι μεταβλητές στο σενάριο καθορίζονται με τη μορφή variable_name=value. Θα χρησιμοποιήσουμε τις μεταβλητές MAXPARAMS για να ορίσουμε τον μέγιστο αριθμό επιλογών της γραμμής εντολών, BACKUPFILE για να δώσετε το όνομα του αρχείου, BACKUPDIR για το φάκελο που θα δημιουργήσουμε αντίγραφο ασφαλείας και ARCHIVEDIR για το φάκελο όπου θα τοποθετήσουμε το αρχείο. Το πιο σημαντικό μέρος του σεναρίου θα είναι οι εντολές για αναζήτηση και αρχειοθέτηση όλων των αρχείων και φακέλων που βρέθηκαν στον καθορισμένο:

εύρημα. -τύπος f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
gzip $archive.tar

Ας δούμε τι κάνουν αυτές οι εντολές. Η εύρεση αναζητά τον τρέχοντα κατάλογο (αυτό υποδεικνύεται από το πρώτο ".") όρισμα για όλα τα αρχεία και εκτυπώνει την πλήρη διαδρομή προς αυτά (print0). Αυτές οι διαδρομές ανακατευθύνονται στην εντολή tar, η οποία συλλέγει όλα τα αρχεία σε ένα. Στη συνέχεια χρησιμοποιούμε την εντολή gzip για να συμπιέσουμε το αρχείο tar που προκύπτει. Ομάδα > /dev/nullβολικό εάν αρχειοθετείτε ένας μεγάλος αριθμός απόαρχεία. Σε αυτήν την περίπτωση, τα ονόματά τους και οι πλήρεις διαδρομές προς αυτά δεν εμφανίζονται στην κονσόλα.

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

Για παράδειγμα, αυτή η κατασκευή

Εάν [ $# -lt "$MAXPARAMS" ];
έπειτα
ηχώ

ηχώ
έξοδος 0
fi

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

#!/bin/bash
# Περιγραφή:
#+ Δημιουργεί ένα αντίγραφο ασφαλείας όλων των αρχείων στον καθορισμένο κατάλογο
#+ στο "tarball" (αρχείο tar.gz).
#+ Χρήση:
#+ sh backup.sh archive_name φάκελο προέλευσης φάκελος προορισμού
#+

# Μέγιστο ποσόεπιλογές γραμμής εντολών
MAXPARAMS=3

if [ $# -lt "$MAXPARAMS" ];
έπειτα
ηχώ
echo "Χρήση: sh `όνομα βάσης $0` φάκελος προορισμού αρχείου πηγής zipname"
ηχώ
έξοδος 0
fi

εάν [ $# -gt "$MAXPARAMS" ];
έπειτα
ηχώ
echo "Αυτό το σενάριο χρειάζεται μόνο ορίσματα γραμμής εντολών $MAXPARAMS!"
ηχώ
έξοδος 0
fi

# Μεταβλητές που χρησιμοποιούμε στο σενάριο
BACKUPFILE=$1-backup-$(ημερομηνία +%m-%d-%Y)
archive=$BACKUPFILE
ΑΝΤΙΚΕΙΜΕΝΟ = $2
ΑΡΧΕΙΟΔΟΤΗΣΗ=$3

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

αν[! -e $ARCHIVEDIR ];
έπειτα
ηχώ
echo "\"$ARCHIVEDIR\" δεν υπάρχει, δημιουργία..."
mkdir $ARCHIVEDIR
ηχώ "Τέλος".
fi

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

cd $BACKUPDIR
αν [ -e $archive.tar.gz ];
τότε rm $archive.tar.gz
fi

# Το κύριο μέρος του σεναρίου...
echo "Backup \"$BACKUPDIR\" στο αρχείο \"$archive.tar.gz\"..."
εύρημα. -τύπος f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
gzip $archive.tar
echo "\"$BACKUPDIR\" αρχειοθετήθηκε με επιτυχία στο αρχείο \"$archive.tar.gz\"."

# Μετακινήστε το αρχείο στο φάκελο ARCHIVEDIR
echo "Μετακίνηση του αρχείου \"$archive.tar.gz\" στο φάκελο \"$ARCHIVEDIR\"."
mv $archive.tar.gz $ARCHIVEDIR/$archive.tar.gz
ηχώ "Τέλος".

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

ΥΣΤΕΡΟΓΡΑΦΟ. Ευχαριστώ πολύ αφανίζωγια τα σχόλια και τις συμβουλές της.

(αυτοί είναι σενάριο χρήστη, userJS, σενάρια χρήστη).

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

Τι είναι τα userscripts;

Εν συντομία: ένα userscript είναι ένα πρόγραμμα γραμμένο σε JavaScript, αποθηκευμένο στον υπολογιστή του χρήστη και συνδεδεμένο από το πρόγραμμα περιήγησης σε ορισμένες σελίδες. Το userscript είναι ένα αρχείο με την επέκταση .user.js(με την επέκταση που τα προγράμματα περιήγησης κατανοούν ότι το αρχείο είναι ένα userscript) που περιέχει μεταδεδομένα και απευθείας κώδικα javascript.

Όταν συνδέεται σε μια σελίδα, ένα userscript εκτελείται με τον ίδιο τρόπο όπως τα κανονικά σενάρια Javascript.
Το userscript έχει πρόσβαση στο δέντρο DOM της σελίδας στο πλαίσιο της οποίας εκτελείται.
Στα σύγχρονα προγράμματα περιήγησης, το userscript έχει πρόσβαση στο localStorage και σε άλλα API HTML5.

Υποστηριζόμενα σενάρια χρήστη όλα τα μεγάλα σύγχρονα προγράμματα περιήγησης(και μάλιστα με κάποιο τρόπο υποστηρίζεται IE7 και άνω).

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

Κάποια γενική θεωρία

Τα πιο συνηθισμένα είναι τα σενάρια κάτω από Επέκταση GreaseMonkey για το πρόγραμμα περιήγησης Firefox.
Λεπτομερείς πληροφορίες σχετικά με το GreaseMonkey και τη σύνταξη εντολών χρήστη για το GreaseMonkey μπορείτε να βρείτε στη διεύθυνση http://wiki.greasespot.net.
Έτσι συνέβη ιστορικά ότι αυτό το πρόγραμμα περιήγησηςήταν (και παραμένει μέχρι σήμερα) το πρώτο στο οποίο πραγματοποιήθηκε η υποστήριξη script σε υψηλό επίπεδο.

Δεν μπορούν να εκτελεστούν όλα τα σενάρια που γράφτηκαν για το GreaseMonkey σε άλλα προγράμματα περιήγησης. Ο λόγος για την καμπυλότητα είναι ότι πολλά σενάρια χρησιμοποιούν GM API- ένα σύνολο συναρτήσεων javascript ειδικά για το GreaseMonkey.

Ωστόσο, ο ευκολότερος τρόπος είναι να γράψετε σενάρια χρήστη για το πρόγραμμα περιήγησης Google Chrome.
Υπάρχουν διάφοροι λόγοι για αυτό:

  1. Τα απλά σενάρια δεν χρειάζονται υποστήριξη GM API (η βιβλιοθήκη είναι διαθέσιμη στο GreaseMonkey)
  2. Το Google Chrome, σε αντίθεση με το Firefox + GreaseMonkey, έχει εξαιρετικό πρόγραμμα εντοπισμού σφαλμάτων.
  3. Μηνύματα λάθους του Userscript στον Firefox τρομερός!Εάν δεν έχετε τηλεπαθητική γνώση του GreaseMonkey και της javascript, το να γράψετε ένα userscript μπορεί να είναι δύσκολο!
  4. Το Google Chrome δεν απαιτεί επεκτάσεις για την υποστήριξη σεναρίων χρήστη. Η διεπαφή για τη διαγραφή/απενεργοποίηση των σεναρίων χρήστη είναι διαθέσιμη από το κουτί.
Προφανή μειονεκτήματα του Google Chrome:
  1. Δεν υπάρχει πρόσβαση στο "εγγενές" παράθυρο.
  2. Η οδηγία @include metadata δεν υποστηρίζεται. Η οδηγία @match είναι buggy, μπορούμε να πούμε ότι επίσης δεν υποστηρίζεται.

Χαρακτηριστικά των userscripts

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

Όλα τα σενάρια χρήστη ξεκινούν αφού φορτωθούν όλα τα κύρια στοιχεία της σελίδας, αλλά οι εικόνες δεν έχουν φορτωθεί ακόμα. Μπορούμε να πούμε ότι τα σενάρια χρήστη φορτώνονται σε ένα συμβάν DOMContentLoaded.
ΤΕΛΟΣ παντων, δεν χρειάζονται έλεγχοι για window.onload.

Κάθε πρόγραμμα περιήγησης επιβάλλει τους δικούς του περιορισμούς στην εκτέλεση των εντολών χρήστη, αλλά γενικά τα userscripts μπορούν να κάνουν σχεδόν οτιδήποτε μπορούν να κάνουν τα σενάρια στη σελίδα.
Τις περισσότερες φορές, τα userscripts χρησιμοποιούνται για την αλλαγή της διεπαφής της σελίδας ή για την προσθήκη καλούδια, blackjack και πόρνες (userscripts για κοινωνικά δίκτυα).
Υπάρχουν επίσης προηγμένα userscripts, τα οποία είναι ανεξάρτητα προγράμματα (bots δημοπρασιών και παιχνιδιών, βοηθητικά πρόσθετα κ.λπ.).

Ανατομία των σεναρίων χρήστη

Το userscript είναι αρχείο κειμένουμε επέκταση user.js. Στην αρχή του αρχείου βρίσκεται μπλοκ μεταδεδομένων- περιγραφή του ίδιου του σεναρίου. Το μπλοκ μεταδεδομένων ακολουθείται από κώδικα javascript, ο οποίος θα εκτελεστεί από το πρόγραμμα περιήγησης.

Σκεφτείτε ένα δοκιμαστικό σενάριο που εμφανίζει μια ειδοποίηση με κείμενο σε μια συγκεκριμένη σελίδα.
// ==UserScript== // @name myUserJS // @description Το πρώτο μου σενάριο χρήστη // @author Vasya Pupkin // @license MIT // @version 1.0 // @include http://userscripts.org/* / / ==/UserScript== // Τυλίξτε το σενάριο σε ένα κλείσιμο για συμβατότητα μεταξύ προγραμμάτων περιήγησης (όπερα, π.χ.) (συνάρτηση (παράθυρο, απροσδιόριστο) ( // κανονικοποίηση παραθύρου var w; εάν (τύπος μη ασφαλούς Window != απροσδιόριστος) ( w = unsafeWindow ) else ( w = παράθυρο; ) // Σχεδόν οποιαδήποτε βιβλιοθήκη javascript μπορεί να εισαχθεί στα σενάρια χρήστη. // Ο κώδικας της βιβλιοθήκης αντιγράφεται απευθείας στο userscript. // Όταν συμπεριλαμβάνεται η βιβλιοθήκη, πρέπει να περάσετε το w ως παράμετρο παραθύρου // Παράδειγμα: συμπεριλαμβανομένου του jquery.min.js // (function(a,b)(function ci(a) ... a.jQuery=a.$=d))(w); // μην εκτελέσετε το σενάριο σε πλαίσια // χωρίς αυτήν την προϋπόθεση, το σενάριο θα εκτελεστεί πολλές φορές στη σελίδα με καρέ εάν (w.self != w.top) ( return; ) // επιπλέον δοκιμή μαζί με το @include if (/http:\/\ /userscripts.org/.test(w.location.href)) ( //Παρακάτω πηγαίνει απευθείας στο d script alert("Userscripts σας καλωσορίζει με ένα παρεμβατικό παράθυρο."); ) ))(παράθυρο);

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

Στην αρχή υπάρχει ένα μπλοκ μεταδεδομένων (με τη μορφή σχολίου).
// ==UserScript== // ... // ==/UserScript==
Αυτό το μπλοκ αποτελείται από οδηγίες περιγραφήςσενάριο χρήστη. Ο παρακάτω πίνακας δείχνει τις κύριες οδηγίες και τον σκοπό τους.

Σπουδαίος:Όλες οι οδηγίες, καθώς και το ίδιο το μπλοκ μεταδεδομένων, ενδέχεται να λείπουν.

Διευθυντικός Σκοπός
@ όνομα Το όνομα του σεναρίου χρήστη.
Αυτό το όνομα θα εμφανίζεται στη διεπαφή διαχείρισης
σενάρια χρήστη. Εάν λείπει η οδηγία, τότε το όνομα
το userscript θα είναι ίδιο με το όνομα του αρχείου.
@ περιγραφή Περιγραφή του σεναρίου χρήστη.
Αυτή η περιγραφή θα εμφανιστεί στη διεπαφή διαχείρισης
σενάρια χρήστη.
@namespace Χώρος ονομάτων.
Καθορίζει τη μοναδικότητα ενός συνόλου σεναρίων.
Εδώ μπορείτε να εισάγετε το όνομα του domain που σας ανήκει. Ή οποιαδήποτε άλλη γραμμή.
Σκεφτείτε ότι αυτό είναι το δεύτερο όνομα του σεναρίου. Μια υποχρεωτική οδηγία για την Trixie!
@ συγγραφέας Όνομα συγγραφέα.
@ άδεια Το όνομα της άδειας χρήσης βάσει της οποίας διανέμεται το σενάριο χρήστη.
@ εκδοχή Αριθμός έκδοσης του Userscript.
Δυστυχώς, δεν υπάρχει μηχανισμός αυτόματης ανανέωσης σε κανένα πρόγραμμα περιήγησης,
οπότε ο αριθμός έκδοσης είναι απλώς αριθμοί που εμφανίζονται στη διεπαφή.
@ περιλαμβάνω
στο οποίο θα εκτελεστεί το userscript.
Υποστηρίζει μπαλαντέρ *(ισχύει σε GreaseMoneky, Opera, IE).
Για κάθε μεμονωμένη διεύθυνση url, πρέπει να χρησιμοποιήσετε μια ξεχωριστή οδηγία @include.
@ εξαιρούνται Οδηγία περιγραφής διεύθυνσης URL σελίδας,
επί του οποίου Δενπρέπει να εκτελέσετε το userscript.
Υποστηρίζει μπαλαντέρ *(ισχύει σε GreaseMonkey, Opera, IE).
Για κάθε μεμονωμένη διεύθυνση url, πρέπει να χρησιμοποιήσετε μια ξεχωριστή οδηγία @exclude.
@ αγώνας Παρόμοιο με το @include, αλλά με αυστηρότερους περιορισμούς
(ισχύει σε GreaseMonkey παλαιότερο από 0.9.8, Google Chrome).
Για περισσότερες πληροφορίες σχετικά με τους περιορισμούς και τη μορφή της οδηγίας, βλ
διαβάστε σε αυτή τη σελίδα.
Για κάθε μεμονωμένη διεύθυνση url, πρέπει να χρησιμοποιήσετε μια ξεχωριστή οδηγία @match.

Σπουδαίος: Όπως έχει δείξει η πρακτική, δεν πρέπει να βασίζεστε στην οδηγία @ match στα σενάρια χρηστών.
Το Google Chrome αρνείται κατά διαστήματα να τιμήσει το @match
και εκτελεί userscripts σε όλες τις σελίδες.
Για να αποτρέψετε αυτήν την κατάσταση στα σενάρια χρήστη,
που θα τρέχει όχι μόνο στον Firefox,
πρέπει να προσθέσετε κώδικα για να ελέγξετε τη διεύθυνση της σελίδας (δείτε τον σύνδεσμο στον κωδικό του χρήστη).

Σπουδαίος: Ελλείψει οδηγιών @include ή @match, τα userscripts θα εκτελούνται σε όλες τις σελίδες.

Το userscript μας χρησιμοποιεί μια σειρά από κόλπα:

  1. Για να έχουν την ίδια συμπεριφορά τα userscripts και να μην μολύνουν το παγκόσμιο εύρος, τον κώδικα μετατρέπεται σε κλείσιμο (δείτε τον κώδικα σεναρίου).
  2. Για να συμπεριλάβετε σωστά τις βιβλιοθήκες μέσα στο userscript και να παρακάμψετε ορισμένες δύσκολες λειτουργίες του GreaseMonkey, πρέπει να "κανονικοποιήσει" την αναφορά στο παγκόσμιο εύρος του παραθύρου (δείτε τον κώδικα σεναρίου).
  3. Για να αποτρέψετε την εκτέλεση του userscript πολλές φορές στην ίδια σελίδα, πρέπει διακοπή της εργασίας κατά την εκτέλεση ενός userscript σε πλαίσια (δείτε τον κώδικα σεναρίου).
  4. Προκειμένου το userscript να εκτελείται μόνο στις σελίδες που χρειαζόμαστε, πρέπει να ελέγξουμε ρητά τη διεύθυνση url της σελίδας (δείτε τον κώδικα σεναρίου).
  5. Με αυτή τη δομή, ένα userscript μπορεί να μετατραπεί σε bookmarklet με σχετική ευκολία.

Αποτέλεσμα

Το userscript μας είναι έτοιμο για χρήση!
Όχι, σοβαρά, μπορείτε να αντιγράψετε τον κώδικα του userscript σε ένα αρχείο, να τον ονομάσετε my.user.js και να αποθέσετε το αρχείο που προκύπτει στο πρόγραμμα περιήγησής σας (χρησιμοποιήστε Chrome ή Firefox με εγκατεστημένο το GreaseMonkey).

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

Το ερώτημα παραμένει: πώς να "διανείμουμε" το σενάριό μας στους χρήστες (εξάλλου, το σενάριο το γράψαμε όχι μόνο για εμάς);
Επιλογές:

  • Εγγραφείτε στην πύλη