"রিয়েলপথ" এবং "রিডলিঙ্ক -ফ" এর মধ্যে পার্থক্য কী?


68

আমি realpathকমান্ড সম্পর্কে অনেক পড়েছি এবং এটি readlink -fএখন প্রস্তাবিত হওয়ার সাথে কীভাবে হ্রাস পেয়েছে । আমি কিছু জায়গায় এটিও দেখেছি যে রিয়েলপথটি চালু হওয়ার কারণটি ছিল রিডলিঙ্কে এই জাতীয় কার্যকারিতার অভাব এবং এটি একবার চালু হয়ে গেলে, রিয়েলপথের আর প্রয়োজন হয় না এবং বেশিরভাগ ওএস বিক্রেতাদের দ্বারা এর সমর্থন বন্ধ করে দেওয়া হয়।

আমার প্রশ্নের কারণ হ'ল আমি অনেক লোককে readlink -f"বেশ কিছুটা অনুরূপ" কমান্ড হিসাবে সুপারিশ করতে দেখেছি realpath, এবং এটিই আমাকে বিরক্ত করছে, কারণ "" বেশ কিছুটা অনুরূপ "অংশটি কেউ ব্যাখ্যা করে না। আসল পার্থক্য কি?

উত্তর:


73

realpathচারপাশে বেশ কয়েকটি কমান্ড রয়েছে।

realpathউপযোগ কাছাকাছি একটি লেফাফা হয় realpathলাইব্রেরি ফাংশন এবং অনেক reinvented হয়েছে বার

ডেবিয়ান একটি বজায় রাখার জন্য ব্যবহার realpathপ্যাকেজ ( পৃথকীকৃত থেকে dwwwযেহেতু অরণ্যময় ) যা 2001 সাল থেকে প্যাকেজিং এবং ডকুমেন্টেশন সংক্রান্ত ব্যতীত পরিবর্তন হয়নি, কিন্তু এখন বিকাশ হয়েছে। এই ইউটিলিটিটি হ্রাস করা হয়েছে কারণ এখন আরও মানক বিকল্প (জিএনইউ readlinkএবং শীঘ্রই জিএনইউ realpath) রয়েছে তবে সেই সময়ে, জিএনইউ ইউটিলিটিগুলি মোটেও ছিল না readlink। প্রতীকী লিঙ্ক রেজোলিউশন প্রতিরোধ করতে বা নাল-টার্মিনেট আউটপুট উত্পাদন করতে এই প্রয়োগটি কয়েকটি realpathসমর্থন করে optionsব্যাসিবক্সের নিজস্ব realpathকমান্ডও রয়েছে (যা কোনও বিকল্প নেয় না)।

জিএনইউ কোর্টিলস জানুয়ারী ২০১২ সালে ৮.১৫ সংস্করণে একটি realpathকমান্ড প্রবর্তন করেছিল । এটি ব্যাসিবক্স এবং ডেবিয়ানদের জন্য উপযুক্ত একটি প্রতিস্থাপন এবং জিএনইউর সাথেও প্রচলিত বিকল্প রয়েছে ।realpathreadlink

realpathহিসাবে একই প্রভাব রয়েছে readlink -fগনুহ সঙ্গে readlink। দুটি কমান্ডের (বা পরিবর্তে বিভিন্ন realpathকমান্ডের readlink -f) আলাদা করার বিষয়টি হ'ল অতিরিক্ত বিকল্প যা তারা সমর্থন করে।

জিএনইউ অবমূল্যায়ন করা realpathহয় না; এর বিপরীত সমস্যা রয়েছে: এটি সর্বত্র পাওয়া সহজলভ্য। দেবিয়ান তার প্যাকেজ থেকে জিএনইউ বাদ দিতেrealpathcoreutils এবং তার নিজের সাথে আটকে থাকতrealpath । কেন জানি না, যেহেতু জিএনইউর realpathএকটি ড্রপ-ইন প্রতিস্থাপন হওয়া উচিত। দেবিয়ান জেসি এবং উবুন্টু 16.04 হিসাবে, তবে, জিএনইউ realpathব্যবহৃত হয়।

লিনাক্স সিস্টেমগুলিতে, এই মুহুর্তে, আপনার প্রতীকী লিঙ্কগুলি থাকতে পারে এমন একটি পথটি আধ্যাত্মিককরণের জন্য সেরা বেটিং readlink -f

বিএসডি সিস্টেমগুলির একটি readlinkকমান্ড রয়েছে, যার সাথে জিএনইউ থেকে বিভিন্ন ক্ষমতা রয়েছে readlink। বিশেষত, বিএসডির readlinkকাছে পাথকে ক্যানোনিকালাইজ করার বিকল্প নেই, এটি কেবল এতে পাস হওয়া সিমলিংকটিকেই অনুসরণ করে।

readlinkঘটনাক্রমে, একই সমস্যা ছিল - এটি বহুবার উদ্ভাবিত হয়েছিল (যখন ইউনিক্সে প্রতীকী লিঙ্কগুলি যুক্ত করা হয়েছিল তখন এই ইউটিলিটিটি যুক্ত করা একটি দুঃখজনক ভুল ছিল)। এটি এখন অনেকগুলি বেমানান পতাকা (বিশেষত বিএসডি বনাম জিএনইউ) সহ বেশ কয়েকটি বাস্তবায়নে স্থিতিশীল হয়েছে।


8
readlink -fজিএনইউর অনেক আগে ওপেনবিএসডিতে ছিল। NetBSD বা, ফ্রিবিএসডি এবং OpenBSD সব এখন readlink -f(আপনার লিংক এমনকি এটি উল্লেখ)। realpathদীর্ঘদিন ধরে ফ্রিবিএসডি এবং আইআরআইএক্সে রয়েছে (জানেন না এটি ডেবিয়ানের মধ্যে কোনওটির পূর্বে রয়েছে)। readlinkযদিও এইচপিইউএক্স এবং আইআরআইএক্সের রয়েছে -frealpathডেবিয়ান পরীক্ষামূলক প্যাকেজ এখন coreutils থেকে এক (একটি পরীক্ষা যদি এটা কিছু বিরতি দেখতে হিসাবে) হয়। ডিএনডব্লিউ realpathআরও ভালো লেগেছে readlink -eযখন জিএনইউ এর মত readlink -fএটি সম্পূর্ণ ড্রপিন প্রতিস্থাপন নয়
স্টাফেন

2
realpath2002. তার আগে যেহেতু FreeBSD 'র হয়েছে, pwdএরকম ছিল (2000 সাল থেকে pwd some-fileকল করবে realpath()উপর file)। ডেবিয়ান একটি ছিল realpathপ্যাকেজ 1996 সাল থেকে IRIX ব্যবহৃত এক সম্ভবত এটি চেয়েও পুরনো যদিও আমি 1998 সালে OpenBSD একটি যোগ কোন প্রমাণ অন্যান্য তুলনায় এটি IRIX ব্যবহৃত 6.5 ছিল পাওয়া -fথেকে readlink 1997 সালেজিএনইউ readlink2003 সালে যুক্ত হয়েছিল এবং এটি -fশুরু থেকেই ছিল ।
স্টাফেন চ্যাজেলাস

2
দুর্দান্ত সংক্ষিপ্তসার ধন্যবাদ। ডিবিয়ানকে জিএনইউ ভেরিয়েন্টে স্যুইচ করার অনুরোধের জন্য আরও ভাল বাগটি মনে রাখবেন বাগগুলি। ডেবিয়ান. org / 730779 এমনকি বিদ্যমান রিয়েলপথ রক্ষণাবেক্ষণকারীটিও স্যুইচটি ঘটতে চায়
প্যাড্রাইগ ব্র্যাডি

1
দুর্দান্ত উত্তর। মিস করেছেন কেবলমাত্র আরএইচইএল বাস্তবায়নের উল্লেখ realpathreadlink -fসংস্করণ থেকে এটি কোনওভাবে পৃথক কিনা কেউ কি জানেন ?
ফিলিপ লিওও

1
@ স্টাফেনচেজেলাস ওহ বাহ, আমার উত্তরগুলিতে অনেক ত্রুটি আছে। তাদের নির্দেশ করার জন্য ধন্যবাদ। আপনি কি একটি সঠিক উত্তর পোস্ট করতে পারেন, এবং আমি আমার মুছে ফেলতে পারি? (অন্যথায়, আমি ত্রুটিগুলি সংশোধন করব, তবে আমার দীর্ঘ করণীয় তালিকায় কাজ করা আরও কাজ…)
গিলস

17

tl; dr একটি বিদ্যমান ডিরেক্টরিতে একটি অস্তিত্বের ফাইলের জন্য readlink -fফিরে আসবে 0যেখানে realpathফিরে আসে 1। তবে, অস্তিত্বহীন ফাইলের readlink -eমতো আচরণ করবে realpathএবং ফিরে আসবে 1(শেষে সম্পাদকদের নোট দেখুন)।

readlink -f

$ readlink -f non-existent-file
/home/user/non-existent-file
$ echo $?
0

readlink -e

$ readlink -e non-existent-file
$ echo $?
1

realpath

$ realpath non-existent-file
non-existent-file: No such file or directory
$ echo $?
1

readlink -f অস্তিত্বহীন ডিরেক্টরি সহ

readlink -f পাথের কোন অংশের অস্তিত্ব নেই তার উপর নির্ভর করে আচরণের পরিবর্তন হয়।

$ readlink -f /tmp/non-existent-dir/foo
$ echo $?
1

availablity

readlinkবেশিরভাগ লিনাক্স বিতরণে ইনস্টল করা হয়। যদিও realpathপ্রায়শই স্পষ্টভাবে ইনস্টল করা উচিত।

সংক্ষেপে

আপনি যদি কলগুলি প্রতিস্থাপন করতে চান realpath ...তবে ব্যবহার করুন readlink -e ...


উবুন্টু 16 এ রিডলিঙ্ক (জিএনইউ কোর্টিলস) 8.21 এবং রিয়েলপথ সংস্করণ 1.19 দিয়ে পরীক্ষিত ।

( এড .: @AnthonyGeoghegan লিখেছিলেন, " এই ডেবিয়ান সংস্করণ বোঝায় realpath। গনুহ সংস্করণের realpathমতো একই আচরণ করবেreadlink -f ")


3
আমি এই উত্তরটি উন্নত করেছিলাম তবে আমি এটি স্পষ্ট করে বলতে চাই যে এটি ডেবিয়ান সংস্করণকে বোঝায় realpath। জিএনইউ সংস্করণটি realpathএকই রকম আচরণ করে readlink -f
অ্যান্টনি জিওগিগান

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