เครื่องหมายดอกจันแบ็กสแลชเครื่องหมายโคลอนและสองใน (* \: 2) คืออะไร?


14

ความหมายของlsคำสั่งดังต่อไปนี้คืออะไร?

ls -l *\:2,*T
  • ls = รายการ
  • -l = ยาว (รายการ)
  • *TอาจหมายถึงTในตอนท้าย

แต่สิ่งที่เกี่ยวกับที่*\:2และเครื่องหมายจุลภาค?

คำตอบ:


25

*\:2,*Tเป็นรูปแบบ glob ของไฟล์ที่จะแสดง เพื่อให้เข้าใจเราต้องจำบางสิ่ง:

  • : จะต้องมีการหลบหนีในเปลือกกลายเป็น \:
  • ชื่อไฟล์สามารถมีเครื่องหมายจุลภาคได้อย่างง่ายดาย

ดังนั้น*\:2,*Tเช่นจะตรงกับไฟล์ที่เรียกว่าTranscationNumber:2,EventType:XYT

แก้ไข

จากความคิดเห็นความจำเป็น (หรือไม่) ของการหลบหนี:ความต้องการไม่กี่คำ: มันไม่จำเป็นอย่างเคร่งครัดที่จะหลบหนี:สัญญาณ แต่ทุบตีตัวเองแนะนำมันเมื่อ autocompleting


3
ขอบคุณทั้ง Eugen และ HBruijn ฉันสงสัยว่ามีรูปแบบที่ซับซ้อนบางอย่าง แต่จริง ๆ แล้วมันควรตรงกับเครื่องหมายจุดคู่และเครื่องหมายจุลภาคซึ่งฉันไม่คิดว่าเมื่อทำงานกับไฟล์ ในตอนนี้คำสั่งทั้งหมดเข้าท่าแล้ว: รายการไฟล์อีเมลทั้งหมดในไดเรกทอรี Maildir ซึ่งถูกทำเครื่องหมายว่า "ลบแล้ว" (T) Btw หมายเลข 2 หมายถึง Maildir ในรุ่น 2 (cf wiki2.dovecot.org/MailboxFormat/Maildir )
jugmac00

11
ตั้งแต่เมื่อใดจะ:ต้องมีการหลบหนี
Barmar

7
:ไม่จำเป็นต้องหลบหนี มันเป็นพิเศษเฉพาะในสถานการณ์ที่เฉพาะเจาะจง (เมื่อใช้เป็นคำสั่ง) ไม่ได้อยู่ในรูปแบบ glob \:เทียบเท่ากับการ:หลบหนีทำให้ไม่แตกต่าง
terdon

1
@Aaron มันไม่ได้เป็นอย่างแน่นอน : เชลล์จะยังคงประมวลผลการแทนที่ตัวแปรโดยเฉพาะความหลากหลายของการมอบหมาย (เช่นการตั้งค่าเริ่มต้น):unset var; : ${var:=x}; echo $var
glenn jackman

3
@terdon & @Aaron เครื่องหมายโคลอน:เป็นส่วนหนึ่งของค่าเริ่มต้นสำหรับCOMP_WORDBREAKSตัวแปรสภาพแวดล้อม ในการเติมข้อความอัตโนมัติของ Bash อักขระเหล่านั้นถูกใช้เป็นตัวคั่นคำโดยไลบรารีบรรทัดการอ่านและชื่อไฟล์ที่มีเครื่องหมายโคลอนควรเป็นคำเดียว ดังนั้นเหตุผลที่การเติมข้อความอัตโนมัติของการทุบตีต้องมีการหลีกเลี่ยงลำไส้ใหญ่แม้ว่าจะเป็น " ส่วนใหญ่ " ไม่ใช่ตัวอักษรพิเศษ ...
HBruijn

14

รายการไฟล์ทั้งหมดที่ตรงกับรูปแบบไวด์การ์ด *:2,*T

อักขระตัวแทนนั้น*ตรงกับสิ่งใด ๆ (จำนวนอักขระที่เป็นไปได้ทั้งหมด)
:2,คืออักขระที่จำเป็นต้องมีอยู่ในชื่อไฟล์ / ไดเรกทอรี
ลำไส้ใหญ่เป็นตัวละครพิเศษที่จะต้องหนีด้วยเหตุนี้รูปแบบของ: ชื่อแฟ้ม / ไดเรกทอรีต้องจบลงด้วยการ\:2,
T

ชื่อไฟล์ที่จะจับคู่จะเป็น

:2,T
a:2,T
a:2,bT
abbY-$fafaf:2,<hskjhsgdfhjk>T

1
ไม่มีอะไรพิเศษเกี่ยวกับ: มันไม่จำเป็นต้องหลบหนี
เควิน

@Kevin ทุบตีการเติมข้อมูลอัตโนมัติโดยอัตโนมัติจะทำการโคลอนในรูปแบบชื่อไฟล์ / ไดเรกทอรีเนื่องจากจะรวมอยู่ในรายการCOMP_WORDBREAKค่าสภาพแวดล้อมที่ได้รับการตั้งค่าเริ่มต้น - ดังนั้นมันจึงไม่ใช่ตัวอักขระพิเศษจริง ๆ แต่เมื่อคุณใช้การเติมข้อความอัตโนมัติใน commandline และต้องการ / จำเป็นต้องจับคู่ชื่อไฟล์กับโคลอนต้องไม่ต้องมีการหลบหนี
HBruijn

9

ดังที่คนอื่น ๆ สังเกตไว้สิ่งนี้จะแสดงรายการในรูปแบบยาวไฟล์ที่มี:2และสิ้นสุดT

ดูเหมือนว่าการค้นหาในโฟลเดอร์ Maildir สำหรับไฟล์ที่ถูกลบ (ถังขยะ) อย่างไรก็ตามสำหรับความแข็งแกร่งมันควรจะมีอีก*ในตอนท้ายแม้ว่า แฟล็กใหม่ที่มีตำแหน่งตามตัวอักษรในภายหลังสามารถเพิ่มและ Dovecot เช่นเพิ่มฟิลด์อื่นที่มีขนาดไฟล์ในตอนท้าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.