এটি কি "একবারে একটি কাজ করুন"?
এই মন্তব্যটি সাধারণ ডিজাইনের নীতি সম্পর্কে একটি প্রশ্নের মতো মনে হচ্ছে। প্রায়শই, এগুলি সম্পর্কে প্রশ্নগুলি খুব বিষয়গত হয় এবং আমরা সঠিক উত্তর লিখতে পারি না to সতর্কতা অবলম্বন করুন যে আমরা এই ক্ষেত্রে প্রশ্নগুলি বন্ধ করতে পারি।
কখনও কখনও আমাদের কাছে মূল নকশা পছন্দ সম্পর্কে ব্যাখ্যা থাকে কারণ বিকাশকারীরা সেগুলি সম্পর্কে লিখেছেন। তবে এই প্রশ্নের উত্তর আমার কাছে নেই have
কেন cp
এইভাবে ডিজাইন করা হয়েছে?
সমস্যাটি ইউনিক্সের বয়স 40 বছরেরও বেশি।
আপনি যদি এখনই একটি নতুন সিস্টেম তৈরি করছিলেন তবে আপনি বিভিন্ন নকশার পছন্দ করতে পারেন। তবে ইউনিক্স পরিবর্তন করলে অন্যান্য স্ক্রিপ্টগুলি নষ্ট হয়ে যাবে, যেমন অন্যান্য উত্তরে উল্লিখিত হয়েছে।
চুপচাপ বিদ্যমান ফাইলগুলি ওভাররাইট করার জন্য কেন নকশা করা হয়েছিল cp
?
সংক্ষিপ্ত উত্তরটি "আমি জানি না" :-)।
বুঝতে পারি যে cp
এটি কেবল একটি সমস্যা। আমি মনে করি মূল কমান্ড প্রোগ্রামগুলির কোনওটিই ওভাররাইটিং বা ফাইলগুলি মুছে ফেলার বিরুদ্ধে সুরক্ষিত নেই। আউটপুট পুনর্নির্দেশের সময় শেলের একই সমস্যা রয়েছে:
$ cat first.html > second.html
এই কমান্ডটি নিঃশব্দে ওভাররাইট করে second.html
।
এই সমস্ত প্রোগ্রাম কীভাবে নতুনভাবে ডিজাইন করা যেতে পারে তা ভাবতে আগ্রহী। এটিতে কিছু অতিরিক্ত জটিলতার প্রয়োজন হতে পারে।
আমি মনে করি এটি ব্যাখ্যাটির একটি অংশ: প্রথমদিকে ইউনিক্স সহজ বাস্তবায়নের উপর জোর দিয়েছিল । এর আরও বিশদ ব্যাখ্যার জন্য দেখুন "উত্তম আরও ভাল" এই উত্তরের শেষে যুক্ত।
আপনি পরিবর্তন করতে > second.html
পারেন তাই এটি second.html
ইতিমধ্যে উপস্থিত থাকলে কোনও ত্রুটি দিয়ে থামে । তবে যেমনটি আমরা উল্লেখ করেছি, কখনও কখনও ব্যবহারকারী কোনও বিদ্যমান ফাইলটি প্রতিস্থাপন করতে চান। উদাহরণস্বরূপ, তিনি একটি জটিল কমান্ড তৈরি করতে পারেন, যতক্ষণ না সে তার ইচ্ছা অনুযায়ী কাজ করে।
ব্যবহারকারী rm second.html
প্রয়োজনে প্রথমে চালাতে পারে। এটি একটি ভাল আপস হতে পারে! এটির নিজস্ব কিছু সম্ভাব্য অসুবিধা রয়েছে।
- ব্যবহারকারীকে অবশ্যই ফাইলের নাম দুটি টাইপ করতে হবে।
- লোকেরা ব্যবহার করে অনেক সমস্যায় পড়ে
rm
। তাই আমি আরও rm
নিরাপদ করতে চাই । কিন্তু কিভাবে? আমরা যদি rm
প্রতিটি ফাইলের নাম প্রদর্শন করি এবং ব্যবহারকারীকে নিশ্চিত করতে বলি , তাকে এখন একটি পরিবর্তে তিনটি লাইন কমান্ড লিখতে হবে। এছাড়াও, যদি তাকে প্রায়শই এটি করতে হয় তবে সে অভ্যাসে নেমেছে এবং কোনও চিন্তা না করে নিশ্চিত করতে "y" টাইপ করবে। সুতরাং এটি খুব বিরক্তিকর হতে পারে এবং এটি এখনও বিপজ্জনক হতে পারে।
একটি আধুনিক সিস্টেমে, আমি কমান্ডটি ইনস্টল করারtrash
পরামর্শ দিয়েছি এবং এটি rm
যেখানে সম্ভব হবে তার পরিবর্তে ব্যবহার করার পরামর্শ দিচ্ছি । ট্র্যাশ স্টোরেজের প্রবর্তনটি একটি দুর্দান্ত ধারণা ছিল যেমন একক ব্যবহারকারী গ্রাফিকাল পিসির জন্য ।
আমি মনে করি মূল ইউনিক্স হার্ডওয়্যার - সীমাবদ্ধ র্যাম এবং ডিস্ক স্পেস, স্লো প্রিন্টারে প্রদর্শিত আউটপুট পাশাপাশি সিস্টেম এবং ডেভেলপমেন্ট সফ্টওয়্যারগুলির সীমাবদ্ধতাগুলি বোঝাও গুরুত্বপূর্ণ ।
লক্ষ্য করুন যে কমান্ডের জন্য ফাইলের নামটি দ্রুত পূরণ করার জন্য মূল ইউনিক্সের ট্যাব সমাপ্তি ছিল না rm
। (এছাড়াও, বোর্ন শেলটির মূল কমান্ডের ইতিহাস নেই, যেমন আপনি যখন উপরে তীর কী ব্যবহার করেন bash
)।
প্রিন্টারের আউটপুট সহ, আপনি লাইন-ভিত্তিক সম্পাদক, ব্যবহার করবেন ed
। ভিজ্যুয়াল টেক্সট এডিটরের চেয়ে এটি শেখা শক্ত। আপনাকে কিছু বর্তমান লাইন মুদ্রণ করতে হবে, কীভাবে আপনি সেগুলি পরিবর্তন করতে চান তা নির্ধারণ করতে হবে এবং একটি সম্পাদনা কমান্ড টাইপ করতে হবে।
ব্যবহার > second.html
করা কিছুটা লাইন-এডিটরে একটি কমান্ড ব্যবহার করার মতো। এটির প্রভাবটি বর্তমান অবস্থার উপর নির্ভর করে। (যদি second.html
ইতিমধ্যে বিদ্যমান থাকে তবে এর সামগ্রীটি বাতিল করা হবে)। ব্যবহারকারী যদি বর্তমান অবস্থা সম্পর্কে নিশ্চিত না হন তবে তিনি চালাবেন ls
বা ls second.html
প্রথমে প্রত্যাশিত ।
নকশার নীতি হিসাবে "সাধারণ বাস্তবায়ন"
ইউনিক্স ডিজাইনের একটি জনপ্রিয় ব্যাখ্যা রয়েছে, যা শুরু হয়:
নকশাটি বাস্তবায়ন এবং ইন্টারফেস উভয়ই সহজ হতে হবে। ইন্টারফেসের চেয়ে বাস্তবায়নের পক্ষে সহজ হওয়া আরও গুরুত্বপূর্ণ। সরলতা একটি নকশার মধ্যে সবচেয়ে গুরুত্বপূর্ণ বিবেচনা।
...
গ্যাব্রিয়েল যুক্তি দিয়েছিলেন যে "ওয়ার্স আরও ভাল" এমআইটি পদ্ধতির চেয়ে আরও সফল সফ্টওয়্যার তৈরি করেছে: প্রাথমিক প্রোগ্রাম যতক্ষণ প্রাথমিকভাবে ভাল হয়, প্রাথমিকভাবে এটি বাস্তবায়নে অনেক কম সময় এবং প্রচেষ্টা লাগবে এবং নতুন পরিস্থিতিতে খাপ খাইয়ে নেওয়া আরও সহজ হবে। নতুন মেশিনগুলিতে সফ্টওয়্যারটির পোর্টিং উদাহরণস্বরূপ, এভাবে আরও সহজ হয়ে যায়। এইভাবে এর ব্যবহারটি দ্রুত ছড়িয়ে পড়বে, একটি [আরও ভাল] প্রোগ্রামটি বিকাশ এবং স্থাপনের (প্রথম-মুভির সুবিধা) হওয়ার সুযোগ পাওয়ার অনেক আগে।
https://en.wikipedia.org/wiki/Worse_is_better