ทุบตีในกรณีที่ไม่ตอบสนองต่อ OSX หรือไม่?


79

คำสั่ง bash บนตัวพิมพ์เล็กและใหญ่ของ OSX ไม่ได้หรือไม่ ฉันพิมพ์ "ซึ่ง TR" และมันแสดง / usr / bin / TR แม้ว่าจะไม่มีไบนารีดังกล่าวอยู่ที่นั่น สิ่งเดียวกันสำหรับไบนารีอื่น ๆ เมื่อพิมพ์ใหญ่ หรือ Terminal.app อาจทำการแปลนี้? ฉันจะปิดสิ่งนี้ได้อย่างไร


อยากรู้อยากเห็นทำไมคุณต้องการที่จะปิดนี้
Sören Kuklau

นี่เป็นคำถามที่น่าตื่นเต้น ทุบตีมีnocaseglobตัวเลือกในการควบคุมว่ากรณีการแข่งขันในช่วงนี้ แต่เล็กน้อยของการใช้กลอุบายลึกกว่าปกติlocaleและเสร็จสิ้นการละเว้นกรณี / nocaseglob
bmike

3
เหตุผลที่ฉันต้องการปิดมันก็โง่จริง ๆ ฉันคุ้นเคยกับการพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เมื่อทำงานที่เชลล์ ฉันแค่กลัวว่าคุณสมบัตินี้จะทำให้ฉันผิดหวัง ตัวอย่างฉันเขียนสคริปต์ทุบตี mistype 'lS'; สคริปต์จะทำงานได้ดีบน OSX ฉันย้ายมันไปที่กล่อง cenTOS ของฉันและมันหยุดพัก ได้รับสิ่งนี้จะง่ายต่อการตรวจจับและแก้ไข แต่สามารถหลีกเลี่ยงสถานการณ์โดยสิ้นเชิงถ้าฉันสามารถทำให้สคริปต์ทำงานในลักษณะเดียวกันระหว่างทั้งสองระบบ ฉันค้นพบสิ่งนี้โดยไม่ได้ตั้งใจและมันยังไม่เป็นที่น่ารำคาญดังนั้นฉันอาจจะไม่ผ่านการเปลี่ยนแปลงระบบแฟ้มแบบฝึกหัดสำหรับเรื่องนี้
verboze

5
เหตุผลที่คุณต้องการปิดการทำงานนี้คือความไม่รู้สึกตัวเล็กตัวพิมพ์ใหญ่ทำให้เกิดปัญหากับแอพบางตัวเช่น SVN การทำให้กลมกลืนแบบตัวพิมพ์เล็กและตัวพิมพ์เล็กอาจมีประโยชน์ แต่ SVN สับสนมากหากคุณสร้างไฟล์ชื่อ "Foo" ดังนั้นที่เก็บจะสร้างการอ้างอิงถึง "foo"

อีกเหตุผลในการปิดการใช้งาน: ฉันมีสคริปต์ ~ / bin / CC ในเส้นทางของฉันตั้งแต่ประมาณปี 1980 cc บวกค่าเริ่มต้นที่น่าพอใจบางอย่าง มันทำงานจาก UNIX v6 ถึง v7, Eunice, BSD 4.1, 4.2, 4.3, SVr4, Xenix, โกลด์ UTX, Linux, cygwin ... และมันล้มเหลวเป็นครั้งแรกใน MacOS, การเรียกซ้ำแบบไม่มีที่สิ้นสุด
Krazy Glew

คำตอบ:


94

นี่เป็นคุณลักษณะของระบบไฟล์ในดิสก์ของคุณไม่ใช่ทุบตีหรือ Terminal.app

HFS + (ระบบแฟ้ม Mac) มักจะมีการกำหนดค่าให้เป็นกรณีตายแต่กรณีการรักษา ซึ่งหมายความว่าระบบไฟล์จะพิจารณาfooและFoOเหมือนกัน แต่เมื่อคุณสร้างไฟล์ใหม่มันจะจดจำตัวอักษรที่ตัวพิมพ์ใหญ่และตัวพิมพ์ที่ไม่ใช่

เมื่อคุณฟอร์แมตดิสก์ด้วย HFS + คุณสามารถเลือกได้ว่าระบบไฟล์จะต้องตรงตามตัวพิมพ์ใหญ่ - เล็กหรือไม่ หากคุณเลือกที่จะฟอร์แมตด้วย UFS (Unix FileSystem) ระบบจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เสมอ AFAIK

ในการตรวจสอบว่าดิสก์มีขนาดเล็กหรือใหญ่ให้รัน:

 diskutil info <device>

ตัวอย่างเช่น:

 diskutil info disk0s2

มองหาName:สาย ถ้ามันอ่านอะไรบางอย่างMac OS Extended (Case-sensitive, Journaled)มันหมายความว่ามันเป็นกรณี ๆ ไป ถ้ามันเป็นเพียงแค่อ่านMac OS Extended(ไม่Case-sensitive) แล้วมันก็เป็นเพียงกรณีการรักษาแต่ไม่กรณีที่สำคัญ


6
นอก Unix กรณีการรักษาธรรมชาติก็ไม่แปลก ตัวอย่างเช่น NTFS มีลักษณะคล้ายกัน: ไม่คำนึงถึงขนาดตัวพิมพ์โดยค่าเริ่มต้น แต่คุณสามารถจัดรูปแบบได้ ฉันยังคิดว่าตัวพิมพ์เล็กและใหญ่ไม่ได้เป็นค่าเริ่มต้นมาจาก Mac OS 9 แต่ความจริงที่ว่านักพัฒนา Mac และ Windows จำนวนมากขี้เกียจในเรื่องนี้และไม่สนใจเกี่ยวกับตัวเรือนที่ถูกต้องทำให้แทบเป็นไปไม่ได้ มันแบ่งแอพมากมาย มาจาก Unix ฉันพบว่ามันแปลกมากในตอนแรกเช่นกัน
DarkDust

1
ฉันต้องยอมรับว่าฉันไม่เคยใช้ Classic Mac OS ดังนั้นจึงคาดเดาได้ ไม่ว่าจะด้วยวิธีใดนี่คือคำตอบและ DarkDust ทำให้ดีกว่าฉันดังนั้นฉันจึงควรยอมรับมัน
stuffe

6
Mac OS ทุกรุ่นใช้ตัวพิมพ์เล็กและตัวพิมพ์เล็ก แต่คำนึงถึงประโยชน์ใช้สอย ในขณะที่ UNIX ให้ความแม่นยำ (การเปรียบเทียบชื่อไฟล์แบบไบต์ต่อไบต์) มันอาจเป็นฝันร้ายที่ใช้งานได้สำหรับผู้ใช้ที่บันทึก 'Resume' และ 'REsume' โดยไม่ตั้งใจแล้วสับสนเมื่อเปิดเวอร์ชันผิดและการเปลี่ยนแปลงทั้งหมดจะหายไป .
Dan Udey

2
ในทางกลับกันก็สามารถยังเป็น "การใช้งานที่ฝันร้าย" เมื่อพิมพ์ "หัว" ที่ผลบรรทัดคำสั่งในโปรแกรม / usr / bin / หัว (แสดงบรรทัดแรกของไฟล์) กำลังดำเนินการแทน / usr / local / bin / HEAD (จาก LWP: สร้างคำขอ HTTP 'HEAD')
TML

2
การคิดว่าสำหรับตัวอักษรตัวพิมพ์ใหญ่ทุกตัวจะมีตัวอักษรตัวเล็ก ๆ หนึ่งตัวและในทางกลับกันเป็นเรื่องปกติของโปรแกรมเมอร์ที่พูดภาษาอังกฤษและไม่ได้เป็นภาษาท้องถิ่น ฉันไม่ทราบว่าโซลูชันใดที่นำไปใช้กับภาษาตุรกีซึ่งมีตัวพิมพ์เล็กแบบจุดที่iตรงกับตัวพิมพ์ใหญ่ DOTTED İในขณะที่ dotless ตัวพิมพ์ใหญ่Iตรงกับตัวพิมพ์เล็ก DOTLESS ıแต่โซลูชันใด ๆ จะไม่ดี แล้วเยอรมันล่ะßซึ่งมักใช้ตัวพิมพ์ใหญ่เป็น 2 Sวินาที? และสำเนียงที่มักถูกทิ้งเมื่อใช้ตัวพิมพ์ใหญ่? และ ... ความไวของเคสลดลงด้วยอาการปวดหัวทั้งหมดนี้
Walter Tross

5

ดูระบบไฟล์ของคุณเนื่องจากมีทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่และตัวพิมพ์เล็กบน HFS ค่าเริ่มต้นคือตัวพิมพ์เล็กและตัวพิมพ์เล็กซึ่งในกรณีนี้มันไม่ได้เป็นเรื่องของ BASH มากนัก แต่เป็นระบบไฟล์พื้นฐาน คุณสามารถทดสอบสิ่งนี้ได้โดยการฟอร์แมตแท่ง USB สำรองพร้อมตัวเลือกที่คำนึงถึงตัวพิมพ์เล็กและคัดลอกไฟล์ผ่านการทดสอบซ้ำเป็นต้น



1

Bash เป็นตัวพิมพ์เล็กและใหญ่

ฉันพิมพ์ 'whoami' ลงในเทอร์มินัลและปุ่มเปิดปิดอยู่

ฉันได้รับการตอบกลับที่แตกต่างอย่างสิ้นเชิงจาก `WHOAMI '

ฉันเห็นว่ามีคำสั่ง WHOAMI ด้วย 'ซึ่ง' แต่ฉันไม่พบมันด้วย 'ls'


4
นี่ไม่ใช่เชลล์ที่ใช้ตัวพิมพ์เล็กและwhoamiใหญ่ จริงๆแล้วมันเป็นโปรแกรมเดียวกันidแต่ตรวจสอบว่าชื่อใดถูกเรียกใช้และใช้เอาต์พุตอื่น (เทียบเท่าid -un) หากเรียกใช้ภายใต้ชื่อ "whoami" ตรวจสอบว่าเป็นกรณี ๆ ไป เปรียบเทียบการส่งออกของid, WHOAMI, WhOaMi, WhoAmIฯลฯ นอกจากนี้การเปรียบเทียบการส่งออกของls -li /usr/bin/whoamiVS ls -li /usr/bin/WHOAMIและทราบว่าหมายเลขไอโหนด (สิ่งแรกที่ระบุไว้ในการส่งออก) เป็นเหมือนกัน - พวกเขากำลังสองวิธีที่แตกต่างกันของการระบุไฟล์เดียวกันแน่นอน .
Gordon Davisson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.