คุณสร้างไฟล์เดียว 'ปรากฏ' ให้อยู่ในหลายโฟลเดอร์ในเวลาเดียวกันได้อย่างไร
หากคุณมีโฟลเดอร์จำนวนมากที่ตั้งค่าไว้สำหรับงานของคุณและจำเป็นต้องใช้ไฟล์สคริปต์เดียวกันทั้งหมดในระหว่างวันทำงานวิธีที่ง่ายที่สุดในการทำสิ่งเหล่านั้นให้สำเร็จคือการทำสำเนาและวางเป็นจำนวนมาก? บทความถามตอบ SuperUser ในวันนี้มีคำตอบและคำแนะนำที่เป็นประโยชน์สำหรับผู้อ่านที่หงุดหงิด.
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
มารยาทภาพหน้าจอของ csaveanu (Flickr).
คำถาม
ตัวอ่าน SuperUser Elliot กำลังมองหาวิธีที่ดีที่สุดที่จะให้ไฟล์เดียวกันปรากฏในหลาย ๆ โฟลเดอร์ในเวลาเดียวกัน:
ฉันมี 50+ โฟลเดอร์แต่ละโฟลเดอร์มีข้อมูลจำนวนมากที่ต้องดำเนินการ พวกเขาทั้งหมดจะถูกประมวลผลโดยใช้รหัสที่แน่นอนเดียวกันใช้ os.path.dirname (os.path.realpath (ไฟล์)) เพื่อให้ได้ไดเรกทอรีที่มีสคริปต์ python อยู่ดังนั้นผู้ใช้จึงไม่จำเป็นต้องทำการแก้ไขด้วยตนเองพวกเขาเพียงแค่ดับเบิลคลิก.
ฉันต้องการให้สคริปต์ปรากฏราวกับว่าอยู่ในแต่ละโฟลเดอร์ในขณะที่อยู่ในที่เดียวเท่านั้นจริง ๆ เพื่อให้ฉันสามารถแก้ไขได้หนึ่งครั้งจากนั้นเมื่อเรียกใช้จากตำแหน่งใด ๆ เหล่านี้จะมีเส้นทางโฟลเดอร์ที่ถูกต้อง อีกทางเลือกหนึ่งคือการแก้ไขต้นแบบจากนั้นวางมันทีละหนึ่งโฟลเดอร์ผ่านโฟลเดอร์ทั้งหมด 50+ รายการทุกครั้งที่ฉันอัปเดตโค้ดซึ่งน่าเบื่อมากและเกิดข้อผิดพลาดได้ง่าย บน Linux ฉันสามารถตั้งค่านี้ด้วยลิงก์สัญลักษณ์ แต่ฉันไม่สามารถหาวิธีที่จะทำกับ Windows ได้.
หรืออีกวิธีหนึ่งในการวางไฟล์ลงในไดเรกทอรีเป้าหมายทั้งหมดในคราวเดียวแทนที่จะทำทีละไฟล์จะบรรลุเป้าหมายเดียวกัน.
มีวิธีการทำเช่นนี้มากกว่าการคัดลอกและวางไฟล์สคริปต์ทีละโฟลเดอร์?
คำตอบ
ผู้สนับสนุน SuperUser gronostaj มีคำตอบสำหรับเรา:
คุณต้องการ ลิงก์สัญลักษณ์ หรือ ฮาร์ดลิงก์.
ลิงก์สัญลักษณ์ (หรือ symlinks สำหรับสั้น ๆ ) ค่อนข้างคล้ายกับทางลัด: มีไฟล์จริงหนึ่งไฟล์และมีการอ้างอิงหลายรายการ (symlinks) กับมัน พวกเขายังมีลูกศรเล็ก ๆ ที่ไอคอน ไม่เหมือนทางลัด, symlinks สามารถมีส่วนขยายใด ๆ.
ลิงค์ยาก ผูกไฟล์บนฮาร์ดไดรฟ์ไปยังตำแหน่งในแผนผังไดเรกทอรี แต่ละไฟล์มีอย่างน้อยหนึ่งไฟล์ ฮาร์ดลิงก์, มิฉะนั้นจะไม่มีอยู่ในไดเรกทอรีใด ๆ หากไฟล์มีหลาย ๆ ลิงค์ยาก, ไฟล์ต้นฉบับไม่สามารถแยกความแตกต่างจากไฟล์อื่นและมีไฟล์อยู่ในที่เดียวเท่านั้น.
ทั้งสองมีข้อ จำกัด :
- ซอฟต์แวร์บางตัวไม่เล่นอย่างดี symlinks.
- การลบไฟล์ต้นฉบับจะทำให้ไฟล์ทั้งหมดนั้นหายไป symlinks แตก.
- คุณไม่สามารถ ฮาร์ดลิงก์ โฟลเดอร์ (แต่คุณสามารถสร้าง Directory Junction ได้หาก symlink ไม่พอ).
- การสร้างข้ามพาร์ติชัน ลิงค์ยาก เป็นไปไม่ได้.
symlinks มักจะเพียงพอ.
วิธีสร้าง Symlink หรือ Hard Link:
1. เรียกใช้งานบรรทัดคำสั่งพิเศษ: กดปุ่ม รหัส Windows, ชนิด cmd, จากนั้นกด Ctrl + Shift + Enter.
2. ออกคำสั่ง mklink:
- mklink link_name link_target สำหรับไฟล์ symlink
- mklink / d link_name link_target สำหรับโฟลเดอร์ symlink
- mklink / h link_name link_target สำหรับไฟล์ ฮาร์ดลิงก์
- mklink / j link_name link_target สำหรับ แยกไดเรกทอรี
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.