Ανεξάρτητα από τη διανομή 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.
Ελπίζω και εύχομαι αυτό το σενάριο να είναι χρήσιμο για εσάς.
Πολύ καλό και καλά εξηγημένο, αλλά σε τι αναφέρεται μια παράμετρος;
Ευχαριστώ Μιγέλ!
Κατανοώ από την παράμετρο όλες τις συμπληρωματικές πληροφορίες που παρέχονται σε ένα πρόγραμμα, λειτουργία ή σύστημα. Καθώς αυτό μπορεί να είναι δυσκίνητο, επιτρέψτε μου να σας απαντήσω με μερικά παραδείγματα.
Στην εντολή linux για να αντιγράψετε το αρχείο a.txt στο αρχείο b.txt, θα γράψαμε τα εξής:
$ cp a.txt β.txt
Το πρόγραμμα cp εδώ λαμβάνει δύο παραμέτρους που είναι τα ονόματα δύο αρχείων, το πρώτο (πρέπει να υπάρχει) a.txt και το δεύτερο b.txt.
Ένα άλλο παράδειγμα: Εάν στείλετε για εκτύπωση από την κονσόλα με την εντολή
$ lp file.pdf
Σε αυτήν την περίπτωση, το "file.pdf" είναι μια παράμετρος για το πρόγραμμα lp.
Ελπίζω να ικανοποιήσω τις αμφιβολίες σας.
αφορά
Τα σχόλιά μου δεν βγαίνουν, είναι έλλειψη σεβασμού, δεν επιστρέφω ξανά σε αυτό το φόρουμ.
Δεν ξέρω τι έχει συμβεί, εν πάση περιπτώσει έχει δημοσιευτεί.
Χαιρετισμούς.