Δημιουργήστε τα δικά σας σενάρια χρησιμοποιώντας bash

Εκμάθηση Linux

Ανεξάρτητα από τη διανομή Linux που χρησιμοποιούμε, «δεν υπάρχει αμφιβολία ότι το αγαπημένο μου είναι το Ubuntu» μόλις αρχίσουμε να χρησιμοποιούμε αυτό το σύστημα, σίγουρα ανάγκες αυτοματισμού. Δηλαδή: δημιουργήστε μας δικές του εντολές που εκτελούν ορισμένες εντολές με εξατομικευμένο τρόπο. Αυτή η ανάγκη μπορεί να οφείλεται σε ορισμένες αιτίες:

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

Παρόλο που ένα σενάριο bash μπορεί να εκτελεστεί σε / από οποιονδήποτε κατάλογο, είναι συνήθως δημιουργήστε έναν κατάλογο για να φιλοξενήσετε αυτά τα σενάρια. Στην περίπτωσή μου:

$ mkdir /home/pedro/.bin

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

Τώρα πρέπει να ενημερώστε το Linux ότι πρέπει επίσης να κοιτάξει εκεί (/home/pedro/.bin) οι εντολές που εκτελούνται από το τερματικό.

$ PATH=$PATH;/home/pedro/.bin

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

$ sudo nano /etc/environment

και προσθέτουμε

:/home/pedro/.bin

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

Το πρώτο μας σενάριο βήμα προς βήμα

Δημιουργούμε το αρχείο μας, όπως αυτό στην περίπτωσή μου:

$ touch ~/.bin/donde

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

$ gedit ~/.bin/donde &

Και προσθέτουμε το ακόλουθο περιεχόμενο:

#!/usr/bin/env bash

if [ $# -lt 1 ];
then
    echo "Necesitas pasar un parámetro"
else
    whereis $1
fi

Ανάλυση σεναρίων

Η πρώτη μας τηλεφωνική γραμμή «δουλεία»(#! / Usr / bin / env bash) ζητήστε από το Linux να αναφέρει όπου βρίσκεται το κέλυφος bash και ότι αυτό που ακολουθεί εκτελείται σύμφωνα με τις απαιτήσεις του bash. Αυτή η προφύλαξη είναι βολικό να σιγουρευτείτε ότι τα σενάρια μας λειτουργούν σε οποιαδήποτε εγκατάσταση. Ένα άλλο δυνατό δουλεία γέλασε:

#!/bin/bash

Η διαφορά μεταξύ τους μπορεί να είναι πολύ παράξενη και θα την εξηγήσω. Σε αυτό το τελευταίο Υποθέτω ότι στο σύστημά μας το κέλυφος bash βρίσκεται στη διεύθυνση / bin / bash. Ωστόσο, όπου προτείνω στο σενάριο Υποθέτω ότι δεν ξέρω πού είναι ο διερμηνέας bash. Ζητώ από το σύστημα να του δώσει αυτήν τη διεύθυνση.

Τρίτη γραμμή: Όπως μπορείτε να δείτε, η δεύτερη γραμμή είναι εάν. Για bash οι χαρακτήρες «$#« περιέχει τον αριθμό των παραμέτρων που περνάμε από τη γραμμή εντολών. Επομένως, »εάν [$ # -lt 1];» κυριολεκτικά σημαίνει "εάν ο αριθμός των παραμέτρων είναι μικρότερος από 1".

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

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

Έκτη γραμμή: Υποδεικνύει ότι θα ακολουθήσουν τα ακόλουθα όταν η κατάσταση που δηλώσαμε δεν είναι αληθινή.

Έβδομη γραμμή: Se εκτελέστε την εντολή «που είναι« συνοδεύεται από το περιεχόμενο που έχουμε περάσει ως πρώτη παράμετρος.

Όγδοη γραμμή: με «fi»Υποδεικνύει ότι το μπλοκ τελειώνει if.

Δοκιμή του σεναρίου μας

Είναι σημαντικό προσθέστε δικαιώματα εγγραφής στο σενάριο:

$ chmod -x ~/.bin/donde

Χωρίς αυτό, θα εμφανιστεί ένα σφάλμα "άκυρη άδεια".. Μετά από αυτό, μπορούμε να εκτελέσουμε το σενάριό μας.

$ donde php

Θα πρέπει να μας δείχνει τη θέση των δυαδικών αρχείων php, τα αρχεία προέλευσής τους και τις σελίδες man. Κάτι τέτοιο:

php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php 
/usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache 
/usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz

Ανακεφαλαίωση

  • Ενεργοποιούμε ένα Κατάλογος ".bin" για τη φιλοξενία των σεναρίων μας.
  • Παρέχουμε πληροφορίες στο Linux για να συμπεριλάβει αυτόν τον κατάλογο στις αναζητήσεις εντολών του.
  • Δημιουργούμε το σενάριό μας.
  • Διαφορά μεταξύ διαφορετικά δουλεία.
  • Χρήση του αριθμός παραμέτρων που πέρασαν με $ #.
  • Χρήση του πρώτη παράμετρος με $1.

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


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

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

*

*

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

  1.   miguel dijo

    Πολύ καλό και καλά εξηγημένο, αλλά σε τι αναφέρεται μια παράμετρος;

    1.    Εικόνα placeholder Pedro Ruiz Hidalgo dijo

      Ευχαριστώ Μιγέλ!

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

      Στην εντολή linux για να αντιγράψετε το αρχείο a.txt στο αρχείο b.txt, θα γράψαμε τα εξής:

      $ cp a.txt β.txt

      Το πρόγραμμα cp εδώ λαμβάνει δύο παραμέτρους που είναι τα ονόματα δύο αρχείων, το πρώτο (πρέπει να υπάρχει) a.txt και το δεύτερο b.txt.

      Ένα άλλο παράδειγμα: Εάν στείλετε για εκτύπωση από την κονσόλα με την εντολή

      $ lp file.pdf

      Σε αυτήν την περίπτωση, το "file.pdf" είναι μια παράμετρος για το πρόγραμμα lp.

      Ελπίζω να ικανοποιήσω τις αμφιβολίες σας.

      αφορά

  2.   miguel dijo

    Τα σχόλιά μου δεν βγαίνουν, είναι έλλειψη σεβασμού, δεν επιστρέφω ξανά σε αυτό το φόρουμ.

    1.    Εικόνα placeholder Pedro Ruiz Hidalgo dijo

      Δεν ξέρω τι έχει συμβεί, εν πάση περιπτώσει έχει δημοσιευτεί.

      Χαιρετισμούς.