বর্তমান ডিরেক্টরি সম্পর্কিত একটি প্রতীকী লিঙ্ক তৈরি করুন


110

আমি আমার হোম ডিরেক্টরিতে একটি প্রতীকী লিঙ্ক তৈরি করার চেষ্টা করছি যা আমার বাহ্যিক এইচডিডি-র একটি ডিরেক্টরিকে নির্দেশ করে।

যখন আমি এটির মতো এটি নির্দিষ্ট করি তখন এটি কার্যকর হয়:

cd ~
ln -s /run/media/name/exhdd/Data/ Data

তবে এটি চেষ্টা করার সময় এটি একটি ত্রুটিযুক্ত লিঙ্ক তৈরি করে:

cd /run/media/name/exhdd
ln -s Data/ ~/Data

এটি এমন লিঙ্ক তৈরি করে যা আমি প্রবেশ করতে পারি না cd

আমি যখন চেষ্টা করি তখন বাশ অভিযোগ করে:

bash: cd: Data: Too many levels of symbolic links

lsরঙিন আউটপুট প্রদর্শনের জন্য সেট করা হলে আমার বাড়ির ডেটা প্রতীকী লিঙ্কটিও লাল রঙিন হয় ।

ইহা কি জন্য ঘটিতেছে? আমি কীভাবে এই পদ্ধতিতে একটি লিঙ্ক তৈরি করতে পারি? (আমি অন্য ডিরেক্টরিতে আমার ওয়ার্কিং ডিরেক্টরিতে একটি ডিরেক্টরিতে একটি সিলিমিংক তৈরি করতে চাই।)


সম্পাদনা: অনুযায়ী এই Stackoverflow উত্তর, যদি দ্বিতীয় যুক্তি (আমার ক্ষেত্রে যে ~ / ডেটা হতে চাই) ইতিমধ্যে বিদ্যমান এবং একটি ডিরেক্টরি হয়, lnলক্ষ্য করার জন্য একটি সিমবলিক লিঙ্ক তৈরি করবে ভিতরে যে ডিরেক্টরি।

তবে, আমি একই সমস্যাটি নিয়ে অভিজ্ঞতা করছি:

ln -s Data/ ~/

7
কেবল একটি এলোমেলো টিপ: cd ~সাধারণত একই রকম cd

3
ls -l ~/Data"লাল" লিঙ্কটি কী ছিল তা আপনাকে দেখতে সহায়তা করে।
এমএসডাব্লু

হুঁ, আমি জানতাম না যে আমি এটি করতে পারি, ধন্যবাদ। আমি catএটি চেষ্টা করে দেখতে পেয়েছি, তবে ফলাফল কী হয়েছিল তা আমি ভুলে গিয়েছিলাম ... (আমি তাদের মুহূর্তে বাড়িতে নেই।)
jcora

সাইড নোট, আপনি শুধুমাত্র সমস্ত ফাইল, Dir এবং একটি বিশেষ ফোল্ডার ভিতরে subdir একটি সিমবলিক লিঙ্ক তৈরি করতে বলুন, ভিতরে সব আইটেম চান অনুমান করা /run/media/name/exhdd/Data/থেকে Dataতারপর নিম্নলিখিত ব্যবহারln -s /run/media/name/exhdd/Data/* Data
user2555595

উত্তর:


115

এখানে কি ঘটছে। আপনি যদি কোনও আপেক্ষিক পথের সাথে একটি সিমলিংক তৈরি করেন তবে সিমলিংকটি আপেক্ষিক। সিমলিংকগুলি আপনি যে রাস্তাগুলি দিয়েছেন সেগুলি কেবল সঞ্চয় করে। তারা কখনই পূর্ণ পথের পথগুলিকে সমাধান করে না। চলমান

$ pwd
/usr/bin
$ ln -s ls /usr/bin/ls2

নামে একজন সিমবলিক লিঙ্ক তৈরি করে ls2/usr/binথেকে ls(যেমন। /usr/bin/ls) যে ডিরেক্টরি সিমবলিক লিঙ্ক রয়েছে (আপেক্ষিক /usr/bin)। উপরের কমান্ডটি যে কোনও ডিরেক্টরি থেকে একটি কার্যকরী সিমলিংক তৈরি করবে।

$ pwd
/home/me
$ ln -s ls /usr/bin/ls2

আপনি যদি সিমলিংকটিকে অন্য কোনও ডিরেক্টরিতে স্থানান্তরিত করেন তবে এটি ফাইলটির দিকে নির্দেশ করা বন্ধ করবে /usr/bin/ls

আপনি একটি সিমিলিংক তৈরি করছেন যা Dataএটির নামকরণ করে Data। এটি নিজের দিকে ইশারা করছে। আপনাকে ডিরেক্টরিটির নিখুঁত পাথ সহ একটি সিমিলিংক তৈরি করতে হবে।

ln -s "$(realpath Data)" ~/Data

14

আমি একই সমস্যা ছিল। গুগল এই উত্তরটি নিয়েছে তবে সহজ সমাধানটি এখানে নথিভুক্ত করা হয়নি:

ln -sT 

-T কৌতুক করে

ম্যান এলএন:

-T, --no-target-directory
    treat LINK_NAME as a normal file always

কেবল এখানে এটি যুক্ত করা যাতে একই প্রশ্নযুক্ত যে কেউ এটি খুঁজে পেতে পারে :)


9

lnআপেক্ষিক পাথের সাথে আচরণ অযৌক্তিক। বিচক্ষণতা পুনরুদ্ধার করতে, -rপতাকাটি ব্যবহার করুন ।

cd /run/media/name/exhdd
ln -sr Data/ ~/Data

ব্যাখ্যা:

   -r, --relative
          create symbolic links relative to link location

এর অর্থ হ'ল এটি lnযা আপনি প্রত্যাশা করেন তা করবে। এটা তোলে অ্যাকাউন্ট বর্তমান ডিরেক্টরির, কি ডিরেক্টরির লক্ষ্য রয়েছে নিতে হবে, এবং গঠন করা ডিরেক্টরিতে অবশ্যই এমন একটি পথ আপেক্ষিক লিংক থাকবে। ডিফল্ট আচরণ (ছাড়া -r) প্রথম প্যারামিটার (লক্ষ্য) ব্যাখ্যা করা যায় আক্ষরিক , ইন কোন ক্ষেত্রে আপনাকে নিজেরাই পথ তৈরি করতে হবে যাতে এটি লিঙ্কের ডিরেক্টরিতে বৈধ হয়।

বিকল্পভাবে, @ স্মিথ জন দ্বারা উল্লিখিত একটি নিখুঁত পাথ ব্যবহার করুন

ln -s "$(realpath Data)" ~/Data #bash shell

অথবা

ln -s "(realpath Data)" ~/Data #fish shell

-1

খুব সহজভাবে আপনি কোনও ফোল্ডারের জন্য লিঙ্ক তৈরি করতে পারেন। আমার আদেশ দেখুন

ln -s / home / targatedfolder / var / www / html / link_name

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.