foo/barเป็นไดเรกทอรี (และคุณมีสิทธิ์ในการค้นหาเพื่อfooให้สามารถระบุได้ว่าfoo/barเป็นไดเรกทอรี) ในกรณีนั้นเมื่อคุณ:
ln -s new/target link
หรือ
ln -fs new/target link
ที่เข้าใจว่าเป็นการสร้างtargetsymlink ใหม่ภายในlinkไดเรกทอรี ( linkเป็นไดเรกทอรีเพราะเป็น symlink ไปยังfoo/barไดเรกทอรี) ดังนั้นคุณจะสร้าง:
foo/bar/target -> new/target
เพื่อเอาชนะสิ่งนั้น GNU lnจึงมี-Tตัวเลือกสำหรับชื่อลิงก์ที่ถูกพิจารณาว่าเป็นชื่อลิงก์เสมอและไม่ใช่เป็นไดเรกทอรีเพื่อสร้างลิงก์ (s) ระบบดังนั้นด้วย GNU ln:
ln -fsT new/target link
จะทำงาน. เหมือนก่อนหน้านี้มันจะลบlinksymlink ดั้งเดิมและสร้างใหม่ด้วยnew/targetเป็นเป้าหมาย (และกระบวนการ 'euid และ egid เป็นเจ้าของ)
GNU lnยังมี-nตัวเลือกอีกด้วย มันทำงานเหมือน-Tยกเว้นเมื่อlinkจริง ๆ แล้วเป็นไดเรกทอรีจริงซึ่งในกรณีนี้มันจะยังสร้าง symlink ภายในไดเรกทอรีนั้น (แทนที่จะล้มเหลวด้วยข้อผิดพลาด)
ตัวเลือกที่ดีที่สุดของคุณคือการลบลิงค์ออกก่อนแล้วจึงสร้างใหม่:
rm -f link && ln -s new/target link