Προγραμματισμός σε bash - μέρος 1

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

Τι είναι το "Script";

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

Η γλώσσα που χρησιμοποιεί το Bash ορίζεται από τον δικό της διερμηνέα και συνδυάζει τη σύνταξη άλλων κελυφών, όπως το Korn Shell (ksh) ή το C Shell (csh). Πολλές από τις εντολές που χρησιμοποιούνται συνήθως στην κονσόλα μπορούν επίσης να χρησιμοποιηθούν σε σενάρια, εκτός από αυτές που ανήκουν αυστηρά σε μια συγκεκριμένη διανομή.

Δομή ενός σεναρίου

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

#! / bin / bash

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

Η εντολή echo εμφανίζει ένα μήνυμα στην οθόνη, σε αυτήν την περίπτωση το τυπικό "Γεια σας κόσμος!" Εάν το αποθηκεύσουμε και το εκτελέσουμε με την κονσόλα θα δούμε το αποτέλεσμα.

Βασικές εντολές

Οι ακόλουθες εντολές είναι κοινές και πολύ χρήσιμες για κάθε τύπο προγράμματος. Διευκρινίζουμε ότι υπάρχουν πολλά περισσότερα, αλλά προς το παρόν θα καλύψουμε τα ακόλουθα.

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

# δημιουργήστε ένα ψευδώνυμο που λέγεται per με τη διεύθυνση του φακέλου #Downloads ψευδώνυμο = = / home / user / Downloads # # Κάθε φορά που θέλουμε να το χρησιμοποιήσουμε, πρέπει απλώς να καλέσουμε # τη νέα λέξη ανά # Για να καταστρέψουμε αυτό το ψευδώνυμο, χρησιμοποιούμε unalias unalias ανά

break: σας επιτρέπει να βγείτε αμέσως από ένα για, ενώ, μέχρι ή επιλέξτε βρόχο (θα μελετήσουμε λεπτομερώς τους βρόχους αργότερα)

# Δημιουργήστε έναν βρόχο που θα αντιστοιχίσει τους αριθμούς από το 1 έως το 5 # για κάθε "στροφή του βρόχου" για τον μετρητή στο 1 2 3 4 5 do # Εκτυπώνουμε την τρέχουσα τιμή της μεταβλητής #counter, η οποία αναλύεται από τον χαρακτήρα $ echo " $ μετρητής "# Εάν η τιμή του μετρητή είναι ίση με 3 εάν [$ μετρητής - eq 3] τότε # Η διακοπή βγαίνει από το βρόχο για διακοπή

συνέχεια - Παρόμοιο με το σπάσιμο, εκτός του ότι αγνοεί τον τρέχοντα βρόχο και πηγαίνει στον επόμενο.

# Δημιουργήστε έναν βρόχο που θα αντιστοιχίσει τους αριθμούς από το 1 έως το 5 # για κάθε "στροφή του βρόχου" για τον μετρητή στο 1 2 3 4 5 do # Εάν η τιμή του μετρητή είναι ίση με 3 εάν [$ μετρητής –eq 3] τότε # Συνέχεια εμποδίζει το υπόλοιπο του τρέχοντος κύκλου να αναλυθεί μεταβαίνοντας στον επόμενο γύρο, δηλαδή, η # τιμή 3 δεν θα εκτυπωθεί. συνεχίστε την ηχώ "$ μετρητής"

δήλωση: δηλώστε μεταβλητές και εκχωρήστε τιμές σε αυτές, όπως στοιχειοθετημένες (λειτουργούν με τον ίδιο τρόπο). Μπορούμε να το συνδυάσουμε με μερικές επιλογές: - δηλώνω ακέραιους αριθμούς. -r για μεταβλητές μόνο για ανάγνωση, των οποίων η τιμή δεν μπορεί να αλλάξει. –Α για πίνακες ή «πίνακες» · -f για λειτουργίες -x για μεταβλητές που μπορούν να "εξαχθούν" έξω από το περιβάλλον του ίδιου του σεναρίου.

δήλωση –i num = 12 δήλωση –x pi = 3.14

help: δείχνει βοήθεια για μια συγκεκριμένη εντολή.

εργασίες: δείχνει τις τρέχουσες διαδικασίες.

# Με –c εμφανίζεται το όνομα των εντολών, με –p # το pid (αναγνωριστικό διαδικασίας) κάθε διαδικασίας. θέσεις εργασίας -cp

ας: αξιολογήσουμε μια αριθμητική έκφραση

let a = 11 let a = a + 5 # Τέλος εκτυπώνουμε την τιμή του οποίου είναι 16 echo "11 + 5 = $ a"

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

local v1 = "Αυτή είναι μια τοπική μεταβλητή"

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

printf: σας επιτρέπει να εκτυπώσετε δεδομένα και να τα μορφοποιήσετε. Έχει πολλές επιλογές, οπότε θα αναφέρουμε μερικές.

#% f εκτυπώνεται ως κυμαινόμενος αριθμός, n για νέα # γραμμή εκτύπωσης "% fn" 5 5.000000 # & d επιτρέπει τη διαβίβαση δεκαδικών αριθμών ως επιχειρήματα printf "Υπάρχουν% d παραγγελίες που αποτιμώνται σε% d δολάρια. n" 20 500 Υπάρχουν 20 παραγγελίες αξίας 500 Δολάρια.

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

echo "Πληκτρολογήστε το όνομά σας και πιέστε το πλήκτρο ENTER" # Διαβάστε το όνομα μεταβλητής διαβάστε το όνομα echo "Το όνομά σας είναι $ name"

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

type –a '[' #type μας λέει ότι [είναι μια εντολή Shell builtin [είναι μια ενσωματωμένη Shell # -a επιτρέπει την εύρεση καταλόγων που περιέχουν # ένα εκτελέσιμο με το γραπτό όνομα. [είναι / usr / bin / [

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

# Βλέπουμε τα τρέχοντα όριά μας ulimit –a # -f επιτρέπει στον περιορισμό των χρηστών να μην μπορούν να δημιουργήσουν αρχεία μεγαλύτερα από 512000 Kb (500 #Mb) ulimit –f 512000 # -v περιορίζει την εικονική μνήμη της διαδικασίας. ulimit –v 512000

Περιμένετε: περιμένετε να ολοκληρωθεί μια συγκεκριμένη διαδικασία ή εργασία.

# Το σενάριο περιμένει τη διαδικασία του pid # 2585

περιμένετε το 2585

Άλλες χρήσιμες εντολές που μπορούμε να προσθέσουμε σενάρια αντιπροσωπεύονται με σύμβολα.

!!: Εκτελέστε ξανά την τελευταία εντολή

! wer: εκτελεί την τελευταία εντολή που ξεκίνησε με την έκφραση "wer".

'==', '! =', '>', '<', '> =' και '<=': σχετικοί τελεστές.

|: Ο τελεστής OR συνήθως χρησιμοποιούσε δύο κανονικές εκφράσεις.

: εντολή διαφυγής που σας επιτρέπει να μορφοποιήσετε εκφράσεις. Για παράδειγμα: a για ηχητική ειδοποίηση, n για νέα γραμμή, b για backspace κ.λπ.

Ευχαριστώ Juan Carlos Ortiz!

Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Μεσαίο δύσκολο dijo

    Μεγάλος! Τέλος πάντων, 2 σχόλια: Η ετικέτα του Ubuntu είναι μισή πάρα πολύ, καθώς γενικεύει κάτι που είναι γενικό. Και αν αυτά τα μαθήματα συνεχίσουν να προχωρούν, θα ήταν καλό αν συνδέονται μεταξύ τους….
    Εκτός από αυτό, αυτή η κίνηση είναι ενδιαφέρουσα!

  2.   Ας χρησιμοποιήσουμε το Linux dijo

    Καλή συνεισφορά! Μεγάλος!

  3.   Giovanni escobar sosa dijo

    Λείπουν μόνο αναφορές για όσους θέλουν να ασχοληθούν περισσότερο με το θέμα. Μερικά καλά, αν και δεν είναι τόσο εύκολο να βρεθούν στις χώρες μας
    - Ένας πρακτικός οδηγός για Linux Commands, Editors και Shell Programming, Mark Sobell (Κεφάλαιο 8)
    - Προγραμματισμός Pro Bash, Chris FA Johnson (αν και αυτό ισχύει για όσους έχουν άλλες αναφορές ή λίγο περισσότερες γνώσεις).

    Καλό άρθρο

  4.   Ας χρησιμοποιήσουμε το Linux dijo

    Καλή ραντεβού! Ευχαριστώ!

  5.   Patricio Dorantes Jamarne dijo

    : @ Η συνάρτηση "log in as" διέγραψε το προηγούμενο σχόλιό μου, οπότε θα το συνοψίσω περαιτέρω:
    θέσεις εργασίας -cp
    bash: jobs: -c: μη έγκυρη επιλογή
    jobs: use: jobs [-lnprs] [jobspec…] ή jobs -x command [args]

    -eq -gt -lt δεν δέχομαι μεταβλητές δεκαδικών σημείων, μεταξύ φόρουμ και φόρουμ ανακάλυψα ότι το bc είναι καλός σύμμαχος:
    αν [«ηχώ 9.999> 10 | bc` -eq 1]; τότε
    echo "Το 9.999 είναι μεγαλύτερο από 10, βεβαιωθείτε ότι ο επεξεργαστής σας εξακολουθεί να λειτουργεί"
    αλλιώς
    Το echo «9.999 δεν είναι μεγαλύτερο από 10, όλα λειτουργούν κανονικά
    fi

  6.   Όχι από το Μπρούκλιν dijo

    Αυτή η ανάρτηση συνοψίζει πολύ καλά όλες τις γενικότητες του bash scripting:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Σε αυτόν τον ιστότοπο θα βρείτε πολλές ερωτήσεις και απαντήσεις σχετικά με τις ιδιαιτερότητες του bash:
    http://unix.stackexchange.com/questions/tagged/bash

    Ακολουθούν μερικά πολύ ωραία σενάρια και, μπορείτε να τα μάθετε διαβάζοντας τα σενάρια άλλων ανθρώπων:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   Όχι από το Μπρούκλιν dijo

    Έχετε δίκιο με αυτά που λέτε, εκτός από το bash. Κάθε σύστημα που έχω δει έχει bash in / bin / bash.

    Αλλά για python, perl, ρουμπίνι κ.λπ., είναι καλό να το χρησιμοποιείτε. δέχομαι

  8.   Guille dijo

    Συμπτωματικά, στο κολέγιο χρησιμοποιούμε bash scripting έτσι τα δεδομένα είναι 10, πολύ καλά!

  9.   Alex vi dijo

    μια έκδοση pdf για λήψη θα ήταν καλή !! 😀

  10.   Μάρκο Αντόνιο Ντε Φουέντες dijo

    Πολύ καλή τοποθεσία. Βρήκα επιτέλους κάτι χρήσιμο. Ευχαριστώ.