প্রকাশ করার কোনও উপায় আছে: `- লিঙ্ক` বা সিপিতে সাধারণ কপির কাছে ফিরে যেতে (জিএনইউ কোর্টিলগুলি থেকে)?


11

একটি উপায় আছে বলতে হয় cpকরার --link(অর্থাত হার্ড লিঙ্ক তৈরি), কিন্তু ক্ষেত্রে ফিরে পড়া যেখানে আমি আন্ত ডিভাইস hardlinks প্রয়াস করছি? আন্তঃ ডিভাইস লিঙ্কগুলি সম্ভব নয় এবং এটি cpব্যর্থ হওয়ার কারণ হতে পারে।

আমি যে কারণটি জিজ্ঞাসা করছি তার কারণ হ'ল আমি এটিকে GNUmakefileএকটিতে ব্যবহার করতে চাই এবং কিছু সংশ্লেষিত এবং দীর্ঘ দৈর্ঘ্যের একটি (বা কোনও ফাংশন) এর চেয়ে একটি পঠনযোগ্য কমান্ড লাইন পছন্দ করি prefer

প্রশ্নটি জিএনইউ কোর্টিলস (7.4 এবং 8.13) এর জন্য।

দ্রষ্টব্য: এই মুহুর্তে কাজের দিকটি এমন কিছু হবে (জিএনইউ তৈরির রেসিপি সিনট্যাক্স):

cp -fl $^ $@ || cp -f $^ $@

এটি অবশ্যই আন্তঃ ডিভাইস লিঙ্কগুলির ক্ষেত্রে উত্সাহজনক ত্রুটি বার্তা দেবে, যদিও cpতখনকার দ্বিতীয় কলটিতে সফল হয়েছিল । এছাড়াও, এরপরে এটি প্রসারিত হয় (উত্স ফর্মটি সর্বোপরি পঠনযোগ্য মনে হয়) এটি আর পাঠযোগ্য হবে না।

উত্তর:


8

cpএই বিকল্প নেই। আপনি একটি মোড়ক স্ক্রিপ্ট লিখতে পারেন, তবে এটি বেশ সহজ।

ln -f $^ $@ 2>/dev/null || cp -f $^ $@

GNU Coreutils 7.5 --reflinkঅপশনটি চালু করেছে । যদি আপনি পাস করেন --reflink=autoএবং অন্তর্নিহিত ফাইল সিস্টেমটি অনুলিপি-অন-লিখনকে (যেমন বিটিআরএফএস বা জেডএফএস) সমর্থন করে এবং অনুলিপি একই ডিভাইসে উপস্থিত হয়, তবে cpএকটি নতুন ইনোড তৈরি করবে তবে সামগ্রীটি অনুলিপি করবে না; অন্যথায় cpএকটি সাধারণ অনুলিপি সম্পাদন করে। এটি এখনও কোনও হার্ড লিঙ্ক নয় (লক্ষ্যটি সর্বদা আলাদা ইনোড হবে) তবে এটি আপনার ব্যবহারের ক্ষেত্রে সম্ভবত আরও ভাল। তবে, আপনি যদি ext4- তে থাকেন (এখনকার বেশিরভাগ লোকের মতো), যা অনুলিপি-অনুলিপি সমর্থন করে না, এটি আপনাকে সাহায্য করবে না।


1
ধন্যবাদ, $$আমার ক্ষেত্রে দ্বিগুণ অবশ্যই কারণ এটি ম্যাক্রোর ভিতরে রয়েছে। এবং আপনার অবশ্যই লাইনটি আমি যা ব্যবহার করছি তার একটি তারতম্য। তবে কমপক্ষে আমি এইভাবে জানি যে এটি কোনও বিকল্প হিসাবে বিদ্যমান নয় এবং আমার নিজের সরবরাহ করা প্রয়োজন।
0xC0000022L

1
@ 0xC0000022L উপায় দ্বারা, কয়েক বছরে, যখন বিটিআরএফস সাপ্ল্যান্ট এক্সট4 করে, আপনি স্ক্র্যাপ ব্যবহার করতে এবং ব্যবহার করতে চাইতে lnপারেন cp --reflink=auto(আমার আপডেট হওয়া উত্তর দেখুন)।
গিলস 'অশুভ হওয়া বন্ধ করুন'

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