তাদের সহজতম ফর্মে, প্রোগ্রামগুলি কি কেবল টার্মিনাল কমান্ডগুলি চালায়?


18

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

দয়া করে আমাকে কোনও ভ্রষ্ট প্রতিক্রিয়া বাঁচান; আমি কেবল কৌতূহলী এবং সম্পূর্ণ সচেতন এটি একটি 13 বছর বয়সী জিজ্ঞাসা করা প্রশ্ন হিসাবে অনুধাবন করা যেতে পারে।


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

3
দুর্দান্ত প্রশ্ন - এই প্রশ্নের উত্তরের ন্যূনতম তিনটি নন-তুচ্ছ স্তর রয়েছে। আমি আশা করি এটি একটি মৌলিক উত্তর পেয়েছে, একটি মধ্যম উত্তর এবং "জন সেরাকুসা ম্যাক ওএস এক্স অ্যাপ্লিকেশন বাইনারি কাঠামোর" অভ্যন্তরীণ কাজগুলিকে বিচ্ছিন্ন করে দিয়েছে "স্তর উত্তর যাতে আপনি বেছে নিতে পারেন এবং সকলের কাছ থেকে শিখতে পারবেন।
bmike

উত্তর:


11

ধারণামূলকভাবে, এটি সর্বদা ওএস এপিআই ব্যবহার করে - প্রশ্নটি কেবল কোন উপায়ে হয়। মূলত তিনটি বিকল্প রয়েছে।

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

  2. কাজটি সহজ করার জন্য একটি লাইব্রেরি (এপিআই) ব্যবহার করুন। উদাহরণস্বরূপ অ্যাপল কোকো ফ্রেমওয়ার্কটি এমন পদ্ধতি NSFileManagerসহ শ্রেণি সরবরাহ copyItemAtPath:toPath:errorকরে যা নিম্ন স্তরের ওএস এপিআই ব্যবহার করে সমস্ত নোংরা কাজ করে, সুতরাং অ্যাপ্লিকেশনটিকে স্বল্প-স্তরের এপিআই নিজেই ব্যবহার করার দরকার নেই তবে এমন কোনও বিষয়ের উপর নির্ভর করতে পারে যাতে কম কাজের প্রয়োজন হয় এবং সর্বদা হয় সিস্টেমে উপস্থিত এছাড়াও অ্যাপল এটি ভালভাবে কাজ করে তা নিশ্চিত করার সম্ভাবনা রয়েছে।

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

বেশিরভাগ অ্যাপ্লিকেশনগুলি বিকল্প 2 ব্যবহার করবে কারণ এটি 1 এর চেয়ে বেশি সহজ এবং 3 এর চেয়ে বেশি নিরাপদ এবং দক্ষ an উদাহরণস্বরূপ, ব্যর্থতার ক্ষেত্রে ঠিক কী ভুল হয়েছে তা নির্ধারণ করা অনেক কঠিন এবং এটি কী করছে তা জানা শক্ত (উদাহরণস্বরূপ অগ্রগতি দেখান)। এজন্য বেশিরভাগ ক্ষেত্রে বিকাশকারীরা সম্ভবত বিকল্প 2 বেছে নেবেন, তবে এর কোনও গ্যারান্টি নেই। একটি উল্লেখযোগ্য উদাহরণ হ'ল অ্যাপ্লিকেশনগুলি যা কাস্টমাইজেশনের জন্য শেল স্ক্রিপ্ট ব্যবহার করে - যেমন ইনস্টলারগুলি।

উন্নত ব্যবহারকারীর নোট: dtraceকোনও নির্দিষ্ট অ্যাপ্লিকেশন কী করছে তা জানতে আপনি ওএস এক্সের সুবিধাটি ব্যবহার করতে পারেন । উদাহরণস্বরূপ, আপনি যে প্রসেসগুলি তৈরি হচ্ছে তা যাচাই করতে পারেন যাতে আপনি এটি যে সরঞ্জামগুলি ব্যবহার করছেন তা দেখতে (দেখুন execsnoop)।


4

আমি ভয় পেয়েছি উত্তরটি "এটি নির্ভর করে তবে সাধারণত দ্বিতীয়"। আসলে, যদি কোনও জিইউআই প্রোগ্রাম টার্মিনাল কমান্ডগুলি চালিত করে, এটি এপিআই কল করে এগুলি চালায়।

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

যদিও বেশিরভাগ বিকাশের প্রশ্নগুলি এই সাইটের জন্য অফ-টপিক, আসলে একটি বিষয় যা প্রকৃতপক্ষে অন টপিক তা অটোমেটার চালানো জড়িত।

অভ্যন্তরীণ কমান্ডগুলির তালিকার মধ্যে একটি বিকল্প যা অটোমেটরে একটি প্রোগ্রাম তৈরি করতে পারে কল করতে পারে শেল স্ক্রিপ্ট কল করার ক্ষমতা বা টার্মিনাল কমান্ডগুলির তালিকা। তবে এটি কেবলমাত্র এর অভ্যন্তরীণ এপিআইয়ের মধ্যে উপলব্ধ অনেকগুলি বিকল্প।

এখানে চিত্র বর্ণনা লিখুন


তবে কখনও কখনও API গুলি কলিং কমান্ডগুলি শেষ করে আপনি টার্মিনাল থেকে অ্যাক্সেস করতে পারেন। আমি প্রতিবেদনগুলি পড়েছি (আমার নিজের কম্পিউটারে অনুলিপি করার জন্য আমার কিছুই যত্ন নেই, আপনাকে অনেক ধন্যবাদ) যেটি /sbin/shutdownক্ষতিগ্রস্থ বা মুছে ফেলা হলে অ্যাপল মেনুতে শাটডাউন কমান্ড কাজ করা বন্ধ করে দেয়।
ড্যানিয়েল

1
শেল স্ক্রিপ্টগুলি টার্মিনাল উইন্ডোতে বা অন্য কোনও উইন্ডো সফ্টওয়ালে চালাতে হবে না। তবে যদি তারা আউটপুট উত্পাদন করে যা কোনও ফাইলের দিকে পুনঃনির্দেশিত নয় তবে আপনি এটি উইন্ডোতে চালানো পছন্দ করতে পারেন। শেল স্ক্রিপ্টগুলি উইন্ডো রয়েছে এমন অন্যান্য প্রোগ্রামও চালাতে পারে।
ctrl-alt-delor

@richard একেবারে ঠিক। সম্পাদনা করা হয়েছে।
ড্যানিয়েল

2

ইউনিক্সের পিছনে দুর্দান্ত ধারণাগুলির মধ্যে একটি হ'ল (যদি) আপনি যদি কোনও প্রোগ্রামের জন্য ধারণা পেয়ে থাকেন তবে প্রথমে আপনি এটি শেল স্ক্রিপ্ট হিসাবে লিখতেন - মূলত কমান্ডের একটি সিরিজ কল করে।

তারপরে, যদি প্রোগ্রামটি কার্যকর হিসাবে প্রমাণিত হয় তবে আপনি এর ইন্টারফেসে উন্নতি করতে পারবেন, ব্যবহারকারীরা এটি পরীক্ষা করতে পারবেন এবং শেষ পর্যন্ত যখন আপনি নিশ্চিত হয়েছিলেন যে এটির মূল্য উপযুক্ত তখন একটি "বাস্তব" প্রোগ্রাম লিখুন।

এটি অবশ্যই গ্রাফিকাল ইউজার ইন্টারফেসগুলি গ্রহণ করার আগে ছিল, সুতরাং এখানে একটি "প্রোগ্রাম" নিজেই একটি সি এল এল কমান্ড।

আপনি এখনও কিছু আধুনিক প্রোগ্রামে এই পদ্ধতিটি দেখতে পান, বিশেষত যদি তারা সিস্টেমের তথ্য দেখায়। কোনও ফোল্ডারে সমস্ত ফাইল তালিকাবদ্ধ করতে একটি সাধারণ অ্যাপ্লিকেশন তৈরি করতে চান? কেবল চালান ls -al, ফলাফলটি বিশ্লেষণ করুন এবং এটি একটি টেবিল দেখান। বিভিন্ন প্যারামিটারের সাথে মজা করুন এবং 2.0 সংস্করণে আপনার উপাদান রয়েছে


1

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


1

অ্যাপ্লিকেশনগুলি একটি নির্দিষ্ট কাজ সম্পাদনের জন্য সি এল আই কমান্ড চালাতে পারে এবং কিছু আসলে করে; তবে দক্ষতার সমস্যাগুলির কারণে, পেশাদার অ্যাপ্লিকেশন বিকাশকারীরা কমান্ডটি চালানো এড়িয়ে চলবে এবং কমান্ডটি প্রয়োজনীয় টাস্কটি সম্পাদনের জন্য যে এপিআই ব্যবহার করে তা ব্যবহার করে ।


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

আমি প্রশ্নটি ব্যবহার করেছিলাম ঠিক তেমন সরল শব্দটি এপিআই ব্যবহার করেছি। প্রকৃতপক্ষে, আমি প্রতিবারই কম-বেশি পরিচিত দর্শকদের জন্য এপিআই বনাম লিব বনাম ফ্রেম ওয়ার্কস নামকরণের কনভেনশনগুলি সহ কম পরিচিত দর্শকদের জন্য উত্তরটি পুনরায় লিখেছি I অন্যান্য পেশাদার সফটওয়্যার ইঞ্জিনিয়ার। আমার পোস্টে আপনি এমন কিছু সম্পাদনা করতে চান যা বিষয়টি আরও স্পষ্ট করে বলবে, দয়া করে এগিয়ে যান এবং এটি করুন।
ইসমাইল

কোনও অপরাধ নেই, আমি কেবল পরিষ্কার করছি। একটি ভাল প্রোগ্রামার কমান্ড লাইন প্রোগ্রামগুলিকে কল করবে না বা করবে না, সিদ্ধান্তটি জটিলতার ভিত্তিতে এবং সম্ভবত (গতি পরিমাপের পরে) দক্ষতার ভিত্তিতে হবে। বাজারে বিক্রি হওয়া পেশাদারদের ক্ষুদ্র গোষ্ঠীর জন্য, আপনার প্রোগ্রামকে জটিল করার প্রয়োজন হতে পারে; একটি কমান্ড লাইন প্রোগ্রাম কল করা, সহজ বলে মনে হচ্ছে। সুতরাং একটি পুনর্লিখন প্রয়োজন। আপনি যদি কমিশন বা ফ্রি-সফটওয়্যার করেন তবে আপনি কার্যকর কাজটি করেন।
ctrl-alt-delor
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.