Συναντήσατε σίγουρα μερικές εργασίες που πρέπει να κάνετε επανειλημμένα. Για παράδειγμα, φανταστείτε ότι έχετε έναν κατάλογο γεμάτο αρχεία και θέλετε να αλλάξετε το όνομα όλων αυτών ή ότι πρέπει να συμπιέσετε πολλά αρχεία ή να τα αποσυμπιέσετε, ίσως πρέπει να μετατρέψετε από τη μία μορφή στην άλλη, περιοδικά αντίγραφα ασφαλείας, και τα λοιπά. Τα σενάρια έχουν λύσεις για όλα αυτά.
Αυτές οι εργασίες όταν εφαρμόζονται σε ένα αρχείο στο Bash είναι εντάξει. Το πρόβλημα είναι όταν πρέπει να το εφαρμόσετε σε δεκάδες από αυτά. Η εργασία στο σπίτι μπορεί να είναι πολύ ενοχλητική. Με έναν απλό βρόχο ή βρόχο στο Bash θα μπορούσατε να απαλλαγείτε από αυτό το πρόβλημα και να εκτελέσετε μια εργασία επανειλημμένα για να αυτοματοποιήσετε και να μην σας κοστίσει τόσο πολύ δουλειά. Ο τρόπος να το κάνετε είναι εξαιρετικά απλός, αλλά πολλοί νέοι χρήστες δεν το κάνουν και καταλήγουν να κάνουν την εργασία χειροκίνητα ή αναζητούν γραφικά προγράμματα που το κάνουν ...
Για αυτό, κολλήστε με αυτήν τη δομή:
for x in objetivo; do comando; done
Με παράδειγμαΑς υποθέσουμε ότι θέλετε να διαγράψετε αρχεία με όνομα name, name0, name1, name2, κ.λπ., μέχρι τον αριθμό name3. Πηγαίνοντας ένα προς ένα με rm θα ήταν πολύ κουραστικό, αντ 'αυτού, μπορείτε να εκτελέσετε την ακόλουθη εντολή:
for n in 'seq 100'; do rm nombre$n; done
Ή ίσως φανταστείτε ότι έχετε έναν κατάλογο με πολλά συμπιεσμένα αρχεία .zip που θέλετε να εξαγάγετε. Για να αποφύγετε να πηγαίνετε ένα προς ένα μπορείτε να χρησιμοποιήσετε:
</pre> <pre>for n in *.zip; do unzip "$n"; done
Εσείς αλλάξτε αυτούς τους βρόχους bash καθώς προτιμάτε να χρησιμοποιήσετε το εργαλείο που χρειάζεστε στην περίπτωσή σας. Για παράδειγμα, ένα άλλο, τώρα φανταστείτε ότι θέλετε να αποσυσκευάσετε ένα tarball:
</pre> <pre>for n in *.tar.xz; do tar -xf "$n"; done</pre> <pre>
Ελπίζω ότι σας βοήθησα να μην χάνετε τόσο πολύ χρόνο κάνοντας όλες αυτές τις εργασίες ένα προς ένα και ότι μπορείτε να το εφαρμόσετε για να βελτιώσετε την καθημερινή σας εργασία. Όπως μπορείτε να δείτε, δεν έχει μυστήριο, είναι εξαιρετικά απλό ...