it-swarm.asia

كيفية ربط ملف في لينكس؟

أريد عمل رابط رمزي في نظام Linux. لقد كتبت أمر bash هذا حيث يكون المسار الأول هو المجلد الذي أريد الارتباط به والمسار الثاني هو المصدر المترجم.

ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal 

هل هذا صحيح؟

1766
chrissygormley

لإنشاء رابط جديد (سيفشل في حالة وجود رمز ارتباط بالفعل):

ln -s /path/to/file /path/to/symlink

لإنشاء أو تحديث رابط:

ln -sf /path/to/file /path/to/symlink
3444
hsz
ln -s TARGET LINK_NAME

حيث -s يجعلها رمزية.

278
cyborg
ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME
268
codaddict
ln -s target linkName

يمكنك إلقاء نظرة على صفحة الرجل هنا:

http://linux.die.net/man/1/ln

88
rui

(لأن صورة ASCII تساوي ألف حرف.)

قد يكون السهم ذاكرًا مفيدًا ، خاصة وأن هذا يبدو تمامًا تقريبًا في إيماكس.

وصورة كبيرة حتى لا تتشوش مع إصدار Windows

لينكس:

ln -s target <- linkName

شبابيك:

mklink linkName -> target

هل يمكن أن ننظر أيضا في هذه

ln -s "to-here" <- "from-here"
mklink "from-here" -> "to-here"

لا ينبغي أن يكون from-here موجودًا بعد ، بل يجب إنشاؤه ، بينما يجب أن يكون to-here موجودًا بالفعل (IIRC).

(دائمًا ما أكون مختلطًا حول ما إذا كان يجب أن تتضمن الأوامر والوسيطات المختلفة موقعًا موجودًا مسبقًا ، أو موقعًا يجب إنشاؤه.)

تحرير: لا يزال غرق ببطء بالنسبة لي. لدي طريقة أخرى لقد كتبت في ملاحظاتي.

ln -s (target exists) (link is made)
mklink (link is made) (target exists)
78
Brady Trainor
ln -s source_file target_file

http://unixhelp.ed.ac.uk/CGI/man-cgi؟ln

24
Rob M

على السؤال الأصلي:


'ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal'

سيؤدي هذا بالفعل إلى إنشاء ارتباط رمزي (-s) من الملف/الدليل:

<basebuild>/IpDome-kernel/kernel

إلى الرابط الجديد الخاص بك

/home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal

إليك بعض الطرق التي تساعدك على تذكر ما يلي:

أولاً ، هناك صفحة الرجل لـ ln . يمكنك الوصول إلى ذلك من خلال البحث عن "man ln" في google ، أو مجرد فتح نافذة طرفية واكتب man ln وستحصل على نفس المعلومات. تنص صفحة الرجل بوضوح:

ln [OPTION] ... [-T] TARGET LINK_NAME (النموذج الأول)


إذا كان عليك البحث عن صفحة رجل أو قراءتها في كل مرة ليس لك ، فقد يكون لديك وقت أسهل في تذكر أن جميع أوامر nix تعمل بنفس الطريقة :

cp /file/that/exists /location/for/new/file
mv /file/that/exists /location/its/moving/to
ln /file/that/exists /the/new/link

cp بنسخ ملف موجود حاليًا (الوسيطة الأولى) إلى ملف جديد (الوسيطة الثانية) . 
mv ينقل ملف موجود حاليًا (الوسيطة الأولى) إلى مكان جديد (الوسيطة الثانية)

بالمثل ln يربط ملف موجود حاليًا (الوسيطة الأولى) إلى ارتباط جديد (الوسيطة الثانية)*


الخيار الأخير الذي أود أن أقترحه هو أنه يمكنك إنشاء صفحات خاصة بك للرجل يسهل قراءتها ويسهل عليك العثور عليها/تذكرها. ما عليك سوى إعداد نص شل بسيط يمنحك التلميح الذي تحتاجه. فمثلا:

في ملف .bash_aliases الخاص بك ، يمكنك وضع شيء مثل:

commandsfx() {
    echo "Symlink:  ln -s /path/to/file /path/to/symlink"
    echo "Copy:     cp /file/to/copy /destination/to/send/copy"
}

alias 'cmds'=commandsfx

ثم عند الحاجة ، من سطر الأوامر فقط اكتب cmds وستسترجع بناء الجملة الصحيح بطريقة يمكنك قراءتها وفهمها بسرعة. يمكنك جعل هذه الوظائف متقدمة كما تريد الحصول على ما هي المعلومات التي تحتاجها ، الأمر متروك لك. يمكنك حتى جعلها تفاعلية حتى يكون عليك فقط اتباع التعليمات .. مثل:

makesymlink() {
    echo "Symlink name:"
    read sym
    echo "File to link to:"
    read fil
    ln -s $fil $sym
}

alias 'symlink'=makesymlink

* - من الواضح أنه يمكنهم جميعًا اتخاذ معايير مختلفة والقيام بأشياء مختلفة ، ويمكنهم العمل على الملفات وكذلك الدلائل ... لكن الفرضية هي نفسها
examples - أمثلة باستخدام باش شل

17
Mike
ln [-Ffhinsv] source_file [target_file]

    link, ln -- make links

        -s    Create a symbolic link.

    A symbolic link contains the name of the file to which it is linked. 

    An ln command appeared in Version 1 AT&T UNIX.
16
miku

إنشاء روابط رمزية أو روابط لينة على لينكس:

افتح Bash Prompt واكتب الأمر المذكور أدناه لإنشاء رابط رمزي إلى ملفك:

أ) انتقل إلى المجلد حيث تريد إنشاء رابط ضعيف واكتب الأمر كما هو مذكور أدناه :

$ ln -s (path-to-file) (symbolic-link-to-file)

$ ln -s /home/user/file new-file

B) انتقل إلى مسار اسم الملف الجديد الخاص بك ونوع :

$ ls -lrt (To see if the new-file is linked to the file or not)

مثال:

ls -lrt

lrwxrwxrwx 1 user user 24 Aug 6 23:40 new-file -> /home/user/file

Note: Where, A -> B Means, A is symbolically linked to B

12
Ankit Raj

ln -s sourcepath linkpathname

ملحوظة:

-s يجعل الروابط الرمزية بدلاً من الروابط الثابتة

11
simranjeet

إذا كنت في الدليل حيث تريد إنشاء symlink ، فتجاهل المسار الثاني.

cd myfolder
ln -s target

سيقوم بإنشاء ارتباط بين target داخل myfolder.

بناء الجملة العام

ln -s TARGET LINK_NAME
10
Fizer Khan

هذا هو Stack Overflow لذلك أفترض أنك تريد رمزًا:

تفترض جميع التعليمات البرمجية التالية أنك تريد إنشاء رابط رمزي باسم /tmp/link الذي يرتبط بـ /tmp/realfile.

الحذر: على الرغم من أن هذا الرمز يبحث عن الأخطاء ، إلا أنه لا يتحقق من وجود /tmp/realfile بالفعل! هذا لأن رابط ميت لا يزال صالحًا ووفقًا لرمزك ، فقد ترغب (نادراً) في إنشاء الرابط قبل الملف الحقيقي.


قذيفة (باش ، zsh ، ...)

#!/bin/sh
ln -s /tmp/realfile /tmp/link

حقيقي بسيط ، تمامًا كما تفعل في سطر الأوامر (وهو Shell). تتم معالجة جميع الأخطاء بواسطة مترجم Shell. يفترض هذا الرمز أن لديك مترجم Shell يعمل على /bin/sh.

إذا لزم الأمر ، فلا يزال بإمكانك تنفيذ معالجة الأخطاء الخاصة بك باستخدام المتغير $? والذي سيتم تعيينه فقط على 0 إذا تم إنشاء الرابط بنجاح.

C و C++

#include <unistd.h>
#include <stdio.h>

int main () {
  if( symlink("/tmp/realfile", "/tmp/link") != 0 )
    perror("Can't create the symlink");
}

symlink بإرجاع 0 فقط عندما يمكن إنشاء الرابط. في حالات أخرى ، أستخدم perror لمعرفة المزيد حول المشكلة.

بيرل

#!/usr/bin/Perl
if( symlink("/tmp/realfile", "/tmp/link") != 1) {
  print STDERR "Can't create the symlink: $!\n"
}

يفترض هذا الرمز أن لديك مترجم Perl 5 في /usr/bin/Perl. symlink بإرجاع 1 فقط إذا كان يمكن إنشاء الرابط. في حالات أخرى ، أقوم بطباعة سبب الفشل في إخراج الخطأ القياسي.

9
Garo

أرغب في تقديم نسخة بسيطة باللغة الإنجليزية من الأوصاف المقدمة بالفعل.

 ln -s  /path-text/of-symbolic-link  /path/to/file-to-hold-that-text

يقوم الأمر "ln" بإنشاء ارتباط FILE ، ويحدد "-s" أن نوع الارتباط سيكون رمزيًا. يمكن العثور على مثال لملف الارتباط الرمزي في تثبيت WINE (باستخدام "ls -la" لإظهار سطر واحد من محتويات الدليل):

 lrwxrwxrwx 1 me power 11 Jan  1 00:01 a: -> /mnt/floppy

توجد معلومات معلومات الملف القياسية في اليسار (على الرغم من ملاحظة أن الحرف الأول هو "l" لـ "link") ؛ اسم الملف هو "a:" و "->" يشير أيضًا إلى أن الملف هو رابط. إنها تخبر WINE بشكل أساسي كيف سيتم ربط Windows "Drive A:" بمحرك أقراص مرنة في Linux. لإنشاء رابط رمزي SIMILAR فعليًا لذلك (في الدليل الحالي ، والقيام بهذا في الواقع لـ WINE أكثر تعقيدًا ؛ استخدم الأداة المساعدة "winecfg"):

 ln -s  /mnt/floppy  a:   //will not work if file a: already exists
7
vernonner3voltazim

لإنشاء رابط رمزي/ارتباط ضعيف ، استخدم:

ln -s {source-filename} {symbolic-filename}

على سبيل المثال:

ln -s file1 link1
6
Prem S

هناك نوعان من الروابط:

الروابط الرمزية: تشير إلى مسار رمزي يشير إلى الموقع التجريدي لملف آخر

الروابط الثابتة: ارجع إلى الموقع المحدد للبيانات الفعلية.

في حالة الارتباطات الخاصة بك:

ln -s source target

يمكنك الرجوع إلى http://man7.org/linux/man-pages/man7/symlink.7.html

يمكنك إنشاء روابط صعبة للغاية

لا يمكن تمييز ارتباط ثابت إلى ملف من إدخال الدليل الأصلي؛ أي تغييرات على ملف مستقلة بشكل فعال عن الاسم المستخدم للإشارة إلى الملف. قد لا تشير الارتباطات الثابتة عادة إلى الدلائل وقد لا تمتد أنظمة الملفات.

ln source link
3
wpp

أجد بعض الخلط بين المصطلحين "الهدف" و "الدليل" في معلومات الرجل.

الهدف هو المجلد الذي نربطه بالدليل والارتباط بالدليل الفعلي (وليس الدليل الذي سترتبط به) ، إذا كان أي شخص يعاني من نفس الالتباس ، فلا تشعر بالوحدة.

هذا هو تفسيري لإنشاء Symlink (في نظام التشغيل Linux):

ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK

يمكنك الانتقال إلى المجلد الذي تريد إنشاء الارتباط به وتشغيل الأمر أو تحديد المسار الكامل للارتباط الخاص بك بدلاً من NAME-OF-YOUR-SYMLINK.

cd /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK

OR

ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER/NAME-OF-YOUR-SYMLINK

آمل أن يكون هذا يساعد أولئك (لا يزال) في حيرة من أمرهم.

2
mmmdearte

الروابط هي في الأساس من نوعين:

الروابط الرمزية (Soft): رابط إلى مسار رمزي يشير إلى الموقع التجريدي لملف آخر

الروابط الثابتة: رابط إلى الموقع المحدد للبيانات الفعلية.

مثال 1: ln/root/file1/root/file2

أعلاه مثال على الرابط الثابت حيث يمكنك الحصول على نسخة من بياناتك الفعلية.

مثال 2: ln -s /path/to/file1.txt /path/to/file2.txt

سيقوم الأمر أعلاه بإنشاء ارتباط رمزي إلى file1.txt.

إذا قمت بحذف ملف مصدر مما لن يكون لديك أي شيء إلى الوجهة في Soft

عندما تفعل :

ليرة سورية

سترى أن هناك رقم inode مختلف للروابط.

لمزيد من التفاصيل ، يمكنك قراءة man of ln على نظام التشغيل linux.

شكر

2
Prabhat Singh