আপনি যখন প্রথমে এই লেখার শিরোনাম পড়লেন, তখন আপনি মনে করতে পারেন কিছু টেকনিক্যালি ভুল।畢竟, লিনাক্স উইন্ডোজ অপারেটিং সিস্টেমের অংশ তো নয়? এগুলো দুটি সম্পূর্ণ ভিন্ন অপারেটিং সিস্টেম। অতীতে, উইন্ডোজের সাথে লিনাক্স স্ক্রিপ্টিং ব্যবহার করার একমাত্র উপায় ছিল Cygwin-এর মতো কিছু ইনস্টল করা। অথবা ডুয়াল বুট লিনাক্স সিস্টেম ব্যবহার করা। অথবা Samba-এর মতো কিছু ইনস্টল করা।
উইন্ডোজ ১০-এ সব কিছু পরিবর্তন হয়েছে! মাইক্রোসফট উইন্ডোজ স্টোরে লিনাক্সের বেশ কিছু ডিস্ট্রিবিউশন উপলব্ধ। Appuals-এর এই আগের কালি লিনাক্স সম্পর্কিত আর্টিকেল উইন্ডোজ ১০ এনভায়রনমেন্টে একটি নির্দিষ্ট লিনাক্স ডিস্ট্রিবিউশন পাওয়ার একটি পদ্ধতি বর্ণনা করে।
আপনার উইন্ডোজ মেশিনে লিনাক্স স্ক্রিপ্ট ব্যবহার করার সুবিধাগুলোর মধ্যে একটি হল আপনি শক্তিশালী লিনাক্স স্ক্রিপ্টিং ভাষা ব্যবহার করে কাজগুলো অটোমেট করতে পারেন, বিশেষ করে আপনি যদি পাওয়ারশেল বা ডস ব্যাচ ফাইল চেয়ে লিনাক্স স্ক্রিপ্টিং-এ আরও পরিচিত হন। এই আর্টিকেলে ব্যাখ্যা করা হয়েছে কিভাবে একটি সাধারণ উইন্ডোজ ডেস্কটপ পরিষ্কার করতে লিনাক্স "ব্যাশ" স্ক্রিপ্ট লিখতে হয়। আপনি যদি লিনাক্সে নতুন হন, তবে এই আর্টিকেল থেকে আপনি বেসিক্স শিখবেন এবং একটি উপযোগী ইউটিলিটি তৈরি করবেন।
আমরা একটি বেসিক উবুন্টু লিনাক্স টার্মিনাল ব্যবহার করব, (উইন্ডোজ ১০ মেশিনে উইন্ডোজ স্টোরে উপলব্ধ) যা আপনাকে bash, ssh, git, apt এবং অন্যান্য অনেক লিনাক্স কমান্ড ব্যবহার করতে দেয়। আপনি যদি ইতিমধ্যে না করে থাকেন তবে এটি ইনস্টল করতে হবে। পদ্ধতিটি এখানে ব্যাখ্যা করা আছে।
লিনাক্স কমান্ড লাইন
একবার উবুন্টু ইনস্টল করে চালালে আপনাকে একটি কমান্ড লাইন উইন্ডো मिलবে, নিচের ছবির মতো। এটি আপনাকে একটি ব্যাশ লিনাক্স কমান্ড লাইন দেবে:

এখন আমরা আমাদের স্ক্রিপ্ট লিখব। আপনি যেকোনো এডিটর দিয় ফাইল এডিট করতে পারেন, উইন্ডোজ এডিটর যেমন নোটপ্যাড, বা লিনাক্স এডিটর যেমন vi যদি আপনি সেটি ব্যবহার করতে আত্মবিশ্বাসী হন।
যখন আপনি উবুন্টু টার্মিনাল খুলবেন, আপনার লোকেশন হবে আপনার হোম ডিরেক্টরি, উবুন্টু ওয়ার্কস্পেসে। এটি কমান্ড প্রম্পটে নিচের কমান্ড দিয়ে জানা যায়:
echo $HOME
এবং এটি আপনার হোম ডিরেক্টরি আউটপুট করবে নিচের স্ক্রিনশটের মতো। লিনাক্স ফরম্যাট, ডিরেক্টরি উপস্থাপন করতে ফরোয়ার্ড স্ল্যাশ "/" ব্যবহার করে।

সুবিধার জন্য, আমরা স্ক্রিপ্টটি হোম ডিরেক্টরিতে রাখব।
পরবর্তী ধাপ হল আপনার ডেস্কটপের লোকেশন জানা, যেটি লিনাক্স পথ হিসেবে পরিচিত। সঠিক ডিরেক্টরিতে ফাইলগুলোর ऊपर অ্যাকশন নেওয়ার জন্য এটি জানা দরকার।
টার্মিনলে "cd /" টাইপ করুন। এটি আপনাকে আপনার উবুন্টু এনভায়রনমেন্টের রুট এলাকায় নিয়ে যাবে।
তারপর "ls" টাইপ করুন
এটি লিনাক্সে সব ডিরেক্টরি লিস্ট করবে। আপনি লিনাক্স টার্মিনলে এইরকম কিছু দেখবেন:

আমাদের আপনার ইউজার ডেস্কটপ খুঁজে বের করতে হবে। ধরে নিলে এটি C ড্রাইভে আছে, "mnt" ডিরেক্টরিতে পরিবর্তন করুন। এখানে উইন্ডোজ ড্রাইভগুলো এইরকম চিহ্নিত হবে:

তারপর আপনাকে জানতে হবে আপনার ডেস্কটপ কোন ডিরেক্টরিতে অবস্থিত। উইন্ডোজে ফাইল এক্সপ্লোরারের "Quick access" লিস্টে ডেস্কটপ আইকনে "রাইট ক্লিক" করে সাধারণত এটি পাওয়া যায়। আপনার ডেস্কটপ ডিরেক্টরির লোকেশন দেখানো হবে:

এটি থেকে, আপনি লিনাক্সে টার্মিনাল ব্যবহার করে আপনার ডিরেক্টরিতে পরিবর্তন করতে পারেন:
তাই, এই উদাহরণে, আপনি টার্মিনালে টাইপ করুন, মনে রাখবেন যে উইন্ডোজের ব্যাকস্ল্যাশ লিনাক্সে ফরোয়ার্ড স্ল্যাশের সমতুল্য। আমার কেসে, "চেঞ্জ ডিরেক্টরি" কমান্ডের জন্য পথটি হল:
cd /mnt/c/Users/gofor/OneDrive/Desktop
তারপর "ls" ব্যবহার করে আপনার ডেস্কটপের সব ফাইল লিস্ট করুন:
যদি এটি আমার ডেস্কটপের মত হয়, তবে আপনি ফাইলগুলোর একটি লম্বা লিস্ট পাবেন:

আপনি দেখতে পাচ্ছেন উইন্ডোজে আমার ডেস্কটপ কত গুলো 보여ছে:

আমার অন্য ২টি মনিটরেও আরও আইকন ছিল, তাই আমাদের এই ফাইলগুলো শ্রেণিবদ্ধ এবং সংগঠিত করতে হবে! প্রদত্ত স্ক্রিপ্ট প্রতিটি ফাইল টাইপ নেবে, এবং সেগুলোকে ডেস্কটপে একটি প্রাসঙ্গিক নামে ফোল্ডারে রাখবে।
যেমন, শর্টকাট ফাইলগুলো, এগুলো *.lnk ফাইল, তাই আমরা সেগুলোকে "SHORTCUTS" নামে একটি ফোল্ডারে সরাব।
একইভাবে, ইমেজ ফাইলগুলো, যেমন .jpg, .png, .bmp, .svg "IMAGES" নামে একটি ফোল্ডারে সরানো হবে।
ডকুমেন্ট এবং অফিস ডকুমেন্ট, যেমন ওয়ার্ড ফাইল অর্থাৎ .docx, .pdf, .xls "OFFICEDOCS" নামে একটি ফোল্ডারে রাখা হবে।
তাই, যখন স্ক্রিপ্টটি চালানো হবে, সব ডকুমেন্ট सम्बन्धিত ফাইল ক্যাটাগরির জন্য তৈরি করা সংশ্লিষ্ট ডিরেক্টরিতে সংগঠিতভাবে উপলব্ধ হবে। এটি ডেস্কটপ গুলোছাড়া করবে এবং আপনার ডেস্কটপ ফাইলগুলো আরও সংগঠিত করবে। আপনি যত ইচ্ছে ফোল্ডার টাইপ তৈরি করতে পারেন এবং ফাইল ক্রাইটেরিয়া সংজ্ঞায়িত করতে পারেন। ফাইলগুলো শুধু ফাইল টাইপ অনুযায়ী নয়, আপনি ইচ্ছেমতো ক্যাটাগরি ফোল্ডার তৈরি করতে পারেন, যেমন "HRFILES" এবং "PROJECTFILES"। এই উদাহরণে, আমরা ফাইলগুলকে তাদের ফাইল টাইপ অনুযায়ী সংগঠিত করব।
ক্যাটাগরি এবং ফাইল লিস্ট তৈরি করা
এই অ্যাপ্লিকেশন ব্যবহার করার জন্য, আমাদের ২টি ফাইল প্রয়োজন:
A) ক্যাটাগরি এবং ফাইল টাইপের একটি লিস্ট যেগুলো সেই ক্যাটাগরিতে যাবে, কমা-ডিলিমিটেড CSV ফাইলে থাকবে। প্রতিটি ক্যাটাগরির নাম ডেস্কটপে ডিরেক্টরির নাম হবে যেখানে ফাইলগুলো রাখা হবে। আপনি যেকোনো পছন্দের এডিটর দিয়ে CSV ফাইল তৈরি করতে পারেন। এই উদাহরণে, আমরা নোটপ্যাড ব্যবহার করব।
B) একটি লিনাক্স স্ক্রিপ্ট যা ক্যাটাগরি ফাইলটি পড়ে এবং প্রয়োজনীয় টাইডি ফাংশন প্রক্রিয়া করবে।
টার্মিনালে করেন্ট ডিরেক্টরিতে ফাইল তৈরি করতে টাইপ করুন:
notepad cleanup.csv
যেহেতু ফাইলটি এই স্টেজে অস্তিত্বে নেই, এটি আপনাকে একটি নতুন ফাইল তৈরি করার অনুরোধ করবে, তাই শুধু "Yes" টিপুন।
এখন আমরা নিচের বিবরণটি প্রবেশ করাব, ফরম্যাটে "category,filetype1,filetype2,filetype3,...,etc" প্রতিটি ক্যাটাগরির জন্য ১ লাইন:
SHORTCUTS,lnk
IMAGES,jpg,png,svg
DOCUMENTS,txt,docx,doc,pdf
প্রথম ফিল্ড হবে ডেস্কটপে ডিরেক্টরির নাম, যেখানে বাকি ফাইল টাইপগুলো রাখা হবে। বাকি ফিল্ডগুলো হল আপনি যেসব ফাইল টাইপ ফোল্ডারে সরাতে চান।
তাই, SHORTCUTS ফোল্ডারের জন্য, সব *.lnk ফাইল সেটি ফোল্ডারে সরানো হবে। IMAGES ফোল্ডারের জন্য, *.jpg, *.png এবং *.svg এক্সটেনশনवाले সব ফাইল IMAGES ফোল্ডারে সরানো হবে। শেষে, আমরা সব *.txt, *.docx, *.doc এবং *.pdf ফাইল DOCUMENTS ফোল্ডারে সরাব। এইভাবে, আমরা ফাইলগুলকে সঠিক ডিরেক্টরিতে সংগঠিত করছি।
CSV ফাইল তৈরি হলে, আমরা স্ক্রিপ্ট লিখতে প্রস্তুত। আমরা স্ক্রিপ্টের নাম রাখব, cleanup.sh। বتبার,this скрип্টে ন্যূনতম ভ্যালিডেশন থাকবে, তাই আপনাকে নিশ্চিত করতে হবে CSV ফাইলটি সঠিক ফরম্যাটে আছে, নাহলে এটি কাজ করবে না! আমরা এই স্ক্রিপ্টে শুধু ফাইল এবং ফোল্ডার আছে কিনা তা চেক করব, ন্যূনতম চেক হিসেবে।
আপনি যদি ইউনিক্স টাইপ এডিটর যেমন vi জানেন, তবে টার্মিনালে স্ক্রিপ্ট এডিট করতে পারেন, অথবা সিম্পলি নোটপ্যাড ব্যবহার করতে পারেন:
notepad cleanup.sh
স্ক্রিপ্টের অ্যাকশন হল আমরা স্ক্রিপ্টে পড়ছি এমন CSV ফাইলের নাম সেট করা, এবং যে ডেস্কটপ পরিষ্কার করতে চাই তার লোকেশন। আমরা cleanup CSV ফাইল এবং ডেস্কটপ লোকেশনের জন্য ভেরিয়েবল সেট করব। আমার কেসে, এটি নিচের মত। আপনাকে আপনার নিজের ডেস্কটপ লোকেশনের জন্য প্রতিস্থাপন করতে হবে। দয়া করে মনে রাখবেন, "<" এবং ">" এর মধ্যে যেকোনো কিছু হল প্লেসহোল্ডার যেখানে আপনাকে আপনার নির্দিষ্ট তথ্য ইনপুট করতে হবে।
তাহলে, স্ক্রিপ্টের প্রথম ২ লাইন হল:
DESKTOP=/mnt/c/Users/<your windows location>/Desktop
CSV=cleanup.csv
সম্পূর্ণ স্ক্রিপ্ট নিচে দেখা যাচ্ছে। কমান্ডগুলো বুঝতে কমেন্টগুলো পড়ুন, এবং আপনি যদি কোনো কমান্ড সম্পর্কে নিশ্চিত না হন, তবে লিনাক্স কমান্ড লাইনে "man <command name>" ট্রাই করুন, কমান্ডটি কীভাবে কাজ করে সে সম্পর্কে আরও জানতে।
cleanup স্ক্রিপ্ট এক্সিকিউটেবল করুন এবং চালান
হোম কমান্ড লাইন থেকে স্ক্রিপ্ট চালাতে, আপনাকে নিচের কমান্ড দিয়ে এক্সিকিউটেবল করতে হবে:
chmod +x cleanup.sh
স্ক্রিপ্ট চালাতে, আপনাকে নিচের কমান্ড টাইপ করতে হবে, যেহেতু এটি করেন্ট ডিরেক্টরিতে আছে।
./cleanup.sh
এখানে স্ক্রিপ্ট চালানোর আগে এবং পরের আমার ডেস্কটপ কেমন দেখত। আপনি দেখতে পাচ্ছেন যে সরানো ফাইলগুলো সম্বলিত ফোল্ডারগুলো এখন তৈরি হয়েছে, এবং ডেস্কটপ অনেক কম গুলোছাড়া:
Before:
After:
এবং SHORTCUTS ডিরেক্টরি, যেখানে সব শর্টকাট ডেস্কটপ থেকে সরানো হয়েছে।

উইন্ডোজের জন্য পূর্ণ ডেস্কটপ টাইডি লিনাক্স স্ক্রিপ্ট
স্ক্রিপ্টে "#" দ্বারা প্রিফিক্স করা কমেন্টগুলো পড়ুন, কারণ সেগুলো ব্যাখ্যা করে কীভাবে স্ক্রিপ্ট কাজ করে। # লোকাল ডেস্কটপ বা যে কোনো ডিরেক্টরি আপনি পরিষ্কার করতে চান তার লোকেশন, এবং, CSV ফাইলের নামের জন্য ভেরিয়েবল সেট করুন।
DESKTOP=/mnt/c/Users/gofor/OneDrive/Desktop
CSV=cleanup.csv
# লিনাক্স "test" কমান্ড এবং ফাইল অস্তিত্বের জন্য "-f" ফ্ল্যাগ ব্যবহার করে cleanup csv ফাইল আছে কিনা চেক করুন।
# যদি ফাইলটি না থাকে, একটি এরর মেসেজ আউটপুট করুন এবং তারপর স্ক্রিপ্ট থেকে বের হয়ে যান।
if [ ! -f ${CSV} ]then
echo The cleanup.csv file does not exist.
exit -1
fi# এখন CSV কনভার্ট করুন যদি এটি ডস ফরম্যাটে সংরক্ষিত থাকে ইউনিক্স ফরম্যাটে ক্যারিজ রিটার্ন ক্যারেক্টার সরিয়ে।
# আউটপুট একটি টেম্পোরারি ফাইলে সংরক্ষণ করুন, তারপর টেম্পোরারি ফাইলটি মূল নামে রিনেম করুন।
tr -d '\r' < $CSV > temp.csv
mv temp.csv $CSV
# এখন, CSV ফাইলটি লাইন বাই লাইন প্রক্রিয়া করুন, এবং প্রথম আর্গুমেন্টের নাম সংরক্ষণ করুন, যা হল
# ক্যাটাগরি/ডিরেক্টরির নাম, যার উপর, বাকি সব আর্গুমেন্ট হল ফাইল টাইপ যেগুলো
# সেই ডিরেক্টরিতে রাখা হবে।
while read csvline
do
count=1
for filetype in `echo "$csvline" | tr , '\n'`
do
if [ $count -eq 1 ] then
# যেহেতু এটি প্রথম আর্গুমেন্ট, চেক করুন ফোল্ডারটি ইতিমধ্যে আছে কিনা, এবং না থাকলে তৈরি করুন।
if [ ! -d ${DESKTOP}/$filetype ] then
# ডিরেক্টরি নেই, তাই আমরা এটি তৈরি করব।
mkdir ${DESKTOP}/$filetype
fi
CATEGORY=${filetype}
else
# একটি বান্ধব মেসেজ আউটপুট করুন যা ইঙ্গিত দেয় স্ক্রিপ্টটি কী করছে।
echo "moving *.${filetype} to ${CATEGORY}"
# ফাইল সরানোর সময় কোনো এরর মেসেজ প্রদর্শন نکن (যেমন >2 /dev/null) যদি ফাইলগুলো না থাকে,
# তাই "mv" কমান্ডটি "সাইলেন্ট"।
mv ${DESKTOP}/*.${filetype} ${DESKTOP}/${CATEGORY} 2> /dev/null
fi
count=`expr $count + 1`
done
done < cleanup.csv