পাইথনের তুলনায় শেল স্ক্রিপ্টিংয়ের শক্তি [বন্ধ]


95

আমি শেল (বাশ) স্ক্রিপ্টিং কয়েকবার শিখতে চেষ্টা করেছি তবে সিনট্যাক্স দ্বারা চালিত হয়েছিল। তারপরে আমি পাইথনকে খুঁজে পেয়েছি এবং পাইথনে শেল স্ক্রিপ্টটি করতে পারে এমন বেশিরভাগ কাজ করতে সক্ষম হয়েছি। আমি এখন নিশ্চিত নই যে আমার আর সময় শেল স্ক্রিপ্টিং শেখার জন্য ব্যয় করা উচিত। তাই আমি জিজ্ঞাসা করতে চাই:

পাইথনের তুলনায় শেল স্ক্রিপ্টিংয়ের এমন কী শক্তি যা এটিকে একটি অপরিহার্য সরঞ্জাম করে তোলে?

আমি পেশায় কোনও সিস্টেম প্রশাসন নই, তবে আমি হোম ব্যবহারকারীদের জন্য লিনাক্স সিস্টেম স্থাপনে আগ্রহী, তাই আমি মনে করি শেল স্ক্রিপ্টিং শিখতে প্রয়োজনীয় হয়ে উঠতে পারে।

উত্তর:


83
  • শেল স্ক্রিপ্টিং I / O পুনঃনির্দেশ জন্য সহজ স্বরলিপি আছে।
  • শেলের বিদ্যমান প্রোগ্রামগুলির বাইরে পাইপলাইন তৈরি করা সহজ।
  • শেল স্ক্রিপ্টিং পুরো প্রোগ্রাম পুনরায় ব্যবহার করে।
  • শেল সর্বজনীনভাবে উপলব্ধ (ইউনিক্সের মতো কোনও কিছুর উপরে) - পাইথন অগত্যা ইনস্টল করা হয় না।

'এটি সত্য যে আপনি পাইথনে যা করতে পারেন তা আপনি শেল দিয়ে করতে পারেন; 'এটি এও সত্য যে পাইথনে এমন কিছু জিনিস রয়েছে যা শেলের পক্ষে শক্ত (যেমন কিছু জিনিস খোলের মধ্যে সহজ তবে পাইথনের ক্ষেত্রেও শক্ত)। উভয় জেনে রাখা দীর্ঘমেয়াদে সেরা হবে।


17
1 এবং 2, ভাল পয়েন্ট। # 3 একটি দুর্বলতা, যেহেতু এটি প্রচুর ওভারহেডের দিকে পরিচালিত করে যা পাইথন এড়াতে পারে। # 4 মূলত অসত্য হতে পারে। পাইথন এখন বেশিরভাগ লিনাক্স ডিস্ট্রোজের অংশ।
এস.লট

4
@ সোভান্ত: "টেস্ট" এবং "এক্সপ্রেস" এর মতো কমান্ড ব্যবহার করে বেশ কয়েকটি অপারেশন করতে একটি সাধারণ শেল লুপ লিখুন এবং "ওএস" মডিউলটি ব্যবহার করে পাইথন স্ক্রিপ্টের সাথে রান সময়কে তুলনা করুন। পরীক্ষা এবং এক্সপ্রের মতো কমান্ডগুলি প্রায়শই আসল কাজটি করার জন্য একটি সাবপ্রসেসকে জোর করে জড়িত।
এস.লট

4
আমি পয়েন্ট 3 একটি বিশাল সুবিধা হিসাবে দেখছি, কোনও অসুবিধা নয়। উদাহরণস্বরূপ, রূপান্তর প্রোগ্রামের সাথে চিত্রগুলির পূর্ণ ডিরেক্টরিকে পুনরায় আকার দিন consider
গ্লেন

7
# 4 এর সাথে উল্লেখযোগ্য এটি হ'ল bashশেলটি সমস্ত লিনাক্স ডিস্ট্রো, বিশেষত এমবেডেড সিস্টেমগুলির জন্য এবং অন্যান্যরা busyboxএক্সিকিউটেবল চালাচ্ছেন এমন সর্বজনীনভাবে উপলভ্য নয় । যে স্ক্রিপ্টগুলি বোর্ন শেল নিজেই লক্ষ্য করে, যা bashপিছনের দিকে সামঞ্জস্যপূর্ণ তা সমস্ত পসিক্স-কমপ্লায়েন্ট সিস্টেমে চলবে, তবে যে ভাষা প্রয়োগ করা হয়েছে তার চেয়ে অনেক বেশি সীমাবদ্ধ bash
প্রেরণা

5
@ ছদ্মরূপ: eval "$ (ইতিহাস 2 | মাথা -1 | পার্ল-পেয়ার 's / (? <= যা) সম্ভবত আরও / কমপক্ষে /')"; ইতিহাস -d $ (ইতিহাস 2 | শিরোনাম -1 | সেড 's / ^ \ s * ([0-9] \ +) / \ 1 /')
অন্তর্নিহিত

54

"পাইথনের তুলনায় শেল স্ক্রিপ্টিংয়ের এমন কী শক্তি যা এটিকে একটি অপরিহার্য সরঞ্জাম করে তোলে?"

শেলটি অপরিহার্য নয়। আপনি কেন মনে করেন এতগুলি আছে? bash, tcsh, csh, sh, ইত্যাদি ইত্যাদি,

পাইথন হয় একটি শেল। আপনি সমস্ত কমান্ড চালানোর জন্য ব্যবহার করেন না , তবে স্ক্রিপ্টিংয়ের জন্য, এটি আদর্শ।

পাইথন হ'ল সমস্ত লিনাক্স ডিস্ট্রোর একটি কম-বেশি স্ট্যান্ডার্ড অংশ।

আরও প্রচলিত শেলগুলি অনেক কিছুই করে।

  1. কমান্ডগুলি চালনার জন্য তাদের একটি কার্যকর ইউজার ইন্টারফেস রয়েছে। এটিতে এক-লাইন কমান্ড অন্তর্ভুক্ত রয়েছে যেখানে শেলটি আপনার PATH অনুসন্ধান করে, অনুরোধ করা প্রোগ্রামটি কাঁটাচামচ করে এবং কার্যকর করে। এছাড়া পাইপলাইন, সিকোয়েন্স এবং সমবর্তী প্রোগ্রাম (ব্যবহার অন্তর্ভুক্ত ;, |এবং &) পাশাপাশি কিছু ফেরৎ (ব্যবহার >এবং <)।

  2. স্ক্রিপ্টগুলি চালনার জন্য তাদের কাছে একটি ক্ষুদ্র সামান্য প্রোগ্রামিং-ভাষার মতো দক্ষতা রয়েছে। এই ভাষাটি ব্যবহার করা বরং কঠোর এবং অত্যন্ত অদক্ষ। এই ভাষায় বেশিরভাগ বিবৃতিগুলির জন্য এক বা একাধিক অতিরিক্ত প্রক্রিয়া ভঙ্গ করা প্রয়োজন, সময় এবং স্মৃতি নষ্ট করা।

শেল থেকে প্রোগ্রাম চলমান, স্টডারার একটি লগ ফাইলে পুনর্নির্দেশ এবং সেই ধরণের জিনিসটি ভাল। শেলের মধ্যে এটি করুন।

পাইথন স্ক্রিপ্ট হিসাবে আরও প্রায় সমস্ত কিছুই দক্ষতার সাথে এবং আরও স্পষ্টভাবে করা যেতে পারে।

আপনার দুজনেরই দরকার । যাইহোক, আপনার কখনই আইফিট-বিবৃতি বা চিরাচরিত শেল ভাষায় লুপ দিয়ে স্ক্রিপ্ট লিখতে হবে না।


4
@intuited। ক) বিভিন্ন শাঁসের বিস্তারটি "শেল" এর সাথে সংযুক্ত বৈশিষ্ট্যের সংখ্যার প্রমাণ দেয়; এটি অত্যাবশ্যকীয় ভূমিকা নয়, তবে বৈশিষ্ট্যগুলির জন্য এটি আকর্ষণীয়। খ) পাইথন ইন্টারপ্রেটারটি একটি যথাযথ ইউনিক্স শেল, এটি # ব্যবহার করে! গ) একটি "সাধারণ" শেল ifস্টেটমেন্টে প্রায়শই testপ্রোগ্রাম চালানো জড়িত । শেলটি সর্বদাই একটি ক্রমযুক্ত প্রোগ্রামিং ভাষা।
এস .লট

4
@ এস। লট: মনে হয় কিছু অভিজাত মতবিরোধ এখানে সার্কিট্রিতে রয়েছে। ইউএনআইএক্স শেলের আমার সংজ্ঞাটি এমন একজন দোভাষী যাঁর ভাষা প্রাথমিকভাবে নিয়ন্ত্রণের দিকে, উচ্চ স্তরে, ইউএনআইএক্স সিস্টেমের অপারেশন করার জন্য প্রস্তুত। এই সংজ্ঞা দ্বারা, কোনও ধরণের শেল অবশ্যই ইউএনআইএক্স সিস্টেম পরিচালনার জন্য প্রয়োজনীয় এবং পাইথন যোগ্যতা অর্জন করে না। আপনি কিভাবে এই শব্দটি সংজ্ঞায়িত করবেন?
অন্তর্নিহিত

4
@ এস.লোট: আমি সিনট্যাক্সের বিশাল ফ্যান নই যা প্রচলিত শেল স্ক্রিপ্টিংয়ে ব্যবহৃত হয়, তবে আমি এটি বেশিরভাগ ক্ষেত্রে উপযুক্ত এবং উপযুক্ত মনে করি যেখানে মূল লক্ষ্য প্রক্রিয়া এবং তাদের আউটপুট প্রবাহ নিয়ন্ত্রণ করা is এর জন্য প্রায়শই সিদ্ধান্ত গ্রহণ এবং পুনরাবৃত্তি প্রয়োজন। আধুনিক শেলগুলি ( bash, কমপক্ষে) সিদ্ধান্ত গ্রহণের জন্য অন্তর্নির্মিত থাকে (যেমন testএকটি bashবহুমুখী নির্মাণ ছাড়াও একটি বিল্টিন) const এটি অবশ্যই এর দুর্বলতা রয়েছে, তবে এর শক্তিও রয়েছে। এটি বিশদে শেখার পক্ষে মূল্যবান কারণ এটি অন্যান্য ধরণের ভাষার তুলনায় একেবারেই আলাদা দৃষ্টান্ত।
12:48

4
@ বিদ্রূপিত: "এটি বেশ ব্যবহারযোগ্য হিসাবে খুঁজে পান" আপনার দক্ষতার সালাম, ক্রম্পী ভাষা নয়। পাইথন দক্ষ হিসাবে না লোকেরা আরও ব্যবহারযোগ্য হতে পারে।
এস .লট

4
@ এস.লোট: মজার, আপনার চেয়ে আমার চেয়ে আলাদা দর্শন আছে I আমি মনে করি যে নকশা এবং কাজগুলি মূলত মুরগি এবং ডিম। এটি বলতে একটি শেল স্ক্রিপ্ট একটি প্রোগ্রাম যা প্রোগ্রামগুলি চালায়। এই প্রোগ্রামগুলির অনেকগুলি প্রাথমিকভাবে ক্রমবর্ধমান জটিল শেল স্ক্রিপ্ট হিসাবে প্রয়োগ করা হয়েছিল। এক পর্যায়ে এটি সার্থক হয়ে উঠল, সম্ভবত দক্ষতার জন্য যতটা পরিমিতরূপে হয়েছে, তাদের মধ্যে কিছু সিতে আবার লিখেছিলেন, এবং পরে পাইথন। উদাহরণস্বরূপ: কোনও এক মুহূর্তে cat "$1" | ssh "$2" "cat - >\"$1\""জন্ম নেওয়া scp। তারা এটির নকশা করা কতটা ভাল তা জানত কারণ তারা ইতিমধ্যে এটি ব্যবহার করছিল।
25-25

32

আরও জটিল জিনিসকে আরও জটিল করার ব্যয়ে শেলটি সাধারণ এবং সাধারণ ক্রিয়াগুলিকে সত্যই সহজ করে তোলে।

সাধারণত, অজগর প্রোগ্রামের তুলনায় একটি ছোট শেল স্ক্রিপ্ট সংক্ষিপ্ত এবং সহজ হবে, তবে পাইথন প্রোগ্রামটি নিখুঁতভাবে পরিবর্তনগুলি গ্রহণ করার প্রবণতা রাখবে, যেখানে শেল স্ক্রিপ্ট কোড যুক্ত হওয়ার সাথে সাথে কম এবং কম রক্ষণাবেক্ষণের প্রবণতা অর্জন করবে।

এর পরিণতি হ'ল সর্বোপরি উত্পাদনশীলতার জন্য আপনার শেল-স্ক্রিপ্টিং প্রয়োজন, তবে আপনার এটি বেশিরভাগ নিক্ষেপ স্ক্রিপ্টগুলির জন্য ব্যবহার করা উচিত, এবং অন্য কোথাও পাইথন ব্যবহার করা উচিত।


14

পাইথনের সাহায্যে শেল স্ক্রিপ্টগুলি করতে পারবেন এমন কিছুই নেই যা আপনি করতে পারবেন না। শেল স্ক্রিপ্টগুলির বড় সুবিধা হ'ল শেলটি ব্যবহার করার সময় আপনি একই কমান্ডগুলি ব্যবহার করেন, সুতরাং আপনি যদি ভারী শেল ব্যবহারকারী হন, শেল স্ক্রিপ্টিং কোনও সময় আপনার শেল কাজটি স্বয়ংক্রিয় করার জন্য খুব দ্রুত এবং সহজ উপায় হয়ে উঠবে shell ।

পাইথনের চেয়ে শেল স্ক্রিপ্টগুলিতে ডেটার পাইপ ব্যবহার করাও আমার কাছে সহজ মনে হয়েছে, যদিও এটি অজগর থেকে একেবারে কার্যকর।

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

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


9

পূর্ববর্তী সমস্ত উত্তরগুলি সূচিত করে যেমন শেল স্ক্রিপ্টিং শিখতে হবে না; তবে শেখা কখনই খারাপ জিনিস নয়। এটি সত্যই ব্যক্তিগত অগ্রাধিকারের প্রশ্ন। আপনার সময়টি কোনটি মূল্যবান এবং মূল্যবান নয় তা আপনার পক্ষে বলা খুব শক্ত।

বেশিরভাগ প্রোগ্রামাররা দেখতে পান যে প্রতিটি সময় নতুন ভাষা শেখা ক্রমবর্ধমান সহজ হয়। (প্রাকৃতিক ভাষার ক্ষেত্রেও এটি একইভাবে সত্য)) এবং আপনি যতটা আগে শুরু করবেন, তত ভাল।

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


8

আমি আগের উত্তরগুলির সাথে বেশিরভাগের সাথে একমত। আমি শেল কমান্ডগুলি ফাইল-সিস্টেম-ভিত্তিক কাজগুলি করার জন্য সবচেয়ে উপযুক্ত বলে বিবেচনা করি (ফাইলগুলি অনুলিপি এবং সরান, গ্রেপ, ইত্যাদি)। শেলটি ভাল, আমার মতে, যদি আপনাকে ফাইলটি পড়তে এবং লিখতে হয় তবে যেহেতু কোনও একক >>file.txtপুনর্নির্দেশ তাত্ক্ষণিকভাবে ফাইল করাতে যুক্ত হয়, প্রয়োজনের পরিবর্তে, বলুন file=open('file.txt','a'); file.write()ইত্যাদি instead

বর্তমানে, আমার ব্যক্তিগত ব্যবহারের জন্য, আমি দুটোই মিশ্রিত করি, একটি পাইথন স্ক্রিপ্ট তৈরি করে ওএস.সিস্টেম ('কমান্ড') বা os.popen ('কমান্ড') কল করে প্রতিবার পাইথনের চেয়ে শেলটিতে কিছু ক্রিয়া সহজ হয়।


6

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

কিছু শেল স্ক্রিপ্টিং শেখা আপনাকে কিছু কমান্ড লাইন কৌশল শিখতে সহায়তা করতে পারে, যেহেতু কমান্ড লাইনটি ভাল, শেল। কিছুটা দীর্ঘ ও জটিল কমান্ড লাইন নেওয়া এবং এটি আরও সাধারণ স্ক্রিপ্টে রূপান্তর করার জন্য আপনার আরও কিছু দরকার হওয়ার পরেও এটি ভাল।

শেলটিতে বেশ কয়েকটি শক্তিশালী বৈশিষ্ট্যও রয়েছে; পাইপলাইনগুলি একটি সত্যিই আকর্ষণীয় নিয়ন্ত্রণ নির্মাণ যা কেবল শেলের স্থানীয়, যতটা আমি জানি।


5

পাইথনের শেল স্ক্রিপ্টগুলি বেছে নেওয়ার সময় আরেকটি বিষয় বিবেচনা করতে হবে তা হ'ল পাইথন সংস্করণ যা লক্ষ্য মেশিনে চলছে। আরএইচইএল 5 (একটির নাম দিন) দীর্ঘদিন ধরে চলতে চলেছে। আরএইচইএল 5 পাইথন ২.৪ এর সাথে আটকে আছে। পাইথনের ২.৪ পোস্টে কার্যক্ষমতার উপর নির্ভর করে এমন অনেকগুলি দুর্দান্ত লাইব্রেরি রয়েছে libra

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