কম্পিউটার

শুধুমাত্র ডটফাইল এবং ব্যাশ স্ক্রিপ্ট ব্যবহার করে একটি তাজা উবুন্টু ডেস্কটপ কিভাবে সেট আপ করবেন

GitHub-এ ওপেন সোর্স ফাইল সম্পর্কে আমার সবচেয়ে প্রিয় জিনিসগুলির মধ্যে একটি হল অন্যরা কীভাবে করে (কিছু লোক যা বলতে পারে) তাদের .bashrc সেট আপ করার মতো জাগতিক জিনিসগুলি দেখার ক্ষমতা। এবং অন্যান্য ডটফাইল। যদিও আমি প্রথমবার লিনাক্সে আসার সময় রইসিং নিয়ে ততটা উৎসাহী নই, তবুও যখন আমি এমন একটি কনফিগারেশন সেটিং খুঁজে পাই যা জিনিসগুলিকে আরও সুন্দর এবং দ্রুত করে, এবং এইভাবে, আরও ভাল করে তোলে তখনও আমি বেশ উত্তেজিত হই৷

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

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

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

অতিরিক্তভাবে, ভার্চুয়াল মেশিন, বা ভিএম, বা এমনকি একটি ভার্চুয়াল প্রাইভেট সার্ভার, বা ভিপিএস সেট আপ করার সময় এর মতো কার্যকারিতা অত্যন্ত কার্যকর হবে। (যে দুটিই, এখন আমি এটি লিখছি, সম্ভবত আমার আরও ধ্বংসাত্মক পরীক্ষা-নিরীক্ষার জন্য আরও ক্ষমাশীল লক্ষ্য তৈরি করবে... বাঁচুন এবং শিখুন!)

ঠিক আছে, কিছু গ্রেপিং এবং গুগলিং এবং চারপাশে খনন করার পরে, আমার কাছে এখন স্ক্রিপ্টের একটি স্যুট রয়েছে যা এটি করতে পারে:

শুধুমাত্র ডটফাইল এবং ব্যাশ স্ক্রিপ্ট ব্যবহার করে একটি তাজা উবুন্টু ডেস্কটপ কিভাবে সেট আপ করবেন

এখানে সেটআপের একটি ভিডিও দেখুন৷

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

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

Dotfiles

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

.bashrc

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

এই ফাইলের লাইনগুলি কীস্ট্রোক হ্রাস করে এমন উপনাম তৈরি করে বা দরকারী তথ্য সহ একটি সহায়ক প্রম্পট প্রদর্শন করে আপনার কর্মপ্রবাহকে উন্নত করতে সাহায্য করতে পারে। এটি এমনকি এডির মতো ব্যবহারকারীর তৈরি প্রোগ্রাম চালাতে পারে। আরও ধারণার জন্য, আপনি আমার .bashrc দেখতে পারেন GitHub-এ ফাইল।

.vimrc

.vimrc ডটফাইল সমস্ত টেক্সট এডিটর, ভিম এর চ্যাম্পিয়ন কনফিগার করে। (আপনি যদি এখনও কীবোর্ড শর্টকাটগুলির ক্ষমতাগুলি ব্যবহার না করে থাকেন তবে আমি ভিম শেখার জন্য একটি মজাদার গেমের সুপারিশ করছি৷)

.vimrc-এ , আমরা ডিসপ্লে সেটিংস, রঙ এবং কাস্টম কীবোর্ড শর্টকাটের মতো সম্পাদক পছন্দগুলি সেট করতে পারি। আপনি আমার .vimrc দেখে নিতে পারেন GitHub-এ।

অন্যান্য ডটফাইলগুলি আপনার ব্যবহার করা প্রোগ্রামগুলির উপর নির্ভর করে কার্যকর হতে পারে, যেমন .gitconfig অথবা .tmux.conf . GitHub-এ ডটফাইলগুলি অন্বেষণ করা আপনার কাছে কী উপলব্ধ এবং দরকারী তা বোঝার একটি দুর্দান্ত উপায়!

ডটফাইল লিঙ্ক করা

আমরা আমাদের সমস্ত ডটফাইলের জন্য সিম্বলিক লিঙ্ক বা সিমলিঙ্ক তৈরি করতে একটি স্ক্রিপ্ট ব্যবহার করতে পারি। এটি আমাদের সমস্ত ফাইলকে একটি কেন্দ্রীয় সংগ্রহস্থলে রাখতে দেয়, যেখানে সেগুলি সহজেই পরিচালনা করা যায়, সেইসঙ্গে আমাদের প্রোগ্রামগুলি কনফিগারেশন ফাইলটি খুঁজে পাওয়ার আশা করে এমন জায়গায় এক ধরণের স্থানধারক প্রদান করে। এটি সাধারণত, কিন্তু সবসময় নয়, ব্যবহারকারীর হোম ডিরেক্টরি। উদাহরণস্বরূপ, যেহেতু আমি গিটহাবে আমার ডটফাইলগুলি সঞ্চয় করি, তাই আমি সেগুলিকে ~/github/dotfiles/ এর মতো একটি পাথ সহ একটি ডিরেক্টরিতে রাখি যখন ফাইলগুলি নিজেরাই সিমলিংক করা হয়, ফলে ~/.vimrc এর মত একটি পথ তৈরি হয় .

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

symlink.sh স্ক্রিপ্ট আমাদের $HOME-এ প্রতিটি ডটফাইলের জন্য সিমলিঙ্ক তৈরি করার চেষ্টা করে কাজ করে . এটি প্রথমে একটি সিমলিঙ্ক ইতিমধ্যেই বিদ্যমান কিনা বা একই নামের একটি নিয়মিত ফাইল বা ডিরেক্টরি বিদ্যমান কিনা তা পরীক্ষা করে। পূর্বের ক্ষেত্রে, সিমলিংকটি সরানো হয় এবং পুনরায় তৈরি করা হয়; পরবর্তীতে, ফাইল বা ডিরেক্টরির নাম পরিবর্তন করা হয়, তারপর সিমলিংক তৈরি করা হয়।

সফ্টওয়্যার ইনস্টল করা

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

উবুন্টুর সাথে, আমাদের সম্ভবত প্রয়োজনীয় বেশিরভাগ প্রোগ্রাম ডিফল্ট উবুন্টু সফ্টওয়্যার সংগ্রহস্থলের মাধ্যমে উপলব্ধ। আমরা সাধারণত apt search <program> কমান্ড দিয়ে এগুলো অনুসন্ধান করি এবং sudo apt install <program> দিয়ে ইন্সটল করুন . আমরা চাই এমন কিছু সফ্টওয়্যার ডিফল্ট সংগ্রহস্থলে নাও থাকতে পারে, বা সবচেয়ে বর্তমান সংস্করণে সেখানে অফার নাও হতে পারে। এই ক্ষেত্রে, আমরা এখনও একটি PPA, বা ব্যক্তিগত প্যাকেজ সংরক্ষণাগার ব্যবহার করে উবুন্টুতে এই প্রোগ্রামগুলি ইনস্টল করতে পারি। আমাদের শুধু সতর্ক থাকতে হবে যে আমরা যে পিপিএগুলি বেছে নিই তা হল অফিসিয়াল সোর্স থেকে৷

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

যেহেতু bash স্ক্রিপ্টগুলি শুধুমাত্র কমান্ডের একটি সংগ্রহ যা আমরা টার্মিনালে পৃথকভাবে চালাতে পারি, তাই আমাদের সমস্ত পছন্দসই প্রোগ্রাম ইনস্টল করার জন্য একটি স্ক্রিপ্ট তৈরি করা সমস্ত কমান্ডগুলিকে একটি স্ক্রিপ্ট ফাইলে রাখার মতোই সহজ। আমি ডিফল্ট সংগ্রহস্থলগুলির মধ্যে আমার ইনস্টলেশন স্ক্রিপ্টগুলি সংগঠিত করতে বেছে নিয়েছি, যেগুলি আমার aptinstall.sh দ্বারা ইনস্টল করা হয়েছে আমার programs.sh-এর মাধ্যমে পরিচালিত স্ক্রিপ্ট, এবং বহিরাগত উত্স জড়িত প্রোগ্রাম স্ক্রিপ্ট।

ডেস্কটপ পরিবেশ সেট আপ করা

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

সৌভাগ্যক্রমে, এই সমস্ত সেটিংসকে একটি নন-গ্রাফিকাল বিন্যাসে কোথাও সংরক্ষণ করতে হবে, যার মানে হল যে কীভাবে এটি করা হয়েছে তা যদি আমরা আবিষ্কার করতে পারি, তাহলে আমরা সম্ভবত একটি ব্যাশ স্ক্রিপ্টের সাথে সেটিংসকে সহজেই ম্যানিপুলেট করার উপায় খুঁজে পেতে পারি। দেখুন এবং টার্মিনাল কমান্ডটি দেখুন, gsettings list-recursively .

জিনোম ডেস্কটপ পরিবেশের জন্য অনেকগুলি সেটিংস রয়েছে। lessতে পাইপ করে আমরা তালিকাটি স্ক্রোল করা সহজ করে দিতে পারি (যদি, আমার মতো, আপনি কখনও কখনও এমন ব্যক্তি হন যে "শুধু আমাকে সবকিছু দেখতে দিন এবং আমি কী চাই তা বুঝতে দিন!") কোড> :gsettings list-recursively | less . বিকল্পভাবে, আমরা কি খুঁজছি সে সম্পর্কে যদি আমাদের ধারণা থাকে, তাহলে আমরা grep ব্যবহার করতে পারি। :gsettings list-recursively | grep 'keyboard' .

আমরা gsettings set দিয়ে আমাদের সেটিংস ম্যানিপুলেট করতে পারি আদেশ আমরা যে সেটিং চাই তার জন্য সিনট্যাক্স খুঁজে পাওয়া কখনও কখনও কঠিন হতে পারে, তাই যখন আমরা প্রথমে আমাদের স্ক্রিপ্ট তৈরি করি, তখন আমি পরিবর্তন করতে GUI ব্যবহার করার পরামর্শ দিই, তারপর gsettings খোঁজার লাইন আমরা পরিবর্তন করেছি এবং এর মান রেকর্ড করছি।

কিছু অনুপ্রেরণার জন্য, আপনি আমার desktop.sh দেখতে পারেন GitHub-এ সেটিংস স্ক্রিপ্ট।

এটি সব একসাথে রাখা

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

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

একটি নতুন উবুন্টু ডেস্কটপ মেশিনের সেট আপ পরিচালনা করার জন্য এখানে আমার মাস্টার স্ক্রিপ্ট রয়েছে:

#!/bin/bash

./symlink.sh
./aptinstall.sh
./programs.sh
./desktop.sh

# Get all upgrades
sudo apt upgrade -y

# See our bash changes
source ~/.bashrc

# Fun hello
figlet "... and we're back!" | lolcat

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

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

বাহ্যিক সংগ্রহস্থল হোস্টের উপর নির্ভর করা 100% কভারেজ অফার করে না। যে ফাইলগুলি আপনি বাহ্যিকভাবে হোস্ট করা সংগ্রহস্থলে রাখবেন না (ব্যক্তিগত বা অন্যথায়) ফলস্বরূপ টানা যাবে না। Git উপেক্ষা করা অবজেক্ট যা অন্তর্ভুক্ত ফাইলগুলি থেকে তৈরি করা যায় না, যেমন ব্যক্তিগত কী এবং গোপনীয়তাগুলি পুনরায় তৈরি করা হবে না। তবে, সেই ফাইলগুলি সম্ভবত যথেষ্ট ছোট যে আপনি কয়েকটি এনক্রিপ্ট করা USB ফ্ল্যাশ ড্রাইভে পুরো গুচ্ছ ফিট করতে পারেন (এবং যদি আপনার ব্যক্তিগত কী ব্যাকআপ না থাকে, তাহলে আপনাকে প্রথমে এটি করতে হবে?)।

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


  1. কেডিই কানেক্ট ব্যবহার করে উবুন্টু ডেস্কটপে কীভাবে অ্যান্ড্রয়েড বিজ্ঞপ্তি পাবেন

  2. কিভাবে জনপ্রিয় ডেস্কটপ এবং অনলাইন টুল ব্যবহার করে একটি PDF সম্পাদনা করবেন

  3. ব্যাশ-ইট - আপনার স্ক্রিপ্ট এবং উপনাম নিয়ন্ত্রণ করতে ব্যাশ ফ্রেমওয়ার্ক

  4. কিভাবে উবুন্টু লিনাক্স আপডেট করবেন [সার্ভার এবং ডেস্কটপ]