สไตล์ / แนวปฏิบัติที่ดีสำหรับตัวคั่นในชื่อไฟล์ (หรือไดเรกทอรี) [ปิด]


16

ฉันไม่แน่ใจว่านี่เป็นคำถามที่ "ถูกต้อง" หรือไม่ที่จะโพสต์ที่นี่ ฉันอาจถามเพิ่มเติมเกี่ยวกับ "ความคิดเห็น" มากกว่าคำตอบที่เป็นหมวดหมู่จริง ๆ (จากคำตอบที่ได้ผลหรือไม่และก็เป็นเช่นนั้น)

ฉันสงสัยว่าตัวแยกชื่อจะเป็นมิตรกับลินุกซ์มากที่สุด(หรือเฉพาะเจาะจงมากขึ้นคือเป็นมิตรกับ Bash ) และเป็นมิตรกับมนุษย์ในเวลาเดียวกัน

สมมติว่าฉันต้องการสร้างไดเรกทอรีที่มีบางสิ่งที่เกี่ยวข้องกับMr. Foo Bar ( Fooเป็นชื่อแรก, Barเป็นนามสกุล)

การมีชื่อ " Foo-Bar/" นั้นสะดวกมาก -เป็นตัวละคร "ปกติ" ไม่จำเป็นต้องหลบหนีมันแสดงให้เห็นอย่างชัดเจนFooและBarเป็นสองสิ่งที่แยกจากกัน ... Nice

ตอนนี้ " Foo.Bar" ค่อนข้างยุ่งยาก บางคนอาจคิดว่าFoo.Barเป็นไฟล์ (โดยคร่าวๆก่อนโดยเฉพาะถ้าคุณไม่มีเทอร์มินัลที่เปิดใช้งานการระบายสี) โดยที่ " Foo" เป็นชื่อไฟล์และนามสกุลไฟล์ " Bar"

ฉันยังสามารถใช้ " Foo Bar" แต่แล้วฉันต้องหนีช่องว่างเมื่อฉันต้องการเข้าถึงไดเรกทอรีและถ้าฉันต้องการรายการเนื้อหาของไดเรกทอรีหลัก (ที่Foo Barตั้งอยู่) และใส่รายการกล่าวในอาร์เรย์ทุบตี พื้นที่สีขาวกำลังทำให้เกิดปัญหา (มาก) ไม่ดี.

วงเล็บ()ยังทำให้เกิดปัญหามากมาย พวกเขายังต้องหลบหนีจากนั้นจึงทำให้เกิดปัญหากับคำสั่งในฐานะscp... ไม่ดี

ดังนั้น ... คำถาม (ในที่สุด) คือ: หากคุณต้องการทำให้ชื่อของไฟล์ชัดเจนและมีความหมายอย่างรวดเร็วและคุณต้องใช้ตัวคั่นคุณจะใช้อะไร


5
สำหรับการอ้างอิงที่: POSIX แบบพกพาชื่อไฟล์ชุดอักขระ
jw013

ฉันมักจะใช้เครื่องหมายขีดกลาง แต่ก็ขึ้นอยู่กับสิ่งที่ฉันทำ บางคนอาจพิจารณากรณีอูฐตามความเหมาะสมเช่น FooBar
klapaucius

คำตอบ:


14

คำตอบสั้น ๆ : "Foo _-_ Bar"

คำตอบยาว:

ในการทำให้สิ่งต่าง ๆ เป็นเรื่องง่ายฉันมักจะใช้ลำดับของตัวละครในพื้นที่ที่จำเป็นต้องใช้ความคิดคือการใช้บางสิ่งที่ง่ายต่อการมองเห็นดังนั้นคุณจะได้ว่านี่คือตัวคั่นอาจเป็น "_-_" หรือ " ___"

ตัวอย่างที่ใช้งานได้จริงที่ฉันใช้นี่คือคอลเลคชัน mp3 ที่ชื่อไฟล์มีชื่อศิลปินและชื่อเพลงและบางครั้งก็มีหมายเลขลำดับ และถ้าคุณใช้ลำดับมายากลเพื่อแยกมันเป็นเรื่องง่ายทั้งต่อตาและสำหรับสคริปต์ ตัวอย่าง mp3 อาจมีหน้าตาแบบนี้

  • 01_Blue_Man_Group _-_ Above.mp3
  • 02_Blue_Man_Group _-_ Time_to_Start.mp3
  • 03_Blue_Man_Group _-_ Sing_Along.mp3

ตอนนี้สามารถแปลเป็นตัวอย่างของคุณได้ถ้า Foo and Bar เป็นสองเหตุผลที่ไม่ควรผสมกันและนั่นอาจเป็น Foo _-_ Bar


2
และด้วยวิธีนี้คุณสามารถแยกชื่อที่มีเครื่องหมายขีดคั่นอยู่แล้ว (หรือตัวคั่นโดยทั่วไป)
lynxlynxlynx

1
ยังดีจริงๆที่จะแยกวิเคราะห์อดีต! : ^ (. +) _-_ (. +) \. mp3 $
DanDan

เนื่องจากมนุษย์จะดูไฟล์เหล่านี้นี่เป็นคำตอบที่ดี ในสาระสำคัญฉันจะพิจารณานี้สตริงตัวคั่น; ตัวคั่นเฉพาะหลายอักขระ ใน Vagrant ฉันสังเกตเห็นว่ามันใช้สตริงVAGRANTSLASHในชื่อไฟล์ที่มีการแยก
ThorSummoner

9

ด้วยตัวละครมากมายที่คุณอาจไม่คิดว่าควรจะพิเศษจริงๆอันที่จริงแล้วฉันก็แค่ใช้ตัวละครพิเศษอยู่ดี สิ่งนี้ทำให้ฉันมีนิสัยที่ดีในการใช้ bash complete ซึ่งมันจะช่วยให้ตัวละครพิเศษทุกตัวในชื่อไฟล์หนีไปโดยอัตโนมัติ แต่มันยังทำให้ฉันมีนิสัยที่ดีในการหลบหนี / การอ้างถึงทุกอย่างในสคริปต์และ 1-liners หลายส่วนในทุบตี

ตัวอย่างเช่นใน 1 ซับง่ายๆ:

for file in *.txt; do something.sh "$file"; done

ด้วยวิธีนี้แม้ว่าไฟล์ใดไฟล์หนึ่งจะมีช่องว่างหรืออักขระอื่น ๆdoส่วนหนึ่งของลูปจะยังคงทำงานอยู่และไม่ควรพลาดชื่อไฟล์ชื่อชิ้นส่วน 2 ชื่อขึ้นไปซึ่งอาจทำให้เกิดผลข้างเคียงโดยไม่ตั้งใจ

เนื่องจากฉันไม่สามารถควบคุมการตั้งชื่อช่องว่าง / ไม่เว้นวรรคของไฟล์ที่ฉันพบทุกครั้งและถ้าฉันลองมันอาจจะทำลาย symlink บางที่ทำให้เกิดผลกระทบที่ไม่ตั้งใจมากขึ้นฉันแค่คาดหวังว่าชื่อไฟล์ / ชื่อไดเรกทอรีทั้งหมดจะมีช่องว่าง และเพียงแค่พูด / ยกเว้นตัวแปรทั้งหมดเพื่อชดเชย

ดังนั้นฉันจึงใช้ตัวละครที่ฉันต้องการ (มักจะเว้นวรรค) ในชื่อไฟล์

ฉันยังใช้ช่องว่างในชื่อชุดข้อมูล ZFS ซึ่งฉันต้องยอมรับทำให้เกิดการเกาหัวอย่างไม่น่าเชื่อในหมู่นักพัฒนาซอฟต์แวร์ที่เขียนซอฟต์แวร์สำหรับ NAS ที่ฉันใช้

sum-up: Spaces จะไม่ถูกต้องตัวละครจึงมีเหตุผลที่ไม่ใช้พวกเขา


6

ฉันใช้เครื่องหมายขีดกลาง-ด้วยเหตุผลที่คุณพูดถึงข้างต้น ฉันหลีกเลี่ยงการขีดเส้นใต้เพราะพวกเขาจำเป็นต้องใช้ปุ่ม Shift ดังนั้นใช้เวลาอย่างน้อยสองครั้งในการพิมพ์ (เช่นกันฉันคิดว่าพวกเขาน่าเกลียด)

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


5

ฉันใช้เครื่องหมายขีดล่าง ( _) มองเห็นพวกมันหายไปและพิมพ์ได้ง่ายและไม่พิเศษ


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