Σενάρια Bash: η αρχή

Σενάρια Bash: η αρχή
Σενάρια Bash Μέρος 2: Βρόχοι
Σενάρια Bash, Μέρος 3: Επιλογές και διακόπτες γραμμής εντολών
Σενάρια Bash Μέρος 4: Είσοδος και έξοδος
Σενάρια Bash, Μέρος 5: Σήματα, Εργασίες φόντου, Διαχείριση σεναρίων
Σενάρια Bash, Μέρος 6: Λειτουργίες και Ανάπτυξη Βιβλιοθήκης
Σενάρια Bash, Μέρος 7: sed και επεξεργασία κειμένου
Σενάρια Bash, μέρος 8: Γλώσσα επεξεργασίας δεδομένων awk
Σενάρια Bash Μέρος 9: Κανονικές εκφράσεις
Σενάρια Bash Μέρος 10: Πρακτικά παραδείγματα
Σενάρια Bash, μέρος 11: αναμονή και αυτοματοποίηση διαδραστικών βοηθητικών προγραμμάτων

Σήμερα θα μιλήσουμε για τα σενάρια bash. Αυτό - σενάρια γραμμής εντολών, γραμμένο για το κέλυφος bash. Υπάρχουν και άλλα κελύφη όπως zsh, tcsh, ksh, αλλά θα επικεντρωθούμε στο bash. Αυτό το υλικό προορίζεται για όλους, η μόνη προϋπόθεση είναι η ικανότητα εργασίας γραμμή εντολών Linux.

Σενάρια Bash: η αρχή

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

Σενάρια Bash: η αρχή

Έτσι, αν μιλάμε για τη γραμμή εντολών, σας επιτρέπει να εκτελέσετε πολλές εντολές ταυτόχρονα εισάγοντάς τις χωρισμένες με ερωτηματικό:

pwd ; whoami

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

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

getconf ARG_MAX

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

Πώς λειτουργούν τα σενάρια bash

Δημιουργήστε ένα κενό αρχείο χρησιμοποιώντας την εντολή touch. Η πρώτη γραμμή του πρέπει να υποδεικνύει ποιο κέλυφος πρόκειται να χρησιμοποιήσουμε. Ενδιαφερόμαστε για bash, οπότε η πρώτη γραμμή του αρχείου θα είναι:

#!/bin/bash

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

Οι εντολές φλοιού διαχωρίζονται από μια τροφοδοσία γραμμής, τα σχόλια διαχωρίζονται με ένα σύμβολο κατακερματισμού. Έτσι φαίνεται:

#!/bin/bash
# This is a comment
pwd
whoami

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

Ρύθμιση δικαιωμάτων αρχείου σεναρίου

Αποθηκεύστε το αρχείο δίνοντάς του ένα όνομα myscript, και η δουλειά για τη δημιουργία του σεναρίου bash έχει σχεδόν τελειώσει. Τώρα το μόνο που μένει είναι να κάνετε αυτό το αρχείο εκτελέσιμο, διαφορετικά, εάν προσπαθήσετε να το εκτελέσετε, θα αντιμετωπίσετε ένα σφάλμα Permission denied.

Σενάρια Bash: η αρχή
Προσπάθεια εκτέλεσης ενός αρχείου σεναρίου με εσφαλμένα ρυθμισμένα δικαιώματα

Ας κάνουμε το αρχείο εκτελέσιμο:

chmod +x ./myscript

Τώρα ας προσπαθήσουμε να το εκτελέσουμε:

./myscript

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

Σενάρια Bash: η αρχή
Εκτέλεση σεναρίου bash με επιτυχία

Έξοδος μηνύματος

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

#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami

Αυτό συμβαίνει μετά την εκτέλεση του ενημερωμένου σεναρίου.

Σενάρια Bash: η αρχή
Εξαγωγή μηνυμάτων από σενάριο

Τώρα μπορούμε να εμφανίσουμε επεξηγηματικές σημειώσεις χρησιμοποιώντας την εντολή echo. Εάν δεν ξέρετε πώς να επεξεργαστείτε ένα αρχείο χρησιμοποιώντας εργαλεία Linux ή δεν έχετε ξαναδεί την εντολή echo, Ρίξε μια ματιά στο αυτό υλικό.

Χρήση μεταβλητών

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

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

Υπάρχουν δύο τύποι μεταβλητών που μπορούν να χρησιμοποιηθούν στα σενάρια bash:

  • Μεταβλητές Περιβάλλοντος
  • Μεταβλητές Χρήστη

Μεταβλητές Περιβάλλοντος

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

#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"

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

Σενάρια Bash: η αρχή
Χρησιμοποιώντας μια μεταβλητή περιβάλλοντος σε ένα σενάριο

Τι γίνεται αν χρειαστεί να εμφανίσετε ένα σύμβολο του δολαρίου στην οθόνη; Ας δοκιμάσουμε αυτό:

echo "I have $1 in my pocket"

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

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

echo "I have $1 in my pocket"

Το σενάριο θα βγάζει τώρα ακριβώς αυτό που αναμένεται.

Σενάρια Bash: η αρχή
Χρησιμοποιώντας μια ακολουθία διαφυγής για να εκτυπώσετε ένα σύμβολο του δολαρίου

Μεταβλητές Χρήστη

Εκτός από τις μεταβλητές περιβάλλοντος, τα σενάρια bash σάς επιτρέπουν να ορίζετε και να χρησιμοποιείτε τις δικές σας μεταβλητές στο σενάριο. Τέτοιες μεταβλητές διατηρούν μια τιμή μέχρι να ολοκληρωθεί η εκτέλεση του σεναρίου.

Όπως και με τις μεταβλητές συστήματος, οι μεταβλητές χρήστη μπορούν να προσπελαστούν χρησιμοποιώντας το σύμβολο του δολαρίου:
TNW-CUS-FMP - κωδικός προσφοράς για έκπτωση 10% στις υπηρεσίες μας, διαθέσιμος για ενεργοποίηση εντός 7 ημερών

#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"

Αυτό συμβαίνει μετά την εκτέλεση ενός τέτοιου σεναρίου.

Σενάρια Bash: η αρχή
Προσαρμοσμένες μεταβλητές σε ένα σενάριο

Αντικατάσταση εντολών

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

Αυτό μπορεί να γίνει με δύο τρόπους.

  • Χρησιμοποιώντας το backtick "`"
  • Από το σχεδιασμό $()

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

mydir=`pwd`

Στη δεύτερη προσέγγιση, το ίδιο πράγμα γράφεται ως εξής:

mydir=$(pwd)

Και το σενάριο μπορεί να καταλήξει έτσι:

#!/bin/bash
mydir=$(pwd)
echo $mydir

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

Σενάρια Bash: η αρχή
Ένα σενάριο που αποθηκεύει τα αποτελέσματα μιας εντολής σε μια μεταβλητή

Μαθηματικές πράξεις

Για να εκτελέσετε μαθηματικές πράξεις σε ένα αρχείο σεναρίου, μπορείτε να χρησιμοποιήσετε μια κατασκευή όπως $((a+b)):

#!/bin/bash
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2

Σενάρια Bash: η αρχή
Μαθηματικές Πράξεις σε Σενάριο

αν-τότε κατασκευή ελέγχου

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

if команда
then
команды
fi

Ακολουθεί ένα παράδειγμα εργασίας:

#!/bin/bash
if pwd
then
echo "It works"
fi

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

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

#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi

Αυτό συμβαίνει μετά την εκτέλεση αυτού του σεναρίου.

Σενάρια Bash: η αρχή
Αναζήτηση χρήστη

Εδώ χρησιμοποιήσαμε την εντολή grepγια να αναζητήσετε έναν χρήστη σε ένα αρχείο /etc/passwd. Αν η ομάδα grepάγνωστο σε εσάς, μπορείτε να βρείτε την περιγραφή του εδώ.

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

Κατασκευή ελέγχου αν-τότε-άλλο

Για να μπορεί το πρόγραμμα να αναφέρει τόσο τα αποτελέσματα μιας επιτυχημένης αναζήτησης όσο και της αποτυχίας, θα χρησιμοποιήσουμε την κατασκευή if-then-else. Ετσι δουλευει:

if команда
then
команды
else
команды
fi

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

Ας γράψουμε το ακόλουθο σενάριο:

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi

Η εκτέλεσή του κατέρρευσε else.

Σενάρια Bash: η αρχή
Εκτέλεση ενός σεναρίου με μια κατασκευή εάν-τότε-άλλο

Λοιπόν, ας προχωρήσουμε και ας αναρωτηθούμε για πιο σύνθετες συνθήκες. Τι γίνεται αν χρειάζεται να ελέγξετε όχι μία κατάσταση, αλλά πολλές; Για παράδειγμα, εάν βρεθεί ο επιθυμητός χρήστης, θα πρέπει να εμφανιστεί ένα μήνυμα, εάν πληρούται κάποια άλλη προϋπόθεση, θα πρέπει να εμφανιστεί ένα άλλο μήνυμα κ.λπ. Σε μια τέτοια κατάσταση, οι ένθετες συνθήκες θα μας βοηθήσουν. Μοιάζει με αυτό:

if команда1
then
команды
elif команда2
then
команды
fi

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

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesn’t exist but anyway there is a directory under /home"
fi

Σε ένα τέτοιο σενάριο, μπορείτε, για παράδειγμα, να δημιουργήσετε έναν νέο χρήστη χρησιμοποιώντας την εντολή useradd, εάν η αναζήτηση δεν έδωσε αποτελέσματα ή κάντε κάτι άλλο χρήσιμο.

Σύγκριση αριθμών

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

n1 -eq n2Επιστρέφει true αν n1 ισούται με n2.
n1 -ge n2 Επιστρέφει true αν n1περισσότερο ή ίσο n2.
n1 -gt n2Επιστρέφει true αν n1 περισσότερο από n2.
n1 -le n2Επιστρέφει true αν n1λιγότερο ή ίσο n2.
n1 -lt n2Επιστρέφει true εάν το n1 είναι μικρότερο από n2.
n1 -ne n2Επιστρέφει true αν n1δεν είναι ίσο n2.

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

#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi

Αυτό θα δώσει αυτή η εντολή.

Σενάρια Bash: η αρχή
Σύγκριση αριθμών σε σενάρια

Μεταβλητή τιμή val1μεγαλύτερο από 5, ο κλάδος καταλήγει να εκτελείται thenτελεστή σύγκρισης και στην κονσόλα εμφανίζεται ένα αντίστοιχο μήνυμα.

Σύγκριση χορδών

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

str1 = str2 Δοκιμάζει τις συμβολοσειρές για ισότητα, επιστρέφοντας true αν οι συμβολοσειρές είναι ίδιες.
str1 != str2Επιστρέφει true αν οι συμβολοσειρές δεν είναι ίδιες.
str1 < str2Επιστρέφει true αν str1λιγότερο από str2.
str1 > str2 Επιστρέφει true αν str1περισσότερο από str2.
-n str1 Επιστρέφει true εάν το μήκος str1Πάνω απο το μηδέν.
-z str1Επιστρέφει true εάν το μήκος str1ίσο με μηδέν.

Ακολουθεί ένα παράδειγμα σύγκρισης συμβολοσειρών σε ένα σενάριο:

#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user  is the current logged in user"
fi

Ως αποτέλεσμα της εκτέλεσης του σεναρίου, έχουμε τα εξής.

Σενάρια Bash: η αρχή
Σύγκριση συμβολοσειρών σε σενάρια

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

Δείτε πώς φαίνεται στον κώδικα η εργασία με αυτούς τους τελεστές:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Εδώ είναι τα αποτελέσματα του σεναρίου.

Σενάρια Bash: η αρχή
Σύγκριση συμβολοσειρών, προειδοποίηση

Λάβετε υπόψη ότι το σενάριο, αν και εκτελείται, εκδίδει μια προειδοποίηση:

./myscript: line 5: [: too many arguments

Για να απαλλαγούμε από αυτήν την προειδοποίηση, καταλήγουμε $val2 σε διπλά εισαγωγικά:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Τώρα όλα λειτουργούν όπως πρέπει.

Σενάρια Bash: η αρχή
Σύγκριση χορδών

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

Likegeeks
likegeeks

Ας το σώσουμε δίνοντάς του ένα όνομα myfile, στη συνέχεια εκτελέστε την ακόλουθη εντολή στο τερματικό:

sort myfile

Θα ταξινομήσει τις γραμμές από το αρχείο ως εξής:

likegeeks
Likegeeks

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

#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Εάν το εκτελέσετε, αποδεικνύεται ότι όλα είναι αντίστροφα - το πεζό γράμμα είναι πλέον μεγαλύτερο από το κεφαλαίο.

Σενάρια Bash: η αρχή
Η εντολή ταξινόμησης και σύγκριση συμβολοσειρών σε ένα αρχείο σεναρίου

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

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

Έλεγχοι αρχείων

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

-d fileΕλέγχει αν υπάρχει αρχείο και είναι κατάλογος.
-e fileΕλέγχει εάν το αρχείο υπάρχει.
-f file Ελέγχει εάν ένα αρχείο υπάρχει και είναι αρχείο.
-r fileΕλέγχει εάν το αρχείο υπάρχει και είναι αναγνώσιμο.
-s file ПΕλέγχει εάν το αρχείο υπάρχει και δεν είναι κενό.
-w fileΕλέγχει εάν το αρχείο υπάρχει και είναι εγγράψιμο.
-x fileΕλέγχει εάν το αρχείο υπάρχει και είναι εκτελέσιμο.
file1 -nt file2 Ελέγχει αν είναι νεότερο file1Από file2.
file1 -ot file2Ελέγχει αν είναι παλαιότερο file1Από file2.
-O file Ελέγχει εάν το αρχείο υπάρχει και ανήκει στον τρέχοντα χρήστη.
-G fileΕλέγχει εάν το αρχείο υπάρχει και αν το αναγνωριστικό ομάδας του ταιριάζει με το αναγνωριστικό ομάδας του τρέχοντος χρήστη.

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

Ας δοκιμάσουμε μια από τις εντολές στην πράξη:

#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi

Αυτό το σενάριο, για έναν υπάρχοντα κατάλογο, θα εμφανίσει τα περιεχόμενά του.

Σενάρια Bash: η αρχή
Καταχώριση των περιεχομένων ενός καταλόγου

Πιστεύουμε ότι μπορείτε να πειραματιστείτε μόνοι σας με τις υπόλοιπες εντολές· όλες χρησιμοποιούνται σύμφωνα με την ίδια αρχή.

Αποτελέσματα της

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

  1. Σενάριο Bash Βήμα προς Βήμα — εδώ μιλάμε για το πώς να ξεκινήσετε τη δημιουργία σεναρίων bash, εξετάζεται η χρήση μεταβλητών, περιγράφονται δομές υπό όρους, υπολογισμοί, συγκρίσεις αριθμών, συμβολοσειρές και εύρεση πληροφοριών σχετικά με αρχεία.
  2. Bash Scripting Part 2, Bash the awesome — εδώ αποκαλύπτονται τα χαρακτηριστικά της εργασίας με βρόχους for και while.
  3. Bash Scripting Μέρος 3, Παράμετροι & επιλογές — αυτό το υλικό είναι αφιερωμένο σε παραμέτρους γραμμής εντολών και κλειδιά που μπορούν να περάσουν σε σενάρια, δουλεύοντας με δεδομένα που εισάγει ο χρήστης και τα οποία μπορούν να διαβαστούν από αρχεία.
  4. Bash Scripting Part 4, Input & Output - εδώ μιλάμε για περιγραφείς αρχείων και για εργασία με αυτούς, για είσοδο, έξοδο, ροές σφαλμάτων και για ανακατεύθυνση εξόδου.
  5. Bash Scripting Part 5, Sighals & Jobs — αυτό το υλικό είναι αφιερωμένο στα σήματα Linux, την επεξεργασία τους σε σενάρια και την εκκίνηση σεναρίων βάσει χρονοδιαγράμματος.
  6. Bash Scripting Μέρος 6, Λειτουργίες — εδώ μπορείτε να μάθετε για τη δημιουργία και τη χρήση συναρτήσεων σε σενάρια και την ανάπτυξη βιβλιοθηκών.
  7. Bash Scripting Part 7, Using sed — αυτό το άρθρο είναι αφιερωμένο στην εργασία με το πρόγραμμα επεξεργασίας κειμένου ροής sed.
  8. Bash Scripting Μέρος 8, Χρήση awk — αυτό το υλικό είναι αφιερωμένο στον προγραμματισμό στη γλώσσα επεξεργασίας δεδομένων awk.
  9. Bash Scripting Μέρος 9, Κανονικές εκφράσεις — εδώ μπορείτε να διαβάσετε για τη χρήση κανονικών εκφράσεων σε σενάρια bash.
  10. Bash Scripting Μέρος 10, Πρακτικά Παραδείγματα — Ακολουθούν τεχνικές για την εργασία με μηνύματα που μπορούν να σταλούν στους χρήστες, καθώς και μια μέθοδος παρακολούθησης δίσκου.
  11. Bash Scripting Part 11, Expect Command — αυτό το υλικό είναι αφιερωμένο στο εργαλείο Expect, με το οποίο μπορείτε να αυτοματοποιήσετε την αλληλεπίδραση με διαδραστικά βοηθητικά προγράμματα. Συγκεκριμένα, μιλάμε για αναμενόμενα σενάρια και την αλληλεπίδρασή τους με σενάρια bash και άλλα προγράμματα.

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

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

Σενάρια Bash: η αρχή

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

Πρέπει να μεταφράσω την υπόλοιπη σειρά άρθρων;

  • Ναι!

  • Όχι δεν χρειάζεται

Ψήφισαν 1030 χρήστες. 106 χρήστες απείχαν.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο