เปลือก Linux และ Unix เหมือนbash
อนุญาตให้ใช้ globs เพื่อชื่อไฟล์โดยประมาณและทำให้การค้นหาไฟล์ง่ายขึ้น ฉันทราบสัญลักษณ์ตัวแทน (*) มี globs อื่นใดอีกบ้างbash
ที่ฉันสามารถใช้กับมันได้grep
?
@KamilMaciorowski ผมทราบความแตกต่างระหว่าง globs และ regex แต่ผมก็รู้สึกว่า GNU grep สนับสนุน globs โดยค่าเริ่มต้น (แม้จะมี
—
Hashim
grep -F
) เช่นเดียวกับคำสั่งอื่น ๆ bash
มากที่สุดใน
"เหมือนกับคำสั่งอื่น ๆ ส่วนใหญ่ใน
—
Kamil Maciorowski
bash
" - grep
ไม่ใช่คำสั่ง "ในbash
" แต่สามารถเรียกใช้งานแยกต่างหากที่คุณสามารถเรียกใช้โดยไม่มีเชลล์หากคุณรู้วิธี คุณควรแยกความแตกต่างระหว่าง globs ที่ขยายอย่างละเอียดโดยbash
ก่อนหน้าgrep
(หรือคำสั่งใด ๆ ที่เรียกใช้ในเชลล์) แม้จะเรียกใช้จาก globs, นิพจน์ทั่วไปหรือสิ่งอื่นใดที่สนับสนุนโดยคำสั่งนั้น
เชลล์จะขยาย globs ก่อนส่งผ่านไปยัง
—
Gordon Davisson
grep
รายการอาร์กิวเมนต์ ดังนั้นgrep -f *.txt
จะขยายไปสู่สิ่งที่ชอบgrep -f file1.txt file2.txt file3.txt
และgrep
จะตีความfile1.txt
ว่าเป็นไฟล์เพื่ออ่านรูปแบบการค้นหาจากและfile2.txt
และfile3.txt
เป็นไฟล์เพื่อค้นหารูปแบบเหล่านั้น grep
ไม่มีความคิดใด ๆ ที่มีรูปแบบ glob เกี่ยวข้อง แต่เพียงรู้ว่ามันมีสตริง "-f", "file1.txt", "file2.txt" และ "file3.txt" เป็นอาร์กิวเมนต์
เรียก
—
Kamil Maciorowski
set -x
ใช้ (ใช้set +x
เพื่อเปลี่ยนกลับในภายหลัง) จากนั้นเรียกใช้grep -f *.txt 1>/dev/null 2>/dev/null
(การเปลี่ยนเส้นทางเป็นเพียงการทำให้คำสั่งเงียบเอง) สิ่งที่คุณเห็นหลังจากนั้น+
คือคำสั่งจริง ลองในไดเรกทอรีที่มีไฟล์ตรงกัน 0, 1 หรือมากกว่า คุณจะเห็นสิ่งที่grep
ได้รับข้อโต้แย้งจริง ๆ
grep
ใช้นิพจน์ทั่วไป เหล่านี้แตกต่างจาก globsgrep
การใช้งานบางอย่างใช้ globs กับตัวเลือกเช่น--exclude=GLOB
แต่ฉันคิดว่าตัวเลือกเหล่านี้ไม่จำเป็นต้องใช้โดย POSIX ดังนั้นคุณไม่ควรคิดgrep
ว่ารู้อะไรเกี่ยวกับ globs