আপনার প্রশ্নের 1) কেবল আবরণ।
স্বাভাবিকভাবেই API গুলি সর্বদা তাদের স্রষ্টাদের ইচ্ছায় পরিবর্তন করতে পারে এবং ফলস্বরূপ যে কোনও ভাষায় নির্ভরশীল সফ্টওয়্যারটি ভেঙে দেয়। এটি বলেছিল, ইউনিক্স সরঞ্জামগুলির আইআই / ও "এপিআই" এর দুর্দান্ত ধারণাটি হ'ল কার্যত কোনওটি নেই (সম্ভবত 0x0a
লাইন শেষ হিসাবে)। একটি ভাল স্ক্রিপ্ট ডেটা তৈরির পরিবর্তে ইউনিক্স সরঞ্জাম দিয়ে ফিল্টার করে। এর অর্থ হ'ল আপনার স্ক্রিপ্টটি ভেঙে যেতে পারে কারণ ইনপুট বা আউটপুট স্পেক পরিবর্তিত হয়েছে, তবে স্ক্রিপ্টটিতে ব্যবহৃত পৃথক সরঞ্জামগুলির I / O ফর্ম্যাটটি (আবার সত্যিই একটি নেই) কারণ পরিবর্তিত হয়েছে (কারণ এমন কিছু যা সত্যই বিদ্যমান নেই) সত্যিই পরিবর্তন করতে পারে না)।
বুনিয়াদি সরঞ্জামগুলির তালিকাগুলিতে গিয়ে কেবলমাত্র ফিল্টারের বিপরীতে আমি প্রযোজককেও দায়ী করব এমন কয়েকটি রয়েছে :
- ডাব্লুসিসি - বাইট, শব্দ, লাইনগুলির মুদ্রণ সংখ্যা - খুব সাধারণ বিন্যাস, সম্ভবত পরিবর্তনের সম্ভাবনা একেবারেই কম, এবং তদুপরি স্ক্রিপ্টে সম্ভবত ব্যবহারের সম্ভাবনা খুব বেশি নয়।
- ডিফ - সেখানে বিভিন্ন আউটপুট ফর্ম্যাটগুলি বিকশিত হয়েছে তবে আমি কোনও সমস্যা শুনিনি। তদারকি ছাড়া সাধারণত ব্যবহৃত হয় না।
- তারিখ - এখন এখানে সত্যই আমরা সিস্টেমের লোকাল সম্পর্কিত আমরা কী উত্পাদন করি সেদিকে খেয়াল রাখতে হবে। তবে অন্যথায় আউটপুট ফর্ম্যাটটি আরএফসি'র হয়ে থাকে আপনি নিজেরাই এটি নির্দিষ্ট করে নিচ্ছেন না।
- ক্যাল - আসুন এটি সম্পর্কে কথা বলি না, আমি জানি যে আউটপুট ফর্ম্যাটটি সিস্টেমগুলিতে খুব আলাদা।
- ls , কে , ডাব্লু , শেষ - আপনি যদি এলএস পার্স করতে চান তবে আমি সহায়তা করতে পারি না, এটি কেবল বোঝানো হয়নি। এছাড়াও, কে, ডাব্লু, শেষ, আরও ইন্টারঅ্যাকটিভ লাস্টার; আপনি যদি এগুলি কোনও স্ক্রিপ্টে ব্যবহার করেন তবে আপনার কি করা উচিত সেদিকে খেয়াল রাখতে হবে।
- সময় অন্য পোস্টে চিহ্নিত করা হয়েছিল। তবে হ্যাঁ, এটি Ls এর মতোই। ইন্টারেক্টিভ / স্থানীয় ব্যবহারের জন্য আরও। এবং ব্যাশ বিল্টিনটি জিএনইউ সংস্করণ থেকে একেবারেই আলাদা এবং জিএনইউ সংস্করণে বহু বছর ধরে ফিক্সযুক্ত বাগ রয়েছে। শুধু এটির উপর নির্ভর করবেন না।
এখানে এমন সরঞ্জামগুলি রয়েছে যা একটি নির্দিষ্ট ইনপুট ফর্ম্যাটটি বাইট স্ট্রিম হওয়ার চেয়ে আরও সুনির্দিষ্টভাবে প্রত্যাশা করে:
- বিসি , ডিসি - ক্যালকুলেটর। ইতিমধ্যে জিনিসগুলির আরও হ্যাকিশ দিকে (সত্যিই, আমি এগুলি স্ক্রিপ্টগুলিতে ব্যবহার করি না), এবং সম্ভবত খুব স্থিতিশীল I / O ফর্ম্যাটগুলি।
ভাঙ্গার অনেক বেশি ঝুঁকির সাথে আরও একটি ক্ষেত্র রয়েছে, যথা কমান্ড-লাইন ইন্টারফেস। বেশিরভাগ সরঞ্জামগুলির সিস্টেম এবং সময়রেখার উভয়ই আলাদা বৈশিষ্ট্য রয়েছে। উদাহরণগুলি হ'ল
- রেজেক্স - রেজেক্স ব্যবহার করে সমস্ত সরঞ্জাম সিস্টেম লোকেলের উপর ভিত্তি করে অর্থ পরিবর্তন করতে পারে (উদাহরণস্বরূপ, LC_COLLATE) এবং রেজেক্স বাস্তবায়ন জুড়ে অনেকগুলি সূক্ষ্মতা এবং অদ্ভুততা রয়েছে।
- কেবল অভিনব সুইচগুলি ব্যবহার করবেন না। আপনি সহজেই
man 1p find
উদাহরণস্বরূপ ব্যবহার করতে পারেন , সিস্টেম ম্যানপেজের পরিবর্তে পসিক্স সন্ধানের ম্যানপেজটি পড়তে। আমার সিস্টেমে, আমার ম্যানাপেজ-পক্সিক্স ইনস্টল করা দরকার।
এবং এই জাতীয় সুইচগুলি ব্যবহার করার পরেও সাধারণত ত্রুটিগুলি সূক্ষ্মভাবে পরিচয় করানো হবে না এবং আপনার ডেটাটিকে বিষাক্ত করবে না। বেশিরভাগ প্রোগ্রাম অজানা স্যুইচ দিয়ে কাজ করতে অস্বীকার করবে।
উপসংহারে, আমি বলব যে শেলটি আসলে সর্বাধিক বহনযোগ্য ভাষা হওয়ার সম্ভাবনা রয়েছে (এটি যখন আপনি বহনযোগ্য স্ক্রিপ্ট করেন তখন পোর্টেবল হয়)। আপনার পছন্দের স্ক্রিপ্টিং ভাষাগুলির সাথে তুলনা করুন যেখানে সূক্ষ্ম ত্রুটি দেখা দেয় বা আপনার পছন্দসই সংকলিত প্রোগ্রাম যা সংকলন করতে সহায়তা করবে।
অধিকন্তু, বিরল জায়গাগুলিতে যেখানে বিরতি অসম্পূর্ণতার কারণে ঘটতে পারে, এটি সম্ভবত সময় প্রেরণার কারণে নয়, তবে বিভিন্ন সিস্টেমে বৈচিত্র্যের কারণে ঘটে (অর্থাত যদি এটি আপনার পক্ষে কাজ করে তবে এটি 20 বছর আগে করেছিল এবং 20 বছরে হবে) খুব)। এটি সরঞ্জামগুলির সরলতার একটি প্রতীক।