คุณจะสร้างฮาร์ดลิงก์ที่ใช้งานได้ใน OSX ได้อย่างไร


8

ตกลงนี้มีฉันต่อสู้หัวของฉัน ใน OS X เพื่อสร้างฮาร์ดลิงก์ในหน้าต่างเทอร์มินัลคุณควรจะพิมพ์มัน ...

ln a.txt b.txt

... และนี่ควรจะสร้างการเชื่อมโยงอย่างหนักจากการa.txt b.txtง่ายและตรงไปตรงมา

เมื่อฉันรันคำสั่งนั้นแน่นอนใน Finder b.txtจะปรากฏขึ้นพร้อมa.txtกัน อย่างไรก็ตามแม้หลังจากแก้ไขa.txtโดยใช้ TextEdit b.txtก็ยังมีข้อมูลต้นฉบับอยู่! กล่าวอีกนัยหนึ่งดูเหมือนว่ามันจะทำการคัดลอกไม่ใช่ลิงก์อย่างหนักหรืออย่างอื่น

ไม่สมเหตุสมผลเลยสำหรับฉัน! มีคนบอกฉันว่าฉันทำอะไรผิดที่นี่


คุณจะแก้ไขได้อย่างไร
user151019

ฉันเพิ่งเปิดไฟล์ใน TextEdit และเพิ่มข้อความ ฉันเพิ่งตัดและคัดลอกบล็อกซ้ำแล้วซ้ำอีก ใน Finder ตอนนี้ 'A.txt' มีขนาดแตกต่างจาก 'b.txt' ซึ่งหมายความว่าพวกเขากำลังชี้ไปที่ไฟล์ (ข้อมูล) สองไฟล์ที่แตกต่างกันบนดิสก์
Mark A. Donohoe

อยากรู้อยากเห็น ฉันเพิ่งลองใช้ vi เพื่อแก้ไขไฟล์และลิงก์ยังคงอยู่ ด้วย TextEdit ในขณะที่คุณสังเกตเห็นมันแบ่ง
borrible

2
พิจารณาแก้ไขคำถามของคุณเนื่องจากข้อสมมติฐานของคุณผิด
Daniel Beck

คำตอบนั้นแสดงให้เห็นอย่างชัดเจนว่าการเชื่อมโยงฮาร์ดไดรฟ์นั้นใช้งานได้จริง ชื่อแนะนำเป็นอย่างอื่น มันเป็นเพียงพฤติกรรมการแทนที่ไฟล์ของแอปพลิเคชั่น OS X ที่กำจัดฮาร์ดลิงก์ของคุณซึ่งเป็นปัญหาที่แตกต่างกันโดยสิ้นเชิง
Daniel Beck

คำตอบ:


14

สาเหตุของพฤติกรรมนี้ค่อนข้างตรงไปตรงมาและเกี่ยวข้องกับวิธีบันทึกไฟล์ในแอปพลิเคชัน Mac OS X ส่วนใหญ่: แบบทั่วไป

สิ่งที่เกิดขึ้นคือสำเนาไฟล์ถูกเขียนไปยังพื้นที่จัดเก็บชั่วคราวแล้วย้ายไปแทนที่ไฟล์ดั้งเดิม

นี่เป็นการเชื่อมโยงที่ค่อนข้างเป็นธรรมชาติ


ใช่ ... ดูเหมือนว่าจะเป็นแอพ OS X ที่ใช้วิธีการใช้เอกสารเป็นหลักของ Cocoa นั่นมันเหม็นจริงๆ! ฉันจะดูว่าฉันสามารถใช้การเชื่อมโยง soft (aliases) แทนได้หรือไม่ ไม่แน่ใจว่าเป็นเพราะฉันแก้ไข DefaultKeyBinding.dict ที่ระบบใช้ หวังว่ามันจะฉลาดพอที่จะติดตามลิงก์ เราจะเห็น!
Mark A. Donohoe

จริงอยู่ นี่คือสาเหตุที่การแก้ไขไฟล์การกำหนดค่าระบบ Unix-y เป็นเรื่องยุ่งยากในตัวแก้ไข OS X GUI และง่ายต่อการทำสำเร็จvi- ไม่เพียงพอที่จะตั้งค่าสิทธิ์การเขียนในไฟล์คุณต้องมีโฟลเดอร์ด้วย!
Daniel Beck

BTW ซอฟต์ลิงค์ไม่ทำงานดังนั้นฉันเดาว่าฉันกลับไปที่การคัดลอกไฟล์สคริปต์หลังจากบันทึกไปยังสถานที่ทั้งหมดที่ฉันต้องการ Stinx!
Mark A. Donohoe

@MarqueIV: symlink อาจทำงานได้
Williham Totland

นั่นคือสิ่งที่ฉันหมายถึง. มีคำผิด โดยเฉพาะสำหรับการผูกคีย์ของ OS X มันคาดว่าไฟล์จริงจะอยู่ในสถานที่เฉพาะและไม่ทำงานกับ symlink อย่างไรก็ตามมันทำงานกับฮาร์ดลิงก์ได้อย่างไรก็ตามตามที่ระบุเนื่องจากตัวแก้ไขเป็นเอกสารที่ใช้ Cocoa ฉันไม่สามารถแก้ไขไฟล์โดยไม่ทำให้ลิงก์แตกดังนั้นจึงดูเหมือนว่าฉันต้องหันไปคัดลอกด้วยตนเอง (หรือตั้งค่าใหม่) ตั้งค่าฮาร์ดลิงก์) หลังจากฉันแก้ไขเอกสาร ไม่ดีที่สุด แต่ไม่มีสคริปต์แบบด่วนจะไม่แก้ไข
Mark A. Donohoe

3

หากปรากฏขึ้นให้ดูรายการนี้จาก superuserว่าเป็นคุณลักษณะของ TextEdit ดังนั้นวิธีการปกติในการสร้างฮาร์ดลิงก์นั้นถูกต้อง แต่ TextEdit จะทำงานในลักษณะที่จะทำลายสิ่งนี้ (ลิงก์บอกว่าสร้างไฟล์ใหม่และย้ายไฟล์นั้นไปไว้เหนือไฟล์เก่าหลังจากแก้ไขแล้ว)


ใช่ ... เพิ่งเห็นสิ่งนั้นบน SU ทันทีที่คุณโพสต์สิ่งนี้ มันไม่ใช่แค่ TextEdit เช่นกัน ดูเหมือนว่าจะเป็นแอพที่ใช้เอกสารทั้งหมด เหม็นเพราะนี่หมายความว่าฉันไม่สามารถใช้เครื่องมือที่ใช้เอกสารเพื่อแก้ไขไฟล์ที่เชื่อมโยงอย่างหนัก
Mark A. Donohoe

มันไม่ได้เป็นเพียง TextEdit แต่เป็นแอพพลิเคชั่นที่ใช้ Cocoa ทั้งหมดที่ใช้สถาปัตยกรรมเอกสารซึ่งส่วนใหญ่ทำ
Mark A. Donohoe

2

โปรดทราบว่า emacs ยังแสดงพฤติกรรมนี้ (น่าตกใจ!) โดยค่าเริ่มต้น (ในระบบยูนิกซ์ทั้งหมด) คิดว่าสาเหตุนั้นแตกต่างกันเล็กน้อย (เป็นสิ่งที่ "ปลอดภัย" ที่ต้องทำในสถานการณ์พื้นที่ดิสก์ที่ต่ำมาก) อย่างไรก็ตามสามารถกำหนดค่าได้หลายวิธี

ดูเอกสารประกอบสำหรับmake-backup-files(ใช้C-h v make-backup-files) และสำหรับ

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