ডটফাইলস (Dotfiles) হলো গুরুত্বপূর্ণ ফাইল যা একটি সফ্টওয়্যার ডেভেলপারের ক্যারিয়ারে অপরিহার্য ভূমিকা পালন করে।
প্রথমত, এগুলো আপনাকে অধিক продук্টিভ করতে সাহায্য করে। কিন্তু শু provincieই নয় - আপনি যে প্রোডাক্টিভ সেটআপটি নিজের জন্য তৈরি করেছেন, সেটি যেকোনো মেশিনে পেতে পারবেন।
এই আর্টিকেলটি ডটফাইলস দিয়ে শুরু করার একটি পরিচিতি।
আপনি শিখবেন ডটফাইলস কী, আপনার সিস্টেমে সেগুলো কীভাবে খুঁজে বের করবেন, এবং কীভাবে কিছু সিম্পল ডটফাইল তৈরি করবেন। পাশাপাশি আমি আপনাকে কিছু সাজেশন ও রিসোর্স দেব কনফিগারেশন কাস্টমাইজ করতে এবং জ্ঞান বাড়াতে।
চলুন শুরু করা যাক!
ডটফাইলস কী?
অনেক কম্পিউটার সফ্টওয়্যার প্রোগ্রাম তাদের কনফিগারেশন সেটিংস প্লেইন, টেক্সট-ভিত্তিক ফাইল বা ডিরেক্টরিতে সংরক্ষণ করে।
ডটফাইলস হলো বিভিন্ন প্রোগ্রামের কনফিগারেশন ফাইল, এবং এগুলো সেসব প্রোগ্রামের ফাংশনালিটি ম্যানেজ করতে সাহায্য করে।
সাধারণ ফাইল ও ডিরেক্টরির সাথে এগুলোর পার্থক্য হচ্ছে তাদের প্রিফিক্স (prefix)।
প্রতিটি ফাইল ও ডিরেক্টরির নাম ডট (.) দিয়ে শুরু হওয়ায় এদেরকে ডটফাইলস বলা হয়।
ইউনিক্স-ভিত্তিক সিস্টেমে, ডটফাইলস ডিফল্টভাবে অপারেটিং সিস্টেম দ্বারা লুকানো থাকে।
সাধারণ ডটফাইলসের উদাহরণ
বেশিরভাগ প্রোগ্রাম ডিফল্টভাবে আপনার হোম ডিরেক্টরিতে তাদের কনফিগারেশন সংরক্ষণ করে।
কিছু সাধারণ ডটফাইলস যা আপনি শুনে থাকতে পারেন বা ব্যবহার করে থাকতে পারেন:
- যদি আপনি বাশ শেল (Bash shell) ব্যবহার করেন, তবে আপনার
.bash_profileএবং.bashrcফাইল থাকতে পারে, যারা প্রতিবার নতুন টার্মিনাল সেশন শুরু করার সময় লোড হয় এবং শেল কনফিগার করে। - যদি আপনি Zsh শেল ব্যবহার করেন, যা ম্যাকওএস-র নতুন ডিফল্ট, তবে আপনার
.zshrcফাইল থাকবে যা শেল কনফিগার ও কাস্টমাইজ করে। - যদি আপনি কমান্ড লাইন কোড এডিটর ভিম (Vim) ব্যবহার করেন, তবে এর কনফিগারেশন
.vimrcফাইলে সংরক্ষণ করা হয়। - আপনার লোকাল মেশিনে গিট (Git) সেটআপ ও কনফিগার করার পর, আপনার একটি
.gitconfigফাইল থাকবে, যাতে আপনার সকল তথ্য ও সেটিংস থাকে। - অনেক প্রোগ্রাম হোম ডিরেক্টরির বদলে হিডেন
.configডিরেক্টরিতে (ফোল্ডারে) তাদের কনফিগারেশন সংরক্ষণ করে।
ডটফাইলস কীভাবে খুঁজে বের করবেন
ফাইন্ডারে (Finder), আপনার হোম ডিরেক্টরির রুট (root) কিছু এই तरह দেখতে পারে:

কিন্তু আপনি দেখেছেন যে কম্পিউটার সিস্টেমে ডিফল্টভাবে লুকানো অনেক বেশি ফাইল থাকে।
ফাইন্ডারে ডটফাইলস দেখতে, আপনার হোম ডিরেক্টরির রুটে যান এবং Command Shift . কিজ একসাথে ধরে রাখুন।
শীঘ্রই আপনি নানারকম ডটফাইলস দেখতে পাবেন যা হয় আপনি নিজে তৈরি করেছেন বা কোনো সফ্টওয়্যার ইনস্টল করার সময় তৈরি হয়েছে।

কমান্ড লাইন থেকে ডটফাইলস দেখতে (যেখানে আপনি সারাবেশ এদের সাথে কাজ করবেন), আবার আপনাকে কিছু একস্ট্রা ধাপ নিতে হবে।
লিস্ট কমান্ড, ls, যা বর্তমান ডিরেক্টরির সকল ফাইল ও ডিরেক্টরি লিস্ট করে, ডিফল্টভাবে ডটফাইলস দেখায় না - মাঝপথে সেগুলো থাকা সত্ত্বেও।
প্রথমে, আপনার হোম ডিরেক্টরিতে নেভিগেট করুন। আপনি যদি ইতিমধ্যে সেখানে না থাকেন তবে cd কমান্ড ব্যবহার করে সেখানে যেতে পারেন।
তারপর ls কমান্ড সাথে -a ফ্ল্যাগ ব্যবহার করুন, যা all অর্থ করে, নিচের মতো:
ls -a
আপনি যদি আপনার ফাইল সম্পর্কে কিছু এক্সট্রা তথ্য দেখতে চান, তবে -l ফ্ল্যাগও ব্যবহার করতে পারেন, যা লอง ফরম্যাটে ফাইল ও ডিরেক্টরি লিস্ট করে এবং তৈরি হওয়ার তারিখ, সময়, সাইজ ইত্যাদি বিবরণ দেয়।
ls -la
আউটপুটে, আপনি বর্তমান হোম ডিরেক্টরির সকল ফাইল ও ডিরেক্টরি - লুকানো গুলো সহ - দেখতে পাবেন।

পিরিয়ড/ডট (.) দিয়ে শুরু হওয়া প্রতিটি ফাইল ও ডিরেক্টরি হলো একটি ডটফাইল।
কেন ডটফাইলস ব্যবহার করবেন?
আপনার ডটফাইলস আপনার ব্যক্তিগত বিষয়।
আপনি পর্যাপ্ত সময় ব্যয় করে আপনার সেটআপ ফাইন-টিউন করেছেন। আপনি আপনার ওয়ার্কফ্লো, এস্থেটিক, এবং পছন্দ অনুযায়ী কনফিগারেশন ও সেটিংস কিউরেট করেছেন। এবং আপনি একটি ডেভেলপমেন্ট এনভায়রনমেন্ট তৈরি করেছেন যা আপনাকে ব্যক্তিগতভাবে অধিক প্রোডাক্টিভ হতে সাহায্য করে।
কিন্তু যদি সেই সব সময় ব্যয় করার পর, আপনাকে এখন একটি নতুন, ভিন্ন মেশিনে স্যুইচ করতে হয়? এর মানে কি আপনাকে আবার শুরু থেকে শুরু করতে হবে?
আপনি কীভাবে সেই এক্সएक্ট সেটিংস ও কমান্ডস মনে রাখবেন?
অথবা যদি আপনার دوটি মেশিন থাকে এবং আপনি চান আপনার সেটআপ দুটো সিস্টেমে এক্সাক্টলি একই থাকে?
ডেভেলপারদের একটি প্রধান লক্ষ্য হলো পুনরাবৃত্তিমূলক টাস্কগুলো অটোমেট করা।
একটি ডটফাইল রিপোজিটরি তৈরি করা যা সোর্স-কন্ট্রোল্ড (source-controlled) এবং গিটহাবে (GitHub) হোস্ট করা থাকলে, নতুন কম্পিউটার সেটআপ করার সময় আপনার পূর্বের সেটিংস ইনস্টল করতে সময় বাঁচাবে।
সেভাবে আপনার সকল সেটিংস ও পছন্দ অন্য মেশিনেও রিয়ুজযোগ্য (reusable) এবং কনসিস্টেন্ট (consistent) থাকবে।
ডটফাইলস কীভাবে তৈরি করবেন
আপনার ডটফাইলস রাখার জন্য একটি ফোল্ডার সেটআপ করার পদ্ধতি
সকল ডটফাইলস নিজস্ব একটি ফোল্ডারে রাখা ভালো অভ্যাস।
সহজতার জন্য, আমি হোম ডিরেক্টরির রুটে একটি ফোল্ডার তৈরির উদাহরণ দেখাব। কিন্তু আপনি যেকোনো সুবিধাজনক জায়গায় ফোল্ডার যোগ করতে পারেন।
এছাড়া, আমি .zshrc এবং .vimrc ফাইল তৈরির উদাহরণ দেখাব, কিন্তু অন্য যেকোনো ডটফাইল তৈরির ক্ষেত্রেও একই ধারণা প্রযোজ্য।
আপনার হোম ডিরেক্টরিতে নেভিগেট করুন (cd) এবং dotfiles নামে একটি ডিরেক্টরি তৈরি করুন যাতে সকল কনফিগারেশন ফাইল রাখা যায়:
mkdir dotfiles
ডটফাইলস তৈরি করতে, আপনি touch কমান্ড ব্যবহার করুন এবং আর্গুমেন্ট হিসেবে ফাইল(গুলোর) নাম দিন। ফাইল নামের আগে একটি পিরিয়ড (.) থাকবে।
dotfiles ডিরেক্টরিতে .zshrc এবং .vimrc ফাইল তৈরি করতে নিচের কমান্ডটি চালান:
touch ~/dotfiles/.zshrc ~/dotfiles/.vimrc
যদি এই ফাইলগুলো ইতিমধ্যে আপনার সিস্টেমে থাকে এবং আপনি সেগুলো dotfiles ডিরেক্টরিতে মুভ করতে চান, তবে mv কমান্ড ব্যবহার করে সেগুলো সেখানে মুভ করতে পারেন:
mv ~/.zshrc ~/dotfiles/
প্রথম আর্গুমেন্ট হলো ফাইলের বর্তমান পাথ - টিল্ডা (~) হোম ডিরেক্টরি বোঝায়। ডিফল্টভাবে অধিকাংশ হিডেন কনফিগারেশন ফাইল সেখানে থাকে।
দ্বিতীয় আর্গুমেন্ট হলো আপনি ফাইলটি যেখানে মুভ করতে চান সে পাথ। এই কেসে আপনি হোম ডিরেক্টরিতে অবস্থিত dotfiles ডিরেক্টরিতে মুভ করতে চান।
আপনি .vimrc ফাইলের জন্যও একই কাজ করতে পারেন:
mv ~/.vimrc ~/dotfiles/
ফাইলগুলো দেখতে:
ls -a dotfiles . .. .vimrc .zshrc
এই ফাইলগুলো inplace থাকলে আপনি সেখানে আপনার পছন্দসই সকল কনফিগারেশন যোগ করতে পারেন।
কনফিগারেশন সেটআপ করার পদ্ধতি
নিচে কিছু আইডিয়া দেওয়া হলো যা আপনার তৈরি করা ডটফাইলস কনফিগারেশন শুরু করতে সাহায্য করতে পারে।
আপনার Zsh প্রম্পট (prompt) পার্সোনালাইজ করার পদ্ধতি
.zshrc ফাইল সেটআপ করার পর, সেখানে যোগ করা যেকোনো কনফিগারেশন আপনার Zsh শেল প্রোগ্রামের কাস্টমাইজেশনকে প্রভাবিত করবে।
এখন হতে পারে আপনার শেল প্রম্পট কাস্টমাইজ করার সময়। এটি আপনার পছন্দের ব্যাপার, কিন্তু এখানে কিছু রিসোর্স দেওয়া হলো শুরু করার জন্য:
- How to customize your zsh prompt like a pro
- Jazz up your zsh terminal in seven steps
- More ideas to customize the zsh prompt
- How to Customize the zsh Prompt in the macOS Terminal
Vim কাস্টমাইজ করার পদ্ধতি
.vimrc ফাইল তৈরি করার পর, আপনি কমান্ড লাইন টেক্সট এডিটর Vim কাস্টমাইজ করতে পারেন। এখানে কিছু রিসোর্স দেওয়া হলো শুরুতে সাহায্য করার জন্য:
- Vimrc Configuration Guide
- How to Make Vim Look Good: 5 Vim Customization Tips
এলিয়াস (aliases) এবং ফাংশন (functions) কী?
আপনার ওয়ার্কফ্লো উন্নত করে প্রোডাক্টিভিটি বাড়ানোর একটি উপায় হচ্ছে আপনি যেসব কমান্ড ঘন ঘন ব্যবহার করেন সেগুলো টাইপ করার সময় কমাতে। আপনি শর্টকাট তৈরি করে এটি অর্জন করতে পারেন।
এলিয়াস হচ্ছে টার্মিনাল কমান্ডের শর্টকাট। এগুলো একটি বড় কমান্ডের ছোট সংস্করণ।
একজন ডেভেলপার হিসেবে আপনি গিট (Git) ঘন ঘন ব্যবহার করবেন, তাই গিট এলিয়াস তৈরি করা ভালো আইডিয়া যাতে দীর্ঘ, পুনরাবৃত্তিমূলক গিট কমান্ডে সময় বাঁচায়। এই ফ্রিকোডক্যাম্প আর্টিকেলে সবচেয়ে হেল্পফুল গুলো পড়ুন।
সময় বাঁচানোর আরেকটি উপায় হচ্ছে প্রসেসগুলো সহজ করা।
আপনি দুটি কমান্ড একত্রিত করে একটি আলাদা বিহেভিয়র (behavior) তৈরি করতে পারেন যা একটি নির্দিষ্ট কাজ করে। এর জন্য আপনি ফাংশন (function) তৈরি করতে পারেন।
বनানোর জন্য একটি হেল্পফুল ফাংশন হচ্ছে নতুন ডিরেক্টরি তৈরির কমান্ড (mkdir) এবং ডিরেক্টরি চেঞ্জ করার কমান্ড (cd) একসাথে একত্রিত করা।
এইভাবে, আপনি একটি নতুন ফোল্ডার তৈরি করবেন এবং সেটাতে অবিলম্বে চেঞ্জ করবেন - সব কিছু একই স্টেপে।
এটি করার ফাংশন নিচের মতো দেখাবে:
function mkcd() { mkdir -p "$@" && cd "$_"; }
Zsh-তে ফাংশন সম্পর্কে জানতে এই আর্টিকেল পড়ুন Scripting OS X-এ যা এলিয়াস এবং ফাংশন দুটোই কভার করে।
আপনি এলিয়াস এবং ফাংশন দুটোই আপনার .zshrc ফাইলে যোগ করতে পারেন বা আলাদা .aliases এবং .functions ডটফাইলস তৈরি করতে পারেন।
আপনার ডটফাইলস সিম্বলিক লিংক (Symlink) করার পদ্ধতি
আপনি লক্ষ্য করতে পারেন যে dotfiles ফোল্ডারের ফাইলগুলিতে যোগ করা সেটিংস আপনার সিস্টেমে কোনো ইফেক্ট দিচ্ছে না।
যে কথা আগে বলা হয়েছে, একটি প্রোগ্রামের কনফিগারেশন ফাইলস হিডেন থাকে এবং ডিফল্টভাবে হোম ডিরেক্টরিতে সংরক্ষিত থাকে। প্রোগ্রামটি সেখান থেকে তার সেটিংস খুঁজে পায় এবং পড়ে।
এটি ভালো আইডিয়া যে dotfiles ডিরেক্টরিতে আপনি আপনার পছন্দসই সেটিংস অন্যান্য তৈরি করা ফাইলসহ সংরক্ষণ করেছেন, সেটিকে ডিফল্ট হোম ডিরেক্টরির ফাইলসহ সিম্বলিক লিংক (symlink - অর্থাৎ একটি পয়েন্টার) করা।
মানো ফাইলটি একসাথে দুটি জায়গায় থাকছে!
ফাইলটি হবে dotfiles ডিরেক্টরিতেও এবং হোম ডিরেক্টরিতেও তার একটি 'কপি' থাকবে।
একটি লিংক তৈরি করতে, আপনি ln (link-এর সংক্ষিপ্ত) কমান্ড সাথে -s আর্গুমেন্ট (symbolic-এর জন্য) ব্যবহার করবেন।
.zshrc এবং .vimrc ফাইলস সিম্বলিক লিংক করার পদ্ধতি নিচে:
ln -s ~/dotfiles/.vimrc ~/.vimrc ln -s ~/dotfiles/.zshrc ~/.zshrc
এটি আপনার ব্যবহৃত প্রোগ্রামগুলকে জানাবে তাদের কনফিগারেশন ফাইলস সাধারণত কোথায় থাকে - হোম ডিরেক্টরিতে ফিরে।
ls -l ~/.zshrc lrwxr-xr-x 1 dionysialemonaki staff 39 Oct 21 18:30 /Users/dionysialemonaki/.zshrc -> /Users/dionysialemonaki/dotfiles/.zshrc
.zshrc ফাইলের ডিটেলস দেখলে পাওয়া যায় যে হোম ডিরেক্টরিতে অবস্থিত ফাইলটি dotfiles ডিরেক্টরির ফাইলের দিকে পয়েন্ট করছে। -> সিম্বলিক লিংক ইঙ্গিত করে।
সব ডটফাইলস ম্যানুয়ালি সিম্বলিক লিংক করা একটি কষ্টসাধ্য প্রক্রিয়া এবং আপনি ফোল্ডারে আরও ডটফাইলস যোগ করলে এটি দ্রুত ক্লান্তিকর ও পুনরাবৃত্তিমূলক হতে পারে।
প্রক্রিয়াটি সহজ করার জন্য, আপনি একটি শেল স্ক্রিপ্ট তৈরি করতে পারেন যা আপনার তৈরি বা ব্যবহৃত ডটফাইলসে ln -s কল অটোমেট করবে বা এই কাজের জন্য একটি ইউটিলিটি ব্যবহার করতে পারেন।
আপনার ডটফাইলস ভার্সন কন্ট্রোল করার পদ্ধতি
আপনার ফাইলগুলো ভার্সন কন্ট্রোল আন্ডার রাখলে 시간에 সাথে সাথে সেগুলোতে কिये गये পরিবর্তনগুলো ট্র্যাক করতে পারবেন, এবং সেগুলো গিটহাবে শেয়ার করতে পারবেন।
dotfiles ডিরেক্টরিতে চেঞ্জ ডিরেক্টরি করা নিশ্চিত করুন (cd dotfiles)।
আপনার ফাইলগুলো গিট রিপোজিটরিতে সংগঠিত করার জন্য এই ধাপগুলো ফলো করুন:
- রিপোজিটরি ইনিশিয়ালাইজ করুন:
git init
- আপনার তৈরি করা সকল ফাইল যোগ করুন:
git add .
- পরিবর্তনগুলো কমিট করুন এবং একটি কমিট মেসেজ যোগ করুন:
git commit -m "Added dotfiles"
আপনার ডটফাইলস গিটহাবে হোস্ট করার পদ্ধতি
নিশ্চিত করুন যে আপনি আপনার গিটহাব একাউন্টে সাইন ইন করেছেন।
তারপর, একটি নতুন রিপোজিটরি তৈরি করুন:

একটি নাম দিন এবং "Create repository"-এ ক্লিক করুন।
এরপর, কমান্ড লাইনে, যোগ করুন:
git remote add origin url #where 'url',the GitHub url of the repository you previously created #ending in .git
শেষে,
git push -u origin main
এখন আপনি আপনার ডটফাইলস অনলাইনে শেয়ার করতে পারবেন!
উপসংহার
এখন আপনি ডটফাইলসের বেসিক্স জানেন! আশা করি এই টিউটোরিয়ালটি আপনার জন্য হেল্পফুল ছিল।
আপনার ডটফাইলস প্রজেক্ট আপনার ক্যারিয়ার 내내 আপনার সাথে থাকবে এবং ডটফাইলস সম্পর্কে যত বেশি শিখবেন তত বড় হবে। এবং আপনার ওয়ার্কফ্লো ও ডেভেলপমেন্ট এনভায়রনমেন্ট সেটিংস সম্পর্কে আপনি যা পছন্দ করেন এবং না করেন সেটি ট্রায়াল অ্যান্ড এরর (trial and error) দিয়ে জানার সাথে সাথে এটি পরিবর্তনও হবে।
পড়ার জন্য ধন্যবাদ!