Linux команда xargs.
สารบัญ:
- วิธีการใช้คำสั่ง Linux
xargs
- วิธีดูคำสั่งและแจ้งผู้ใช้
- วิธีการ จำกัด จำนวนอาร์กิวเมนต์
- วิธีเรียกใช้หลายคำสั่ง
- วิธีระบุตัวคั่น
- วิธีอ่านรายการจากไฟล์
- ใช้
xargs
พร้อมfind
- การใช้ xargs เพื่อตัดอักขระช่องว่าง
- ข้อสรุป
ยูทิลิตี
xargs
ช่วยให้คุณสามารถสร้างและดำเนินการคำสั่งจากอินพุตมาตรฐาน มันมักจะใช้ร่วมกับคำสั่งอื่น ๆ ผ่านการไพพ์
ด้วย
xargs
คุณสามารถระบุอินพุตมาตรฐานเป็นอาร์กิวเมนต์สำหรับยูทิลิตีบรรทัดคำสั่งเช่น
mkdir
และ
rm
ในบทช่วยสอนนี้เราจะกล่าวถึงพื้นฐานของการใช้คำสั่ง
xargs
วิธีการใช้คำสั่ง Linux
xargs
xargs
อ่านอาร์กิวเมนต์จากอินพุตมาตรฐานคั่นด้วยช่องว่างหรือบรรทัดใหม่และดำเนินการคำสั่งที่ระบุโดยใช้อินพุตเป็นอาร์กิวเมนต์ของคำสั่ง หากไม่ได้ระบุคำสั่งไว้ค่าเริ่มต้นคือ
/bin/echo
ไวยากรณ์สำหรับคำสั่ง
xargs
มีดังนี้:
xargs]
ตัวอย่างพื้นฐานที่สุดของการใช้
xargs
คือการส่งผ่านสตริงจำนวนมากคั่นด้วยช่องว่างโดยใช้
xargs
ไปยัง
xargs
และเรียกใช้คำสั่งที่จะใช้สตริงเหล่านั้นเป็นอาร์กิวเมนต์
echo "file1 file2 file3" | xargs touch
ในตัวอย่างด้านบนเรากำลัง
xargs
อินพุตมาตรฐานไปยัง
xargs
และคำสั่ง
touch
ถูกรันสำหรับแต่ละอาร์กิวเมนต์สร้างไฟล์สามไฟล์ นี่เหมือนกับว่าคุณจะทำงาน:
วิธีดูคำสั่งและแจ้งผู้ใช้
หากต้องการพิมพ์คำสั่งบนเทอร์มินัลก่อนดำเนินการให้ใช้ตัวเลือก
-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
ตัวเลือกนี้มีประโยชน์เมื่อเรียกใช้งานคำสั่งทำลาย
วิธีการ จำกัด จำนวนอาร์กิวเมนต์
ตามค่าดีฟอลต์จำนวนอาร์กิวเมนต์ที่ส่งไปยังคำสั่งถูกกำหนดโดยขีด จำกัด ของระบบ
--max-args
-n
(
--max-args
) ระบุจำนวนของอาร์กิวเมนต์ที่จะถูกส่งผ่านไปยังคำสั่งที่กำหนด
xargs
รันคำสั่งที่ระบุหลายครั้งเท่าที่จำเป็นจนกว่าอาร์กิวเมนต์ทั้งหมดจะหมด
ในตัวอย่างต่อไปนี้จำนวนอาร์กิวเมนต์ที่อ่านจากอินพุตมาตรฐานถูก จำกัด ที่ 1
echo "file1 file2 file3" | xargs -n 1 -t touch
ดังที่คุณเห็นจากเอาต์พุต verbose ด้านล่างคำสั่ง touch จะถูกดำเนินการแยกกันสำหรับแต่ละอาร์กิวเมนต์:
touch file1 touch file2 touch file3
วิธีเรียกใช้หลายคำสั่ง
หากต้องการรันหลายคำสั่งด้วย
xargs
ให้ใช้ตัวเลือก
-I
มันทำงานได้โดยการกำหนด
replace-str
หลังจากตัวเลือก
-I
และเหตุการณ์ทั้งหมดของ
replace-str
จะถูกแทนที่ด้วยอาร์กิวเมนต์ที่ส่งผ่านไปยัง xargs
ตัวอย่าง
xargs
ต่อไปนี้จะเรียกใช้สองคำสั่งก่อนอื่นมันจะสร้างไฟล์โดยใช้การ
touch
แล้วมันจะแสดงรายการไฟล์ด้วย
ls
สั่ง
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
) เพื่อตั้งค่าตัวคั่นที่กำหนดเองซึ่งอาจเป็นอักขระเดียวหรือลำดับการ
--delimiter
เริ่มต้นด้วย
\
ตัวอย่างต่อไปนี้ที่เราใช้ เป็นตัวคั่น:
echo "file1;file2;file3" | xargs -d ; -t touch
วิธีอ่านรายการจากไฟล์
คำสั่ง xargs ยังสามารถอ่านไอเท็มจากไฟล์แทนอินพุตมาตรฐาน หากต้องการทำเช่นนั้นให้ใช้ตัวเลือก
-a
(
--arg-file
) ตามด้วยชื่อไฟล์
ในตัวอย่างต่อไปนี้คำสั่ง
xargs
จะอ่านไฟล์
ips.txt
และ ping ที่อยู่ IP แต่ละรายการ
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
จะพิมพ์ชื่อเต็มของไฟล์ทั้งหมดภายในไดเร็กทอรี
/var/www/.cache
และ
xargs
จะส่งผ่านพา ธ ไฟล์ไปยังคำสั่ง
rm
:
find /var/www/.cache -type f -print0 | xargs -0 rm -f
การใช้ 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
แต่ละตัวให้อ่านหน้า man xargs
คำสั่ง linux พื้นฐาน

การรู้วิธีใช้บรรทัดคำสั่งจะมีประโยชน์มาก ในบทความนี้เราจะดำเนินการตามคำสั่ง Linux ที่ใช้บ่อยที่สุดที่ผู้ดูแลระบบ Linux ใช้เป็นประจำทุกวัน
คำสั่ง Chmod ใน linux (การอนุญาตไฟล์)

ใน Linux การเข้าถึงไฟล์นั้นได้รับการจัดการผ่านการอนุญาตไฟล์คุณสมบัติและความเป็นเจ้าของ บทช่วยสอนนี้ครอบคลุมถึงวิธีการใช้คำสั่ง chmod เพื่อเปลี่ยนสิทธิ์การเข้าถึงของไฟล์และไดเรกทอรี
คำสั่ง Chgrp ใน linux (เปลี่ยนกลุ่ม)

ใน Linux แต่ละไฟล์จะเชื่อมโยงกับเจ้าของและกลุ่มและมีสิทธิ์ที่กำหนดว่าผู้ใช้คนใดสามารถอ่านเขียนหรือดำเนินการไฟล์ คำสั่ง chgrpc เปลี่ยนความเป็นเจ้าของกลุ่มของไฟล์ที่กำหนด