টার্মিনালে প্রতীকী লিঙ্কের সম্পূর্ণ সমাধান হওয়া পথ কীভাবে পাবেন?


47

আমার ল্যাপটপে পাইথন ইন্সটলেশনগুলির জট বেঁধেছি। আমি এক্সিকিউটেবলের দিকে তাকিয়ে ছিলাম /usr/local/binএবং এগুলি সমস্ত প্রতীকী লিঙ্ক../../../Library......

এটি ঘিরে কিছু অদ্ভুত আচরণ রয়েছে। যদি আমি ls -lhaGদেখতে পাই --->এবং সিমলিংকের ডান দিকের আপেক্ষিক পথটি:

lrwxr-xr-x  1 root  wheel    69B Dec  7 22:29 python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.1/bin/python3

তবে, সেই পথটি সমাধান করার জন্য এবং পাইথন 3-এ প্রকৃত পথ প্রদর্শন করার জন্য আমি কোনও কমান্ড লাইন সরঞ্জাম পেয়েছি বলে মনে হচ্ছে না। এটির ব্যবহার pwd -Pএবং findইউটিলিটি সম্পর্কে আমি এখানে এবং সেখানে কিছু জোয়ার খুঁজে পেয়েছি । সমস্যাটি হ'ল এইগুলি ওএস এক্সে যেভাবে লিনাক্সে কাজ করার জন্য তাদের বর্ণনা করে (যেমন প্রতীকী লিঙ্কের পুরো পথটি আউটপুট করে) কাজ করে না বলে মনে হয়। তারা কেবল আমার জন্য প্রতীকী লিঙ্কগুলির পথ মুদ্রণ করে:

FantasticMrFox:bin robert$ pwd -P python3
/usr/local/bin
FantasticMrFox:bin robert$ find `pwd -P` -name python3
/usr/local/bin/python3

এখানে কি চলছে সে সম্পর্কে কোনও ধারণা?

উত্তর:


36

আমি মনে করি pwd -Pএবং readlinkএই কাজের জন্য আপনার বন্ধু হতে চলেছি।

" আমি কীভাবে ম্যাকের উপর জিএনইউ'র রিডলিংক-এর আচরণ পেতে পারি? " একটি সহজ সংস্থান।

pwd -P কেবলমাত্র যদি আপনি সিমলিংক ডিরেক্টরিতে থাকেন তবে কাজ করে:

14:07:13 jason@mac ~ $ cd bin
14:08:08 jason@mac bin $ pwd -P
/Users/jason/Applications

readlink লক্ষ্য নির্দিষ্ট করে কাজ করে (সুতরাং এটি ফাইলগুলির বিরুদ্ধে ব্যবহার করা যেতে পারে):

14:09:03 jason@mac ~ $ readlink bin
Applications

14:09:34 jason@mac ~ $ readlink /var
private/var

এর আউটপুট নির্দিষ্ট লক্ষ্যটির পিতামাতার সাথে readlinkসম্পর্কিত বলে মনে হচ্ছে ।

উদা: অভিভাবক /varহয় /, তাই private/var, সঠিক আপেক্ষিক /। আমার উপরের উদাহরণ অনুসারে bin -> Applications, উভয়ই আমার হোম ডিরেক্টরিতে রয়েছে, আমি যেখানে এটি চালাই না কেন, আউটপুট একই।


3
রিডলিঙ্কটি সেই ক্ষেত্রে যেখানে পুনরায় সংলগ্ন হয় না যেখানে সিমলিংকটি অন্যান্য সিমলিংকের দিকে নির্দেশ করে। আমি
জেমস রথ

এটি পছন্দসই জিনিসের সাথে নির্দিষ্ট জিনিসগুলিতে সিমলিংকগুলি সম্পর্কে ওপির প্রশ্নের সাথে কাজ করে না বলে মনে হয় ../..
ব্যবহারকারী 124384

18

এটি পুনরাবৃত্তির সমাধান করে এবং একটি নিখুঁত পাথ ফেরত দেয়:

$ python
>>> import os
>>> os.path.realpath("/usr/local/bin/python3")

বা অ-ইন্টারেক্টিভ সংস্করণ:

python -c "import os; print(os.path.realpath('/usr/local/bin/python3'))"

1
যখন বিল্টিনগুলি আপনাকে ব্যর্থ করে, স্ক্রিপ্টিংটি অবলম্বন করুন ... দুর্দান্ত। নিশ্চিতভাবে কাজ করে:> $ python -c "import os; print os.path.realpath('bin')"> /Users/jason/Applications। আমি ম্যাক এবং * নিক্স সিস্টেম জুড়ে একটি ইউনিফাইড .Bash_profile / AT PATH রাখতে ~ / বিন ~ / অ্যাপ্লিকেশনগুলিতে সিএমিলিং করি।
জেসন সালাজ 10'10

1
এটি দুর্দান্ত এবং এটি ভাল কাজ করে! আমি এটি উত্তর হিসাবে চিহ্নিত করব তবে এ ছাড়া শেলটিতে এটি করার মতো কোনও উপায় আছে কিনা তা আপনি জানতে চাইলে অন্যান্য * নিক্স সিস্টেমে আপনি করতে পারেন।
রবার্ট এস সিয়াসসিও 21

1
আপনি অন্যান্য * নিক্স সিস্টেমে এটি কীভাবে করবেন? এছাড়াও আজকাল লিনাক্স সিস্টেমে পাইথন প্রায় সর্বজনীনভাবে ইনস্টল করা আছে।
জেসন সালাজ

@vxjasonxv যে জিনিসটি আমি এর সাথে জগাখিচুড়ি করার সময় পেয়েছি সে সম্পর্কে আমি পরামর্শ দিয়েছি যে আমি যে প্রশ্ন pwdfindনির্দেশগুলি নিয়ে প্রশ্ন করেছি সেগুলি ওএস এক্স ব্যতীত অন্যান্য সিস্টেমে সম্পূর্ণ পথটি সমাধান করে। যদিও আমি সেগুলি পরীক্ষা করে দেখিনি।
রবার্ট এস সিয়াস্কিও


1

জিএনইউ কোর্টিলস -৮.১৫ ২০১২ সালে একটি নতুন কমান্ড-লাইন সরঞ্জাম যুক্ত করেছে realpathযা আপনি যা চান তা করে: এটি প্রতীকী লিঙ্কগুলির শৃঙ্খলা সমাধান করে এবং ফলাফলকে পরম (ডিফল্ট) বা আপেক্ষিক পথ হিসাবে আউটপুট করে।

অ্যাপল এখনও realpathম্যাকোজে অন্তর্ভুক্ত নেই (তারা দুঃখজনকভাবে সমস্ত জিপিএলভি 3 সরঞ্জামগুলি বাদ দেয়) তবে আপনি সহজেই এটি ইনস্টল করতে পারেন, যেমন হোমব্রিউ: ব্যবহার করে brew install coreutils


-2

আপনি ব্যবহার করতে পারেন readlink -f। এটি সমস্ত লিঙ্কের মাধ্যমে পুনরাবৃত্তি করে। ধরা যাক লিঙ্কটি এমন কোনও পথে যা আরও একটি লিঙ্ক। আপনি চূড়ান্ত পরম পথ পেতে চাই।


তাই না? আপনি ঠিক কি বলছেন?
রব

@ দিনেশ শেহরা যা বলছেন তার সঠিক বাক্য গঠন read link -f python3উদাহরণ হিসাবে ব্যবহার করা এবং এটি আপনার জন্য পুরো প্রতীকী লিঙ্কটি বাফার করবে।
দানিজেল-জেমস ডব্লিউ

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