ค้นหาด้วย YUM
โดยทั่วไปคุณจะไม่ใช้นิพจน์ทั่วไป (globs) ใด ๆ เมื่อค้นหาด้วยyum search
เนื่องจากคำสั่งsearch
ค้นหาสตริงย่อยภายในชื่อแพ็กเกจและข้อมูลสรุป ฉันจะรู้สิ่งนี้ได้อย่างไร yum search
มีข้อความที่จะบอกคุณนี้เมื่อคุณใช้เป็น
การจับคู่ชื่อและการสรุปเท่านั้นใช้ "ค้นหาทั้งหมด" สำหรับทุกสิ่ง
หมายเหตุ:สตริง[cl-*]
นั้นเป็นเทคนิค glob ในเปลือก Bash
search
ดังนั้นคุณมักมองหาชิ้นส่วนของสตริงที่คุณต้องการด้วย นิพจน์ทั่วไปจะปรากฏขึ้นเมื่อคุณกำลังมองหาแพ็คเกจที่ต้องการ เหล่านี้เป็นคำสั่ง YUM ชอบและlist
install
ตัวอย่างเช่น:
$ yum list cl-* | expand
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.dmacc.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.dmacc.net
Available Packages
cl-asdf.noarch 20101028-5.fc19 fedora
cl-clx.noarch 0.7.4-4.3 home_zhonghuaren
cl-ppcre.noarch 2.0.3-3.3 home_zhonghuaren
ข้อแม้เดียวที่คุณจะต้องระมัดระวังกับ regexes / globs cl-*
คือถ้ามีไฟล์ที่อยู่ในเปลือกของคุณที่มีชื่อดังกล่าวว่าพวกเขาก็จะตรงกับ ในกรณีเหล่านี้เชลล์ของคุณจะขยาย regex / glob ก่อนที่จะถูกนำเสนอต่อ YUM
ดังนั้นแทนที่จะทำงานyum list cl-*
คุณจะใช้คำสั่งyum list cl-file
ถ้ามีไฟล์ที่ตรงกับ cl-*
regex
ตัวอย่างเช่น:
$ ls cl-file
cl-file
$ yum list cl-*
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.steadfast.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.steadfast.net
Error: No matching Packages to list
คุณสามารถป้องกันเหตุการณ์นี้ได้โดยหลีกเลี่ยงสัญลักษณ์แทนดังนี้:
$ yum list cl-\* | expand
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.dmacc.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.dmacc.net
Available Packages
cl-asdf.noarch 20101028-5.fc19 fedora
cl-clx.noarch 0.7.4-4.3 home_zhonghuaren
cl-ppcre.noarch 2.0.3-3.3 home_zhonghuaren
ดังนั้นสิ่งที่เกี่ยวกับวงเล็บ
ฉันสงสัยว่าคุณมีไฟล์ในไดเรกทอรีท้องถิ่นของคุณที่จะได้รับการจับคู่เมื่อคุณใช้เป็นอาร์กิวเมนต์ไปยัง[cl-*]
yum search
ไฟล์เหล่านี้หลังจากที่ถูกจับคู่โดยเชลล์จะถูกส่งผ่านไปยังyum search
คำสั่งที่ตรงกับที่พบแล้ว
ตัวอย่างเช่น:
$ ls cl-file
cl-file
$ yum search cl-*
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.dmacc.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.dmacc.net
======================================================================= N/S matched: cl-file =======================================================================
opencl-filesystem.noarch : OpenCL filesystem layout
Name and summary matches only, use "search all" for everything.
หมายเหตุ:การจับคู่ด้านบนถูกจับคู่กับชื่อไฟล์ของฉันcl-file
และไม่ตรงcl-*
กับที่ฉันตั้งใจไว้
cl-*
ไม่ใช่การแสดงออกปกติมันเป็นglob
หรือสิ่งที่เรียกว่า เป็นภาษาปกติ (ในภาษา Chomskian) แต่เรามักจะพูดว่าบางสิ่งบางอย่างเป็นนิพจน์ปกติถ้ามันกำหนดไวยากรณ์สำหรับภาษาปกติ (โดยใช้การดำเนินงานขั้นพื้นฐานอย่างน้อยสามอย่าง: การต่อข้อมูล, การเปลี่ยนแปลงและดาว Kleene)