বাশ কখন ব্যবহার করবেন এবং কখন পার্ল / পাইথন / রুবি ব্যবহার করবেন? [বন্ধ]


78

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

স্ক্রিপ্টের জন্য বাশ ওভার পার্ল / পাইথন / রুবি ব্যবহার করবেন কীভাবে আপনি ঠিক করবেন? আমি মনে করি না যে রুবির সাথে কোনও আরআইপি স্ক্রিপ্টটি বোধগম্য হয়েছে, তবে ইমেল অ্যাকাউন্টগুলি যুক্ত করা একটি দীর্ঘতর স্ক্রিপ্ট সম্পর্কে কীভাবে?


1
আপনি যদি এটি ব্যবহার করেও করতে পারেন তবে কি আসলেই কিছু আসে যায়? ফলস্বরূপ স্ক্রিপ্টটি কোনও পার্থক্য উপস্থাপন করে তবেই পছন্দটি আকর্ষণীয়। উদাহরণস্বরূপ, মৃত্যুদন্ড কার্যকর করার সময়টি তাত্পর্যপূর্ণভাবে পৃথক হতে পারে (ইমেল অ্যাকাউন্টগুলির ক্ষেত্রে এটি কোনও সমস্যা নয়)।
ডেনিস

উত্তর:


44

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

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

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

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

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


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

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

কেবল এটি যোগ করতে চেয়েছিলেন যে জিএনইউ কোর্টিলস প্যাকেজে ছোট প্রোগ্রামগুলি ব্যবহার করে (যেমন টিআর, সাজানো, ইউনিক) এবং তাদের পাইপিংয়ের মাধ্যমে অনেকগুলি কার্য সম্পাদন করা সম্ভব।
জিএমস্টার

58

টিএল; ডিআর - কেবলমাত্র একটি ভাল ভাষা ইনস্টল করার জন্য ব্যাশ ব্যবহার করুন (যদি এটি ইতিমধ্যে উপলব্ধ না থাকে), না হলে আপনি অপ্রয়োজনীয়, মূল্যবান মানুষের সময় নষ্ট করছেন। আপনি যদি ভুল ছাড়া হাত কমান্ড লাইনে এটি না করতে পারেন তবে ব্যাশ / শেল দিয়ে স্ক্রিপ্ট করবেন না।

এটি 2015, সুতরাং আমি নিম্নলিখিতগুলি বিবেচনা করব:

  1. মেমরি ওভারহেড

    • বাশের তুলনায় রুবি / পাইথন রানটাইম মেমরির ওভারহেড ক্ষুদ্রতর (ভাগ করে নেওয়া লাইব্রেরির কারণে), তবে সম্ভবত কোনও তুচ্ছ বাশ স্ক্রিপ্ট বজায় রাখতে পারে না (যেমন> ১০০ টি লাইনের সাথে একটি) - তাই মেমরির ব্যবহার কোনও কারণ নয়
  2. শুরুর সময়

    • রুবি / পাইথন স্টার্টআপটি সামান্য কিছুটা ধীর হতে পারে তবে সম্ভাবনা রয়েছে যে আপনি প্রতি সেকেন্ডে ১০০ বার টাইট লুপে প্রচুর পূর্ণ রুবি / পাইথন প্রসেস চালাচ্ছেন না (যদি আপনার এই ধরণের চাহিদা থাকে তবে বাশ / শেল হয়) যাইহোক যাইহোক অত্যধিক ওভারহেড এবং আপনার সম্ভবত সি / সি ++ এ নেমে যেতে হবে)
  3. কর্মক্ষমতা

    • রুবি / পাইথনে প্রায় সমস্ত সাধারণ ডেটা ক্রাঞ্চিং দ্রুততর হবে - বা কমপক্ষে তুলনীয় (বা, আপনার প্রয়োজন সি / সি ++ / হাস্কেল / ওক্যামেল / যাই হোক না কেন)
    • বাস্তবায়নের ক্ষেত্রে বাস্তব কর্মক্ষমতা / বাধা (বা এমনকি উত্পাদনশীলতা) প্রায় কখনও "বাশ / শেল ব্যবহারের অভাব" হতে পারে না (এমনকি স্টার্টআপের জন্য উবুন্টু স্যুইচিং ড্যাশটি দেখায় যে বাশ আসলে কী সমস্যা - এবং ব্যস্তবক্স সম্ভবত একমাত্র ব্যবহারের ক্ষেত্রে) , কারণ কোড লিখতে ও চালানোর জন্য 'বাশ' এবং 'ভিআই' ছাড়া আর কিছুই নেই, এবং প্রায়শই কোনও কিছুই যুক্ত / ডাউনলোড বা সঞ্চয় করার উপায় নেই)
    • কাজটি করার জন্য অন্যান্য প্রক্রিয়াগুলি চালিত করা (যেমন সেড / অ্যাজক / গ্রেপ) মেমরির লাইভ অবজেক্টে কোনও পদ্ধতি কল করার চেয়ে ধীরে ধীরে ধীরে ধীরে
  4. প্রমোদ

    • রুবি / পাইথনের "বাস্তব" পদ্ধতি, পরামিতি, ভেরিয়েবল এবং ব্যতিক্রমগুলির তুলনায় তুলনায় বাশ / শেলের ভুল করা খুব সহজ
    • চতুরতা মূলধারার, অন্যদিকে বাশের কোনও সমর্থন নেই (ইউনিট পরীক্ষার ক্ষমতা, গ্রন্থাগার, ওও, মডুলারালিটি, আবদ্ধকরণ, অন্তর্মুখী, লগিং, রূপক; কিছু না ভাঙ্গিয়ে রিফ্যাক্টর করা প্রায় অসম্ভব)
    • অন্যান্য শেলগুলির সাথে অনেকগুলি বেমানানতা, ছোট পরিবেশের ভেরিয়েবলগুলি একটি স্ক্রিপ্ট পুরোপুরি ভেঙে ফেলতে পারে (এবং কিছু গুরুত্বপূর্ণ ডেভ-অপ্স সরঞ্জাম যেমন শেবাং লাইন উপেক্ষা করে গুরুত্বপূর্ণ শেল ভেরিয়েবলগুলি পুনরায় লিখতে পারে), অন্যদিকে রুবি / পাইথন অপেক্ষাকৃত মসৃণ স্থানান্তরকে ভালভাবে সংজ্ঞায়িত করেছেন এমনকি বড় সংস্করণ পরিবর্তনের জন্য পাথ
    • নতুন ভাষা শেখার ক্ষেত্রে শেল-নির্দিষ্ট সমস্যার কারণে বিকল্পভাবে ডিবাগিং শেল স্ক্রিপ্টগুলি ব্যয় করা সময়ের একটি অংশ গ্রহণ করা হয় (উল্লেখযোগ্যভাবে - ভেরিয়েবলের নাম, কোনও বুলিয়ান, কোনও ব্যতিক্রম ইত্যাদি))
    • এমনকি স্টার্টআপ স্ক্রিপ্টগুলি একটি ল্যান্ডমাইন ( বিশেষত কারণ তারা সিস্টেম শুরুর সময় ব্যর্থ হতে পারে ), এবং ব্যাশের সাথে সাম্প্রতিক সুরক্ষা ত্রুটিগুলি দেওয়া হলে আপনি প্লেইন সি (ভাল লাইব্রেরি সহ) ব্যবহার করে ভাল হতে পারেন - হ্যাঁ, সি সংকলন, কনফিগারেশন ইত্যাদি প্রয়োজন needs , তবে এমনকি একটি সাধারণ শেল স্ক্রিপ্টের জন্য কোনও সংগ্রহস্থল, তারপরে সংস্করণ এবং তারপরে প্যাকেজিংয়ের প্রয়োজন হতে পারে।
    • সেড / অজক / গ্রেপের সাথে যা কিছু পাওয়া যায় সম্ভবত তা ইতিমধ্যে রুবি / পাইথনে অন্তর্নির্মিত - এটি নির্ভরতা না হয়ে বা প্ল্যাটফর্ম জুড়ে tools সরঞ্জামগুলির সংস্করণগুলির মধ্যে "পার্থক্য" রয়েছে (তাই যদি এটি আপনার সেটআপে কাজ করে তবে )
  5. কাজের নিরাপত্তা
    • আপনি পছন্দ না এমন একটি চাকরি সুরক্ষিত করার কী লাভ? (যদি না আপনি এই সমস্ত ঘন্টা হার্ড-টু-ডিবাগের সাথে তুচ্ছ-থেকে-মেক শেল স্ক্রিপ্ট বাগগুলি ব্যয় করতে পছন্দ না করেন)

আপনি যদি রুবি / পাইথন ইনস্টল করেন তবে ব্যাশ / শেল ব্যবহার করার কোনও কারণ খুঁজে পাচ্ছি না।

এবং সম্ভবত রুবি / পাইথন ইনস্টল করার জন্য প্রথমে ব্যাশ স্ক্রিপ্টের প্রয়োজন নেই (ব্যস্তবক্স ব্যতীত কিছু সিস্টেম সরঞ্জাম পাইথন / পার্ল যেভাবেই উপস্থিত থাকার উপর নির্ভর করে)।

এবং যতবারই আপনি শেল স্ক্রিপ্ট লিখবেন, আপনি ঠিক সেইভাবে "অনুশীলন" করছেন - আরও শক্তিশালী / উত্পাদনশীল কিছু শেখার পরিবর্তে।

লোকেরা আজকাল বাশ ব্যবহার করে কেন? কারণ এটি একটি ভয়ানক, কঠোর বিরতি অভ্যাস habit প্রথম কয়েক মিনিটের পরে একটি স্ক্রিপ্ট খুব কমই "চিরকালের জন্য সমাপ্ত" হয়ে যায় - লোকেরা যেভাবে দৃ strongly়তার সাথে ভাবতে ঝোঁক না কেন। "এটি এই স্ক্রিপ্টের শেষ ত্রুটি" এর সাথে মিথ্যাচার।

উপসংহার: কেবল তখনই বাশ / শেল ব্যবহার করুন যখন আপনি একেবারে বাধ্য (যেমন ~/.bashrcব্যস্তবক্স) করতে পারেন কারণ আজকাল এটি "কাজের জন্য সঠিক উপকরণ" প্রায় কখনও নয়


28

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

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


2
আমি t0 ব্যবহৃত এছাড়াও ব্যাশ জামিন যখনই ফাইল পড়া / টেক্সট প্রজন্ম প্রয়োজন ছিল, কিন্তু শেখার পর =~অপারেটর দ্বারা সমর্থিত [[ ]]আমি আমার কিছু ব্যাশ জন্য প্রেমময় হয়েছে সহজ ফাইল পড়া
Freedom_Ben

16

আমি এই ব্লগ পোস্টে নির্ধারিত মানদণ্ড পছন্দ করি ।

  • যদি পাস করার জন্য কোনও যুক্তি না থাকে তবে এটি সম্ভবত শেল স্ক্রিপ্ট।
  • যদি কন্ট্রোল লজিকের জন্য খুব বেশি কিছু না থাকে (একক লুপ ছাড়াও বা / অন্য) এটি সম্ভবত শেল স্ক্রিপ্ট।
  • যদি টাস্কটি কমান্ড-লাইন নির্দেশাবলীর অটোমেশন হয় তবে এটি প্রায় নিশ্চিতভাবেই একটি শেল স্ক্রিপ্ট।

8

আমি এই পার্ল বনাম বাশ বিশ্লেষণকে দরকারী বলে পেয়েছি ...

http://blogs.perl.org/users/buddy_burden/2012/04/perl-vs-shell-scripts.html

সুবিধার জন্য, আমি সেই লেখকের 1 এর সংক্ষিপ্ত বিবরণটি অনুলিপি করছি) যখন বাশ আরও ভাল ফলাফল হয় এবং 2) যখন পার্ল আরও ভাল উপসংহার হয় ...

বাশ যখন ভাল হয় ...

  • কাজের ব্যর্থতা
  • কমান্ড অন প্রস্থান
  • প্রসেসিং জব আউটপুট লাইনে
  • এখানে নথি
  • ফাইল সমতুল্য
  • ফাইল টাইমস্ট্যাম্প তুলনা
  • তিলদে সম্প্রসারণ

পার্ল যখন ভাল হয় ...

পার্ল এখনও বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য বাশার বাইরে ছাঁটাই মারছে। যে কারণে আমি পার্লকে পছন্দ করতে পারি তার মধ্যে অন্তর্ভুক্ত রয়েছে (তবে সীমাবদ্ধ নয়):

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

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


মজার বিষয় হচ্ছে, রুবিতে, সমস্ত (?) পয়েন্ট প্রয়োগ হয় না, কারণ রুবির at_exit (), রিয়েলপথ (), প্রসারিত_পথ (), স্ট্যাট (), বংশগতি এবং ব্যতিক্রম ( fail "error" unless system("foobar")) রয়েছে।
Cezary Baginski

5

আমার অভিজ্ঞতায় বাশ বনাম অজগর বিকাশ সময় এবং নমনীয়তার মধ্যে একটি বাণিজ্য বন্ধ। অজগর স্ক্রিপ্টের চেয়ে কোনও সমস্যার প্রাথমিক সমাধান সাধারণত ব্যাশ স্ক্রিপ্টে আরও দ্রুত প্রতিষ্ঠিত হতে পারে।

পাইথন সমতুল্য বাশ স্ক্রিপ্টের চেয়ে আপনার সমাধানের কাঠামো সম্পর্কে আপনাকে আরও বেশি ভাবতে বাধ্য করবে। পাইথনের বাশ স্ক্রিপ্টের চেয়ে বেশি অভিব্যক্তিপূর্ণ শক্তি রয়েছে এবং তাই এটি সময়ের সাথে সাথে স্কেল এবং সংশোধন করতে ঝোঁক। এটি সাধারণভাবে আরও পাঠযোগ্য।

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


4

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

পার্ল / রুবি / পাইথন হ'ল সাধারণ উদ্দেশ্য ভাষা।

আপনি যখন শেল স্ক্রিপ্ট চান, আপনি বাশ ব্যবহার করুন

আপনি যদি আরও জটিল কাজ করতে চান বা শেলের সাথে সম্পর্কিত না হন। পাইথন ইত্যাদি ব্যবহার করুন

আমি আসলে এই ভাষাগুলি তুলনা করব না। পাইথন ইত্যাদি বহনযোগ্য। আপনি এগুলি যে কোনও জায়গায় চালাতে পারেন। বাশ শুধুমাত্র ইউনিক্সের জন্য।

পাইথন ইত্যাদিতে কয়েক মিলিয়ন টাস্ক পুনরায় ব্যবহারযোগ্য লাইব্রেরি রয়েছে।

জিজ্ঞাসা করলে এটি প্রায় একই রকম। "কখন পেইন্ট ব্যবহার করবেন এবং কখন ফটোশপ ব্যবহার করবেন"

ইমেলগুলি প্রক্রিয়াকরণের জন্য আমি আবার রুবি ব্যবহার করব, কারণ এতে প্রচুর পুনরায় ব্যবহারযোগ্য লাইব্রেরি রয়েছে।

তবে সবচেয়ে ভাল উপায় হ'ল মিশ্রিত বাশ এবং রুবি। এটা ঠিক হবে। আপনি রুবি এবং বাশ স্ক্রিপ্টে একটি ইমেল প্রসেসিং স্ক্রিপ্ট তৈরি করার মতো সেই রুবি স্ক্রিপ্টটি শুরু করবেন এবং অন্যান্য কমেন্টস ডিএস চালাবে।

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

7 বছর পরে আপডেট (মার্চ 2019)

যদিও আমার উত্তরের মূল অংশটি পরিবর্তন হয়নি আমি তা উল্লেখ করতে চাই।

বাশ একটি শক্তিশালী স্ক্রিপ্টিং ভাষাও। পাঠ্য প্রক্রিয়াকরণের জন্য এটি নিখুঁত বৈধ পছন্দ হতে পারে।

নীচে mkaito এর মন্তব্য পড়ুন দয়া করে। তারা সব সম্পূর্ণ সত্য।


1
বাশের স্ক্রিপ্টিং সাবসেটটি কোনও সাধারণ উদ্দেশ্য স্ক্রিপ্টিং ভাষার মতোই সাধারণ উদ্দেশ্য। মিশ্রণটিতে সেডের মতো সাধারণ প্রোগ্রামগুলি যুক্ত করুন এবং আপনার যে কোনও স্ক্রিপ্টিং প্রয়োজন হবে তার 90% অংশে নিজেকে আচ্ছাদিত করে তোলেন।
এমকেইটো

1
বাশ একটি কমান্ড প্রসেসর তাই এর শক্তি তাদের স্ক্রিপ্টগুলিতে অন্যান্য ইউনিক্স কমান্ড এবং প্রোগ্রামগুলি
চালনা করা উচিত like

1
শেলটি প্রকৃতপক্ষে একটি গৌরবযুক্ত প্রোগ্রাম লঞ্চার, তবে এটির স্ক্রিপ্টিং ক্ষমতাগুলি এর চেয়ে অনেক বেশি। আমি আপনাকে কিছু বাস্তব শেল স্ক্রিপ্টিং শিখতে পরামর্শ দিই।
এমকেইটো

আমি মেঝেতে ঘুমাতে পারি তবে আমি বরং এটি বিছানায় করব। ভাষাগুলি তুলনা করা যায় না তাদের বিভিন্ন উদ্দেশ্য রয়েছে।
বাক্য্তন

2
ঠিক আছে, যদি বাশ মেঝে হয় তবে হাস্কেলের মতো কিছু অবশ্যই একটি পেরেকবোর্ড হতে হবে :-)
এমকাইটো

1

রুশ, পাইথন বা পার্লের মতো উচ্চ স্তরের সাধারণ উদ্দেশ্যে ভাষাগুলির তুলনায় বাশ, ksh, zsh, sh এবং মাছের মতো শেল স্ক্রিপ্টগুলি অত্যন্ত অবাক করে। শেল স্ক্রিপ্টটি সমতুল্য সাধারণ উদ্দেশ্যে স্ক্রিপ্টের চেয়ে ছোট ফাইল হিসাবে তার জীবন শুরু করতে পারে, বিস্ময়ের ফলে প্রচুর পরিমাণে রক্ষণশীল মোড়কের কোড যেমন set -euo pipefailকড়া মোড সক্ষম করতে সক্ষম হয় enable

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


1

অত্যন্ত পক্ষপাতমূলক নিবন্ধ।

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

আমি কয়েক মিলিয়ন ডিএনএ সিকোয়েন্সিংয়ে কয়েক হাজার ফাইলে পড়া বাশ স্ক্রিপ্টগুলি চালিত করি এবং এটি আমার ঠিক কাজ করে। এবং প্রত্যেকে যা বলে তার বিপরীতে, সি ++ এর স্ক্রিপ্টগুলির একই সংস্করণগুলি আসলে এত দ্রুত চালায় না (কয়েক মিনিটের মধ্যে এগুলি পৃথক করে)।

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


0

"লামা বই" থেকে

পার্ল নিম্ন স্তরের প্রোগ্রামিং (যেমন সি বা সি ++ বা সমাবেশ হিসাবে) এবং উচ্চ-স্তরের প্রোগ্রামিংয়ের (যেমন "শেল" প্রোগ্রামিং [যেমন, bash]) মধ্যে ফাঁক পূরণ করার চেষ্টা করে । নিম্ন-স্তরের প্রোগ্রামিং সাধারণত লেখার পক্ষে এবং কুরুচিপূর্ণ, তবে দ্রুত এবং সীমাহীন; কোনও প্রদত্ত মেশিনে ভাল-লিখিত নিম্ন-স্তরের প্রোগ্রামের গতিটি হারাতে শক্ত। এবং আপনি সেখানে করতে পারবেন না এমন অনেক কিছুই নেই। অন্য স্তরের উচ্চ স্তরের প্রোগ্রামিং ধীর, শক্ত, কুরুচিপূর্ণ এবং সীমাবদ্ধ হতে থাকে; আপনার সিস্টেমে প্রয়োজনীয় কার্যকারিতা সরবরাহ করার কোনও আদেশ না থাকলে শেল বা ব্যাচ প্রোগ্রামিংয়ের মাধ্যমে আপনি অনেক কিছুই করতে পারবেন না। পার্ল সহজ, প্রায় সীমাহীন, বেশিরভাগ দ্রুত এবং কদর্য ধরনের।


0

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

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

তবে আপনি যদি সংক্ষিপ্ততম ফাংশনগুলিতে কোডটি বিভক্ত করেন এবং জিনিসগুলি একটি সহজ বোধগম্য উপায়ে নামকরণ করেন তবে এটি আপনার স্পষ্ট ভাষা। কারণ এটি খুব পরিশ্রুত।

নমুনা হিসাবে, এটি আমার সর্বশেষ কোড কোড। এটি বুঝতে এবং টাইপ করা কত সহজ তা লক্ষ্য করুন:

#! /bin/bash


mainFunction () {
    file="${1}"

    checkFile "${file}"
    executeFile "${file}"
}


changeToThisProgramDir () {
    cd "$( dirname "${BASH_SOURCE[0]}" )"
}


checkFile () {
    file="${1}"

    checkFileNotEmpty "${file}"
    checkFileExist "${file}"
    checkFileIsExe "${file}"
}


checkFileExist () {
    file="${1}"

    if [ ! -f "${file}" ]; then
        echo "The file doesn't exist: ${file}" >&2
        echo "If the name was correct either type: exeCute \"pathToYourExeFile\""
        echo "Or just open with exeCute from the file manager"
        exit 1
    fi
}


checkFileIsExe () {
    file="${1}"
    mime=$(fileMime "${file}")

    if [ "${mime}" != "application/x-dosexec" ]; then
        echo "Not an exe: ${file}" >&2
        exit 1
    fi
}


checkFileNotEmpty () {
    file="${1}"

    if [ "${file}" == "" ]; then
        echo "No file specified" >&2
        echo "Either type this: exeCute \"pathToYourExeFile\""
        echo "Or just open with exeCute from the file manager"
        exit 1
    fi
}


execute () {
    function="${1}"
    command="${2}"
    error=$(eval "${command}" 2>&1 >"/dev/null")

    if [ ${?} -ne 0 ]; then
        echo "${function}: ${error}" >&2
        exit 1
    fi
}


executeFile () {
    file="${1}"
    type=$(fileType "${file}")

    if [ "${type}" == "MS-DOS executable" ]; then
        execute "executeFile" "dosbox \"${file}\" -forcescaler normal2x -exit -fullscreen"
    else
        execute "executeFile" "wine \"${file}\""
    fi
}


fileMime () {
    file="${1}"

    attributes=$(file --brief --mime "${file}")
    IFS=";" read -r -a attributes <<< "${attributes}"
    echo "${attributes[0]}"
}


fileType () {
    file="${1}"

    attributes=$(file --brief "${file}")
    IFS="," read -r -a attributes <<< "${attributes}"
    echo "${attributes[0]}"
}


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