শেলগুলিতে ফাইলগুলির সাথে কাজ করার এবং একটি প্রোগ্রাম থেকে অন্য প্রোগ্রামে ডেটা পাওয়ার জন্য বিশেষ বৈশিষ্ট্য রয়েছে (এটি ডেটা পাঠ্য বলে ধরে নেওয়া হয়)। এই কাজের জন্য, পাইথনের মতো স্ক্রিপ্টিং ভাষার চেয়ে শেল স্ক্রিপ্টগুলি কম জটিল হতে পারে।
শেল স্ক্রিপ্টিংয়েরও সুবিধা রয়েছে যে আপনি যে কমান্ডগুলি ব্যবহার করেন তা হ'ল কমান্ড লাইন থেকে আপনি একই কমান্ডগুলি ব্যবহার করেন - সুতরাং যদি আপনি শেলটিতে কিছু করতে পারেন তবে আপনি একই ক্রিয়াকে স্ক্রিপ্ট করার চেয়ে অর্ধেকেরও বেশি।
এখানে উদাহরণস্বরূপ একটি বাশ স্ক্রিপ্ট যা সমস্ত ডিরেক্টরি থেকে বর্তমান ডিরেক্টরি থেকে একটি নির্দিষ্ট ডিরেক্টরিতে সরিয়ে দেয় P
#!/usr/bin/sh
mv *.png $1
এখানে পাইথন সংস্করণ।
#!/usr/bin/python
import sys, shutil, glob
for filename in glob.iglob("./*.png"):
shutil.move(filename, sys.argv[1])
আপনি খেয়াল করবেন:
- বাশ স্ক্রিপ্টটি পাইথন হিসাবে তৃতীয় যতক্ষণ আপনি লাইন গণনা করেন (শেবাং লাইন বাদে) - চরিত্রের সংখ্যা অনুসারে এমনকি কম
- পাইথন স্ক্রিপ্টের জন্য তিনটি লাইব্রেরি আমদানি করা প্রয়োজন, যখন এই কাজের জন্য আপনার প্রয়োজনীয় সমস্ত কিছুই প্রাথমিকভাবে ব্যাশে উপলব্ধ
- পাইথন স্ক্রিপ্টের জন্য ফাইলগুলি সরানোর জন্য একটি স্পষ্ট লুপের প্রয়োজন হয়, যেখানে এটি
mv
বাশ- এর কমান্ডের শব্দার্থের অংশ is
- ব্যাশ স্ক্রিপ্টটি দ্রুত চলতে পারে - আপনি সম্ভবত এটি ব্যাশ থেকে প্রার্থনা করতে পারেন এবং আপনি
source
এটি শেলের একই উদাহরণে চালাতে ব্যবহার করতে পারেন
glob.iglob("./*.png")
বলতে গেলে বেশ মুখরোচক *.png
আপনি যদি পাইথনে একটি বেসিক পাইপ ক্রিয়াকলাপ লিখতে চান, তবে আপনি ভার্বোসিতে হতবাক হয়ে যাবেন। (অবশ্যই, পাইপিংয়ের মতো কিছু জিনিস grep
বাইরের প্রোগ্রাম ব্যবহার না করে পাইথন কোড দ্বারা প্রতিস্থাপন করা যেতে পারে, তাই আপনাকে প্রায়শই পাইপ করার প্রয়োজন হয় না))
কাউন্টারেরেক্সাম হিসাবে, আমাকে একবারে একটি রুটিন লিখতে হয়েছিল যা পরীক্ষা করে দেখায় যে প্রতিটি ফাইলের নাম নির্দিষ্ট ডিরেক্টরিতে কতক্ষণ ছিল। এগুলি যদি কোনও নির্দিষ্ট ওএস দ্বারা সমর্থিত হয় তবে তাদের ছোট করা উচিত। এর ফলে ডুপ্লিকেট ফাইলনাম হতে পারে যা আমার সংশোধন করার দরকার ছিল এবং যেহেতু সেগুলি একটি ওয়েব পৃষ্ঠা থেকে সংযুক্ত করা হবে, তাই সংক্ষিপ্ত নামগুলি স্থিতিশীল হওয়া দরকার, অর্থাত্ সেগুলি এমনভাবে তৈরি করা উচিত যাতে একই দীর্ঘ ফাইলের নামটি সর্বদা ফলত একই সংক্ষিপ্ত ফাইলের নাম। আমি লম্বা ফাইলনামের একটি হেক্স এমডি 5 তৈরি করে এবং এর প্রথম চারটি অক্ষরকে সংক্ষিপ্ত নামের সাথে সংযুক্ত করে এটি করেছি (নামগুলি এখনও সংঘটিত হতে পারে, তবে এটি খুব অনর্থক ছিল, তাই আমি কেবল সেই শর্তটি যাচাই করেছিলাম এবং এটি হওয়ার আগে জামিনে আটকানো হয়) ।
আমি ব্যাশে এটি করেছি কারণ এটি আমাদের বিল্ড সিস্টেমের অংশ ছিল যা ইতিমধ্যে ব্যাশে লেখা ছিল। আপনি সম্ভবত যা ভাবছেন ঠিক ঠিক ততটা পাওয়া ঠিক ছিল। পাইথনে লিখতে অনেক কম সময় লাগত এবং সম্ভবত এটি আরও পরিষ্কার হয়ে যেত।
সংক্ষেপে: বিভিন্ন ভাষা বিভিন্ন ধরণের কাজের জন্য ডিজাইন করা হয়েছে; আপনার কাছে উপলভ্য ভাষা চয়ন করুন যা হাতের কাজটির জন্য সবচেয়ে উপযুক্ত।