কেন শেল স্ক্রিপ্ট ব্যবহার করবেন?


128

কেক কমান্ড লাইন আর্গুমেন্টের সামান্য সহজ পরিচালনা সহ আমাকে শেল স্ক্রিপ্ট মনে হয়।

./Make.sh এর পরিবর্তে মেক চালানোর জন্য এটি স্ট্যান্ডার্ড কেন


বিপরীত প্রশ্নের জন্য: কেন শেল স্ক্রিপ্টটি মেক (কেননা কমান্ড লাইন আর্গুমেন্টগুলির আপাত সহজ পরিচালনা করার কারণে), বিশেষত সিস্টেম অ্যাডমিনিস্ট্রেটর কাজের জন্য, এখানে পড়ুন: unix.stackexchange.com/a/497601/1170
লেসমান

উত্তর:


125

সাধারণ ধারণাটি হ'ল makeন্যূনতম পুনর্গঠনগুলিকে সমর্থন করে (যুক্তিসঙ্গতভাবে) - আপনি এটিকে আপনার প্রোগ্রামের কোন অংশগুলি অন্যান্য অংশগুলির উপর নির্ভর করে তা বলবেন। আপনি যখন প্রোগ্রামটির কিছু অংশ আপডেট করেন, এটি কেবল সেই অংশগুলিকেই পুনর্নির্মাণ করে। আপনি যখন পারে একটি শেল স্ক্রিপ্ট সঙ্গে এই কাজ, এটি একটি হবে অনেক একটি শেল স্ক্রিপ্ট একমাত্র সুস্পষ্ট বিকল্প (স্পষ্টভাবে সব ফাইল, ইত্যাদি উপর শেষ পরিবর্তনের তারিখ পরীক্ষণ) আরো কাজ সবকিছু প্রত্যেক সময় পুনর্নির্মাণের হয়। ক্ষুদ্র প্রকল্পগুলির জন্য এটি একটি সম্পূর্ণ যুক্তিসঙ্গত পদ্ধতি, তবে একটি বড় প্রকল্পের জন্য একটি সম্পূর্ণ পুনর্নির্মাণ সহজেই এক ঘন্টা বা আরও বেশি সময় নিতে পারে - ব্যবহার করে makeআপনি সহজেই একই জিনিসটি এক বা দুই মিনিটের মধ্যে সম্পাদন করতে পারেন ...

আমার সম্ভবত এটিও যুক্ত করা উচিত যে কমপক্ষে বিস্তৃতভাবে অনুরূপ দক্ষতাগুলি তৈরি করতে বেশ কয়েকটি বিকল্প রয়েছে। বিশেষত যেখানে বড় প্রকল্পে কয়েকটি ফাইল পুনর্নির্মাণ করা হচ্ছে, সেগুলির কয়েকটি (যেমন, নিনজা ) প্রায়শই তৈরির তুলনায় বেশ দ্রুত হয়।


66

মেক একটি বিশেষজ্ঞ সিস্টেম

শেল স্ক্রিপ্টগুলির সাথে করা কঠিন এমন বিভিন্ন জিনিস রয়েছে ...

  • অবশ্যই এটি পরীক্ষা করে গেছে যে কী পুরানো,
  • এটি একটি টপোলজিকাল সাজ বা অন্য কোনও ধরণের বৃক্ষ বিশ্লেষণ সম্পাদন করে যা নির্ধারণ করে যে কী ও কী কী আদেশের উপর নির্ভর করে তা নির্ধারণ করে যে প্রতিটি পূর্বশর্ত প্রতিটি নির্ভরতার আগে নির্মিত হয় এবং কেবল একবার নির্মিত হয়।
  • এটি ঘোষিত প্রোগ্রামিংয়ের একটি ভাষা । নতুন উপাদানগুলি একটি অত্যাবশ্যক নিয়ন্ত্রণ প্রবাহে মার্জ করার প্রয়োজন ছাড়াই যুক্ত করা যায়।
  • এটিতে নিয়ম, নিদর্শন এবং তারিখগুলি প্রক্রিয়া করার জন্য একটি ইনফারেন্স ইঞ্জিন রয়েছে এবং এটি যখন আপনার নির্দিষ্ট মেকফিলের নিয়মের সাথে মিলিত হয়, তখন এটি বিশেষজ্ঞ সিস্টেমে পরিণত হয়
  • এটিতে ম্যাক্রো প্রসেসর রয়েছে।
  • আরও দেখুন: মেকের পূর্বের সংক্ষিপ্তসার

2
যদিও এটি বিশেষজ্ঞ সিস্টেম হিসাবে বেশ সীমাবদ্ধ। যেমন প্রতিটি অনুমান একই নিয়মটি কেবল একবার ব্যবহার করতে পারে।
পুনরায় পোস্টার

1
আরও সাধারণ মানুষ ইঞ্জিনিয়ারিংয়ের শর্তাবলী মাত্র 2 পয়েন্টটি ব্যাখ্যা করার জন্য, একটি শেল স্ক্রিপ্ট একটি রৈখিক ক্রম প্রয়োগ করে, যেখানে একটি মেকফাইল গাছের মতো হয়। এটি অপ্রয়োজনীয় কালানুক্রমিক নির্ভরতাগুলি সরিয়ে দেয় (যদিও বাস্তবে মেক প্রক্রিয়াটি রৈখিকভাবে কার্যকর করা হবে)।
শ্রীধর সারনোবাত

2
... আমি মনে করি শেল স্ক্রিপ্টগুলির উপরে মেকফিলসের সমস্যা জাভাস্ক্রিপ্টের মাধ্যমে সিএসএসের সাথে সমস্যার সমতুল্য। প্রতিটি নোড কী কালানুক্রমিক অর্ডায় কার্যকর হয় তা প্রায় ততটা সুস্পষ্ট নয় Make যদিও মেকফাইলে অন্তত আপনি এখনও আসল শেল কমান্ডটি দেখতে পাবেন। সিএসএস সহ এমনকি বিমূর্ত হয়।
শ্রীধর সারনোবাত

আমার কিছু মন্তব্য আছে আমি তাদের প্রশংসা করি যদি কেউ সেগুলি স্পষ্ট করে দেয়। 1 / আপনার প্রথম এবং দুটি পয়েন্ট সম্পর্কিত নয়, এই অর্থে যে টপোলজিকাল সাজানোর ক্ষেত্রে কীভাবে বর্ধনশীল বিল্ডটি প্ররোচিত করা হয়? 2 / আপনি ফাংশন রচনা ব্যবহার করে প্রয়োগ করা 3 নম্বরটি নির্দেশ করতে পারবেন না। 3 / আমি মেকফাইল শেষ ব্যবহারকারীর 4 এবং 5 এর সুবিধাগুলি এবং আরও কেন শেল কমান্ডগুলি একসাথে রচনা করে এই সুবিধাগুলি প্রয়োগ করা যায় না সে সম্পর্কে আরও জানতে চাই
আমিন হাজ্যুসেফ 16

বিশেষজ্ঞের সিস্টেম হিসাবে বর্ণিত মেক জুড়ে এই প্রথম এসেছি। বিশেষজ্ঞ সিস্টেম তৈরি করেছেন এমন কেউ হিসাবে, এটি এমন কিছু নয় যা আমি বিবেচনা করব। মেকফাইলে সুনির্দিষ্ট ঘোষণামূলক বিধিগুলির মাধ্যমে আপনার প্রোগ্রামটি কীভাবে তৈরি করবেন তা নির্ধারণ করার জন্য অবশ্যই স্পষ্টভাবে একটি ইনফারেন্স ইঞ্জিন রয়েছে তবে এটি কোনও জ্ঞান ভিত্তিক সিস্টেম যেহেতু (পাতাগুলি) বিধিগুলি সত্যের চেয়ে বাস্তবায়নের জন্য শেল কমান্ড হিসাবে জ্ঞান ভিত্তিক সিস্টেম। এবং "বিশেষজ্ঞ সিস্টেম" শব্দটি এমন কোনও সিস্টেমকে বোঝাতে ব্যবহার করা হয় যা কোনও বিশ্বমানের বিশেষজ্ঞের দক্ষতার সাথে সাফল্যের সাথে ক্যাপচার করেছে, যা এটি নয়। জুরি এখনও আমার জন্য বাইরে।
ডেনিস

9

তৈরি করা নিশ্চিত করে যে আপনি যখন আপনার উত্স ফাইলগুলিতে পরিবর্তন করেন কেবলমাত্র প্রয়োজনীয় ফাইলগুলি পুনরায় সংযুক্ত হয়।

উদাহরণ স্বরূপ:

final : 1.o 2.o
    gcc -o final 1.o 2.o

1.o : 1.c 2.h
    gcc -c 1.c

2.o : 2.c 2.h
    gcc -c 2.c

আমি যদি 2.hকেবল ফাইলটি পরিবর্তন করি এবং চালিত makeকরি তবে এটি 3 টি কমান্ড বিপরীত ক্রমে কার্যকর করে।

আমি যদি 1.cকেবল ফাইলটি পরিবর্তন করি এবং চালিত makeকরি তবে এটি কেবল প্রথম 2 টি আদেশকে বিপরীত ক্রমে কার্যকর করে।

আপনার নিজের শেল স্ক্রিপ্ট দিয়ে এটি সম্পাদন করার চেষ্টা করাতে অনেকগুলি if/elseচেক জড়িত ।


বা rsync -r -c -I $SOURCE $DEST_DIRশেল এ জাতীয় কিছু ব্যবহার করুন ।
স্পার্টাকাস 9

9

উপরের পাশাপাশি, মেক একটি ঘোষণামূলক (-শ) সমান্তরাল প্রোগ্রামিং ভাষা।

ধরা যাক যে আপনার কাছে রূপান্তর করতে 4,000 গ্রাফিক ফাইল এবং 4 টি সিপিইউ রয়েছে। একটি 10-লাইনের শেল স্ক্রিপ্ট লেখার চেষ্টা করুন (আমি এখানে উদার হচ্ছি) যা আপনার সিপিইউগুলিকে সম্পৃক্ত করার সময় এটি নির্ভরযোগ্যভাবে করবে।

সম্ভবত আসল প্রশ্ন হ'ল লোকেরা শেল স্ক্রিপ্টগুলি লেখার জন্য কেন বিরক্ত হয়।


1
হ্যাঁ, আপনি মোট বৃক্ষের মতো ক্রমকে মোট রৈখিক ক্রমটি looseিলা করছেন।
শ্রীধর সারনোবাত

4

হ্যান্ডলগুলি নির্ভরতা তৈরি করুন: মেকফিল তাদের বর্ণনা করে: বাইনারি কোনও অবজেক্ট ফাইলগুলির উপর নির্ভর করে, প্রতিটি বস্তু ফাইল একটি উত্স ফাইল এবং শিরোনামের উপর নির্ভর করে ... যখন মেক চালানো হয় তখন ফাইলগুলির তারিখটি তুলনা করা হয় যা পুনরায় সংকলন করতে হবে তা নির্ধারণের সাথে ।

মেকফাইলে বর্ণিত সমস্ত কিছু না তৈরির জন্য প্রত্যক্ষ একটি টার্গেট করতে পারেন।

তবুও মেক সিনট্যাক্স প্রতিস্থাপন, ভিপ্যাথ সরবরাহ করে

ইতিমধ্যে এটি তৈরি করে শেল স্ক্রিপ্টগুলিতে এই সমস্ত লেখা যেতে পারে।

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