Android

Εντολή Xargs στο linux

Easier Go debugging on the command line with CGDB

Easier Go debugging on the command line with CGDB

Πίνακας περιεχομένων:

Anonim

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

Με το xargs , μπορείτε να παρέχετε την τυπική είσοδο ως επιχείρημα στα βοηθήματα γραμμής εντολών όπως mkdir και rm .

Σε αυτό το σεμινάριο, θα καλύψουμε τα βασικά στοιχεία της χρήσης της εντολής xargs .

Πώς να χρησιμοποιήσετε την εντολή xargs Linux

xargs διαβάζει επιχειρήματα από την τυπική είσοδο, χωρισμένα με κενά κενά ή νέες γραμμές και εκτελεί την καθορισμένη εντολή χρησιμοποιώντας τα επιχειρήματα εισόδου ως εντολή. Εάν δεν παρέχεται εντολή, η προεπιλογή είναι /bin/echo .

Η σύνταξη για την εντολή xargs έχει ως εξής:

xargs]

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

echo "file1 file2 file3" | xargs touch

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

touch file1 file2 file3

Τρόπος προβολής της εντολής και προτροπή του χρήστη

Για να εκτυπώσετε την εντολή στο τερματικό πριν την εκτέλεση, χρησιμοποιήστε την επιλογή -t ( --verbose ):

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

Πληκτρολογήστε y ή Y για επιβεβαίωση και εκτέλεση της εντολής:

touch file1 file2 file3 ?…y

Αυτή η επιλογή είναι χρήσιμη όταν εκτελείτε καταστρεπτικές εντολές.

Πώς να περιορίσετε τον αριθμό των επιχειρημάτων

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

Η επιλογή -n ( --max-args ) καθορίζει τον αριθμό των --max-args πρέπει να μεταβιβαστούν στη δεδομένη εντολή. xargs εκτελεί την καθορισμένη εντολή όσες φορές χρειάζεται έως ότου εξαντληθούν όλα τα επιχειρήματα.

Στο ακόλουθο παράδειγμα, ο αριθμός των επιχειρημάτων που διαβάζονται από την τυπική είσοδο περιορίζεται στο 1.

echo "file1 file2 file3" | xargs -n 1 -t touch

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

touch file1 touch file2 touch file3

Πώς να εκτελέσετε πολλές εντολές

Για να εκτελέσετε πολλές εντολές με xargs , χρησιμοποιήστε την επιλογή -I . Λειτουργεί με τον ορισμό μιας replace-str μετά την επιλογή -I και όλες οι εμφανίσεις της replace-str αντικαθίστανται με το όρισμα που μεταβιβάζεται στο xargs.

Το παρακάτω παράδειγμα xargs θα εκτελέσει δύο εντολές, αρχικά θα δημιουργήσει τα αρχεία με χρήση touch και στη συνέχεια θα απαριθμήσει τα αρχεία με την εντολή ls :

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'

-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3

Μια κοινή επιλογή για την replace-str είναι % . Ωστόσο, μπορείτε να χρησιμοποιήσετε ένα άλλο σύμβολο κράτησης θέσης, για παράδειγμα ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

Πώς να ορίσετε έναν αποχωριστήρα

Χρησιμοποιήστε την επιλογή -d ( --delimiter ) για να ορίσετε έναν προσαρμοσμένο οριοθέτη ο οποίος μπορεί να είναι είτε ένας χαρακτήρας είτε μια ακολουθία διαφυγής που αρχίζει με \ .

Το παρακάτω παράδειγμα που χρησιμοποιούμε ; ως οριοθέτης:

echo "file1;file2;file3" | xargs -d ; -t touch

touch file1 file2 file3

Πώς να διαβάσετε τα στοιχεία από το αρχείο

Η εντολή xargs μπορεί επίσης να διαβάσει στοιχεία από ένα αρχείο αντί για τυπική είσοδο. Για να το κάνετε αυτό, χρησιμοποιήστε την επιλογή -a ( --arg-file ) ακολουθούμενη από το όνομα του αρχείου.

Στο ακόλουθο παράδειγμα, η εντολή xargs θα διαβάσει το αρχείο ips.txt και θα ips.txt κάθε διεύθυνση IP.

ips.txt

8.8.8.8 1.1.1.1

Χρησιμοποιούμε επίσης την επιλογή -L 1 , η οποία καθοδηγεί το xargs να διαβάζει μία γραμμή τη φορά. Εάν αυτή η επιλογή παραλειφθεί, το xargs θα περάσει όλα τα IP σε μία εντολή ping .

xargs -t -L 1 -a ips.txt ping -c 1

ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

Χρήση xargs με find

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

Για να αποφύγετε ζητήματα με ονόματα αρχείων που περιέχουν νέες γραμμές ή άλλους ειδικούς χαρακτήρες, χρησιμοποιήστε πάντοτε την επιλογή find -print0 , η οποία προκαλεί find να εκτυπώνει το πλήρες όνομα αρχείου που ακολουθείται από έναν μηδενικό χαρακτήρα. Αυτή η έξοδος μπορεί να ερμηνευτεί σωστά από το xargs χρησιμοποιώντας την επιλογή -0 , ( --null ).

Στο παρακάτω παράδειγμα, το find θα εκτυπώσει τα πλήρη ονόματα όλων των αρχείων μέσα στον κατάλογο /var/www/.cache και το xargs θα περάσει τις διαδρομές αρχείου στην εντολή rm :

find /var/www/.cache -type f -print0 | xargs -0 rm -f

Χρησιμοποιώντας xargs για να Trim Χαρακτήρες Whitespace

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

echo " Long line " | xargs

Long line

Αυτό μπορεί να είναι χρήσιμο όταν συγκρίνουμε συμβολοσειρές σε δέσμες ενεργειών κελύφους.

#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi

Strings are not equal. Strings are equal.

συμπέρασμα

xargs είναι ένα βοηθητικό πρόγραμμα γραμμής εντολών στο Linux το οποίο σας επιτρέπει να δημιουργείτε και να εκτελέσετε εντολές.

Για περισσότερες πληροφορίες σχετικά με κάθε επιλογή xargs , διαβάστε τη σελίδα man xargs.

xargs terminal