אנדרואיד

פקודת Xargs בלינוקס

Simple and straightforward tutorial on xargs!

Simple and straightforward tutorial on xargs!

תוכן עניינים:

Anonim

כלי השירות xargs מאפשר לך לבנות ולבצע פקודות xargs קלט רגילה. בדרך כלל משתמשים בו בשילוב עם פקודות אחרות באמצעות צנרת.

באמצעות xargs , אתה יכול לספק קלט רגיל כטיעון לשירותי שורת פקודה כמו mkdir ו- rm .

במדריך זה, נסקור את היסודות של השימוש בפקודה xargs .

כיצד להשתמש ב- Linux xargs Command

xargs קורא ארגומנטים מהקלט הרגיל, מופרדים על ידי רווחים ריקים או שורות חדשות ומבצע את הפקודה שצוינה באמצעות הקלט xargs הפקודה. אם לא סופקה פקודה, ברירת המחדל היא /bin/echo .

התחביר xargs הוא כדלקמן:

xargs]

הדוגמה הבסיסית ביותר לשימוש ב- xargs היא לעבור מספר מחרוזות המופרדות באמצעות מרחב לבן באמצעות צינור ל- xargs ולהריץ פקודה שתשתמש באותם מיתרים כטיעונים.

echo "file1 file2 file3" | xargs touch

בדוגמה שלמעלה אנו מעבירים את הקלט הסטנדרטי ל- xargs , xargs touch מופעלת עבור כל טיעון, ויוצרים שלושה קבצים. זה אותו דבר כאילו תרוץ:

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 ) מציינת את מספר הארגומנטים שיש להעביר לפקודה הנתונה. xargs מריץ את הפקודה שצוינה פעמים רבות ככל שצריך עד xargs כל הטיעונים.

בדוגמה הבאה, מספר הטיעונים הנקראים מהקלט הסטנדרטי מוגבל ל -1.

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

כפי שניתן לראות מהפלט המילולי שלמטה, פקודת המגע מבוצעת בנפרד עבור כל טיעון:

touch file1 touch file2 touch file3

כיצד להפעיל פקודות מרובות

להפעלת פקודות מרובות עם xargs , השתמש באפשרות -I . זה עובד על ידי הגדרת replace-str לאחר אפשרות -I וכל המופעים של ה- subst- replace-str מוחלפים בטיעון המועבר ל- xargs.

הדוגמה הבאה של xargs תריץ שתי פקודות, תחילה היא תיצור את הקבצים באמצעות touch ואז היא xargs את הקבצים עם הפקודה 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 כל כתובת 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 להדפיס את שם הקובץ המלא ואחריו תו null. ניתן לפרש פלט זה נכון על ידי xargs באמצעות האפשרות -0 , (- --null ).

בדוגמה הבאה, find תדפיס את השמות המלאים של כל הקבצים בספריית xargs ו- xargs יעבירו את נתיבי הקבצים לפקודת rm :

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

שימוש ב- xargs כדי לקצץ דמויות מרחב לבן

xargs יכול לשמש גם ככלי להסרת xargs הלבן משני צידי המיתר הנתון. כל שעליך לעשות הוא 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 , קרא את דף האיש של xargs.

מסוף xargs