คำถามนี้ ( ฉันจะลบ gnome ออกจากการติดตั้ง kubuntu 12.04 ได้อย่างไร ) มีคำสั่งพร้อมเครื่องหมายคำถาม:
sudo apt-get remove --purge ubuntu-desktop
sudo apt-get remove --purge unity?
sudo apt-get remove --purge gnome?
พวกเขาหมายถึงอะไร?
คำถามนี้ ( ฉันจะลบ gnome ออกจากการติดตั้ง kubuntu 12.04 ได้อย่างไร ) มีคำสั่งพร้อมเครื่องหมายคำถาม:
sudo apt-get remove --purge ubuntu-desktop
sudo apt-get remove --purge unity?
sudo apt-get remove --purge gnome?
พวกเขาหมายถึงอะไร?
คำตอบ:
สิ่งเหล่านี้เรียกว่าสัญลักษณ์แทน (รูปแบบกลม)
อักขระตัวแทนมาตรฐาน (หรือที่เรียกว่ารูปแบบการวนซ้ำ) ถูกใช้โดยโปรแกรมอรรถประโยชน์บรรทัดคำสั่งต่าง ๆ เพื่อทำงานกับไฟล์หลายไฟล์
อักขระตัวแทนมาตรฐานใช้งานเกือบทุกคำสั่ง (รวมถึง mv, cp, rm และอื่น ๆ อีกมากมาย)
(question mark)
สิ่งนี้สามารถแสดงถึงอักขระเดี่ยวใด ๆ หากคุณระบุบางอย่างในบรรทัดคำสั่งเช่น "hd?" GNU / Linux จะมองหา hda, hdb, hdc และตัวอักษร / ตัวเลขอื่น ๆ ทุกตัวระหว่าง az, 0-9
*(asterisk)
สิ่งนี้สามารถแสดงจำนวนอักขระใด ๆ (รวมถึงศูนย์ในคำอื่น ๆ ศูนย์หรือมากกว่าตัวอักษร) หากคุณระบุ "cd *" มันจะใช้ "cda", "cdrom", "cdrecord" และทุกอย่างที่ขึ้นต้นด้วย“ cd” รวมถึง“ cd” ด้วย "m * l" ทำได้โดยการบด, mull, ml, และอะไรก็ได้ที่เริ่มต้นด้วย m และลงท้ายด้วย l
[ ] (square brackets)
ระบุช่วง ถ้าคุณทำ m [a, o, u] m มันจะกลายเป็น: mam, mum, mom ถ้าคุณทำ: m [ad] m มันจะกลายเป็นอะไรก็ได้ที่เริ่มต้นและสิ้นสุดด้วย m และมีตัวอักษร a ถึง d อยู่ระหว่าง ตัวอย่างเช่นสิ่งเหล่านี้จะใช้ได้: mam, mbm, mcm, mdm อักขระตัวแทนชนิดนี้ระบุความสัมพันธ์“ หรือ” (คุณต้องการเพียงหนึ่งรายการที่ตรงกัน)
{ } (curly brackets)
คำศัพท์จะถูกคั่นด้วยเครื่องหมายจุลภาคและแต่ละคำจะต้องเป็นชื่อของบางสิ่งหรือสัญลักษณ์แทน ไวด์การ์ดนี้จะคัดลอกทุกอย่างที่ตรงกับไวด์การ์ด (s) หรือชื่อที่แน่นอน (ความสัมพันธ์“ หรือ” หนึ่งหรืออื่น ๆ )
ตัวอย่างเช่นสิ่งนี้จะถูกต้อง:
cp { .doc, .pdf} ~
สิ่งนี้จะคัดลอกสิ่งที่ลงท้ายด้วย. doc หรือ. pdf ไปยังโฮมไดเร็กตอรี่ของผู้ใช้ โปรดทราบว่าไม่อนุญาตให้ใช้ช่องว่างหลังเครื่องหมายจุลภาค (หรือที่อื่น)
[!]
โครงสร้างนี้คล้ายกับโครงสร้าง [] ยกเว้นแทนที่จะจับคู่อักขระใด ๆ ภายในวงเล็บเหลี่ยมมันจะจับคู่อักขระใด ๆ ตราบใดที่มันไม่ได้อยู่ในรายการระหว่าง [และ] นี่คือตรรกะไม่ ตัวอย่างเช่น rm myfile [! 9] จะลบ myfiles ทั้งหมด * (เช่น myfiles1, myfiles2 เป็นต้น) แต่จะไม่ลบไฟล์ที่มีหมายเลข 9 ที่ใดก็ได้ภายในชื่อ
\ (backslash)
ใช้เป็นอักขระ "หลบหนี" เช่นเพื่อป้องกันอักขระพิเศษที่ตามมา ดังนั้น "\" จะค้นหาเครื่องหมายแบ็กสแลชหมายเหตุคุณอาจต้องใช้เครื่องหมายคำพูดและแบ็กสแลช (es)
สำหรับตัวอย่างเพิ่มเติม: เยี่ยมชมหน้านี้
Standard wildcards are used by nearly any command (including mv, cp, rm and many others).
=> FALSE อักขระตัวแทนเหล่านี้กำลังถูกขยายโดยเชลล์และสิ่งที่คำสั่งที่ได้รับคือผลลัพธ์ของการขยาย (เช่นไฟล์ที่ตรงกับรูปแบบ) แทนรูปแบบ (หากไม่มีไฟล์ใดที่ตรงกับรูปแบบแล้วรูปแบบนั้นจะถูกส่งโดยตรงไปยังคำสั่ง)
โดยทั่วไปแล้วใน Bash a ?
เป็นรูปแบบแบบกลมที่ขยายไปถึงตัวละครโดยพลการ
ตัวอย่างเช่น:
$ echo Hello1 > foo1
$ echo Hello2 > foo2
$ cat foo?
Hello1
Hello2
มันคล้ายกับ a *
แต่*
ขยายเป็น0 หรือมากกว่าตัวอักษรในขณะที่?
ขยายเป็นอักขระหนึ่งตัว (ตามอำเภอใจ)
ในกรณีพิเศษของคุณแม้ว่า?
คำสั่งในคำสั่งจะพิมพ์ผิด
apt-get
เข้าใจ REs แต่ถ้าไฟล์ที่เรียกว่าgnome1
มีอยู่ในไดเรกทอรีปัจจุบันเชลล์จะขยายออกก่อนที่ apt-get จะมีโอกาสเห็นมัน
apt-get remove
ต้องใช้ชื่อแพคเกจไม่ใช่ชื่อไฟล์ซึ่งทำให้การขยายตัวสัญลักษณ์แทนโดยเชลล์ส่วนใหญ่ไร้ประโยชน์ หากคุณต้องการลบช่วงของแพคเกจที่คุณต้องการใช้การแสดงออกปกติเต็มรูปแบบที่ยกมาอย่างเหมาะสมเพื่อป้องกันไม่ให้เปลือกจากความพยายามที่จะตีความมันเป็นกลม (เช่นapt-get remove 'gnome.*'
)