আপনার .bashrc ফাইল কাস্টমাইজ করা আপনার কর্মপ্রবাহকে ব্যাপকভাবে উন্নত করতে পারে এবং আপনার উত্পাদনশীলতা বাড়াতে পারে।
.bashrc হল একটি স্ট্যান্ডার্ড ফাইল যা আপনার লিনাক্স হোম ডিরেক্টরিতে অবস্থিত। এই নিবন্ধে আমি আপনাকে দরকারী .bashrc বিকল্প, উপনাম, ফাংশন, এবং আরও অনেক কিছু দেখাব।
.bashrc ফাইল কনফিগার করার প্রধান সুবিধা হল:
- উপানা যোগ করা আপনাকে দ্রুত কমান্ড টাইপ করতে দেয়, আপনার সময় বাঁচায়।
- ফাংশন যোগ করা আপনাকে জটিল কোড সংরক্ষণ এবং পুনরায় চালানোর অনুমতি দেয়।
- এটি দরকারী সিস্টেম তথ্য প্রদর্শন করে।
- এটি ব্যাশ প্রম্পট কাস্টমাইজ করে।
কিভাবে সম্পাদনা শুরু করবেন .bashrc
এখানে আপনি কিভাবে একটি টেক্সট এডিটর দিয়ে .bashrc ফাইল সম্পাদনা করতে পারেন:
$ vim ~/.bashrc
আপনি ব্যাশ ইতিহাসে তারিখ এবং সময় ফর্ম্যাটিং যোগ করতে পারেন৷
HISTTIMEFORMAT="%F %T "
# Output
$ history
1017 20210228 10:51:28 uptime
1019 20210228 10:52:42 free -m
1020 20210228 10:52:49 tree --dirsfirst -F
1018 20210228 10:51:38 xrandr | awk '/\*/{print $1}'
ইতিহাসে ডুপ্লিকেট কমান্ড উপেক্ষা করতে এই লাইন যোগ করুন।
HISTCONTROL=ignoredups
সক্রিয় ইতিহাসে লাইনের সংখ্যা সেট করতে এবং ব্যাশ ইতিহাসে সংরক্ষিত লাইনের সংখ্যা সেট করতে, এই দুটি লাইন যোগ করুন।
HISTSIZE=2000
HISTFILESIZE=2000
আপনি ব্যাশ ইতিহাস ওভাররাইট করার পরিবর্তে আপনার ইতিহাস সংযোজনে সেট করতে পারেন। shopt
"শেল বিকল্প" এর জন্য দাঁড়ায়।
shopt -s histappend
সমস্ত ডিফল্ট শেল বিকল্প দেখতে, shopt -p
চালান .
# Output
$ shopt -p
shopt -u autocd
shopt -u assoc_expand_once
shopt -u cdable_vars
shopt -u cdspell
shopt -u checkhash
shopt -u checkjobs
shopt -s checkwinsize
[...]
ব্যাশ প্রম্পটে রঙ যোগ করার জন্য কিছু ভেরিয়েবল তৈরি করুন এভাবে:
blk='\[\033[01;30m\]' # Black
red='\[\033[01;31m\]' # Red
grn='\[\033[01;32m\]' # Green
ylw='\[\033[01;33m\]' # Yellow
blu='\[\033[01;34m\]' # Blue
pur='\[\033[01;35m\]' # Purple
cyn='\[\033[01;36m\]' # Cyan
wht='\[\033[01;37m\]' # White
clr='\[\033[00m\]' # Reset
এটি ভিম প্রেমীদের জন্য। এটি আপনাকে কমান্ড লাইনে vim কমান্ড ব্যবহার করার অনুমতি দেবে। এটি সর্বদা প্রথম লাইন যা আমি আমার .bashrc.
এ যোগ করিset -o vi
কিভাবে .bashrc-এ উপনাম তৈরি করবেন
আপনি যে কমান্ডগুলি চালান তার জন্য আপনি উপনাম ব্যবহার করতে পারেন। উপনাম তৈরি করা আপনাকে দ্রুত টাইপ করতে, সময় বাঁচাতে এবং উত্পাদনশীলতা বাড়াতে অনুমতি দেবে।
একটি উপনাম তৈরি করার জন্য সিনট্যাক্স হল alias <my_alias>='longer command'
. কোন কমান্ডগুলি ভাল উপনাম তৈরি করবে তা খুঁজে বের করতে, আপনি সবচেয়ে বেশি চালান এমন শীর্ষ 10টি কমান্ডের একটি তালিকা দেখতে এই কমান্ডটি চালান৷
$ history | awk '{cmd[$2]++} END {for(elem in cmd) {print cmd[elem] " " elem}}' | sort -n -r | head -10
# Output
171 git
108 cd
62 vim
51 python3
38 history
32 exit
30 clear
28 tmux
28 tree
27 ls
যেহেতু আমি গিট অনেক বেশি ব্যবহার করি, তাই একটি উপনাম তৈরি করার জন্য এটি একটি দুর্দান্ত কমান্ড হবে।
# View Git status.
alias gs='git status'
# Add a file to Git.
alias ga='git add'
# Add all files to Git.
alias gaa='git add --all'
# Commit changes to the code.
alias gc='git commit'
# View the Git log.
alias gl='git log --oneline'
# Create a new Git branch and move to the new branch at the same time.
alias gb='git checkout -b'
# View the difference.
alias gd='git diff'
এখানে কিছু অন্যান্য দরকারী উপনাম আছে:
# Move to the parent folder.
alias ..='cd ..;pwd'
# Move up two parent folders.
alias ...='cd ../..;pwd'
# Move up three parent folders.
alias ....='cd ../../..;pwd'
# Press c to clear the terminal screen.
alias c='clear'
# Press h to view the bash history.
alias h='history'
# Display the directory structure better.
alias tree='tree --dirsfirst -F'
# Make a directory and all parent directories with verbosity.
alias mkdir='mkdir -p -v'
# View the calender by typing the first three letters of the month.
alias jan='cal -m 01'
alias feb='cal -m 02'
alias mar='cal -m 03'
alias apr='cal -m 04'
alias may='cal -m 05'
alias jun='cal -m 06'
alias jul='cal -m 07'
alias aug='cal -m 08'
alias sep='cal -m 09'
alias oct='cal -m 10'
alias nov='cal -m 11'
alias dec='cal -m 12'
# Output
$ mar
March 2021
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
.bashrc-এ কীভাবে ফাংশন ব্যবহার করবেন
যখন একটি উপনাম কাজ করবে না তখন আরও জটিল কোডের জন্য ফাংশনগুলি দুর্দান্ত৷
৷এখানে মৌলিক ফাংশন সিনট্যাক্স:
function funct_name() {
# code;
}
এইভাবে আপনি একটি ডিরেক্টরিতে সবচেয়ে বড় ফাইলগুলি খুঁজে পেতে পারেন:
function find_largest_files() {
du -h -x -s -- * | sort -r -h | head -20;
}
# Output
Downloads $ find_largest_files
709M systemrescue-8.00-amd64.iso
337M debian-10.8.0-amd64-netinst.iso
9.1M weather-icons-master.zip
6.3M Hack-font.zip
3.9M city.list.json.gz
2.8M dvdrental.tar
708K IMG_2600.JPG
100K sql_cheat_sheet_pgsql.pdf
4.0K repeating-a-string.txt
4.0K heart.svg
4.0K Fedora-Workstation-33-1.2-x86_64-CHECKSUM
[...]
আপনি ব্যাশ প্রম্পটে রং যোগ করতে পারেন এবং বর্তমান গিট শাখাটি এইভাবে প্রদর্শন করতে পারেন:
# Display the current Git branch in the Bash prompt.
function git_branch() {
if [ -d .git ] ; then
printf "%s" "($(git branch 2> /dev/null | awk '/\*/{print $2}'))";
fi
}
# Set the prompt.
function bash_prompt(){
PS1='${debian_chroot:+($debian_chroot)}'${blu}'$(git_branch)'${pur}' \W'${grn}' \$ '${clr}
}
bash_prompt
পূর্ববর্তী রান কমান্ডের জন্য আপনার ইতিহাসের মাধ্যমে গ্রেপ (অনুসন্ধান করুন):
function hg() {
history | grep "$1";
}
# Output
$ hg vim
305 2021-03-02 16:47:33 vim .bashrc
307 2021-03-02 17:17:09 vim .tmux.conf
এইভাবে আপনি Git এর সাথে একটি নতুন প্রকল্প শুরু করুন:
function git_init() {
if [ -z "$1" ]; then
printf "%s\n" "Please provide a directory name.";
else
mkdir "$1";
builtin cd "$1";
pwd;
git init;
touch readme.md .gitignore LICENSE;
echo "# $(basename $PWD)" >> readme.md
fi
}
# Output
$ git_init my_project
/home/brandon/my_project
Initialized empty Git repository in /home/brandon/my_project/.git/
আপনি কমান্ড লাইনে আবহাওয়ার প্রতিবেদনও পেতে পারেন। এর জন্য প্যাকেজ কার্ল প্রয়োজন , jq , এবং একটি API কী ওপেনওয়েদারম্যাপ থেকে। আপনার অবস্থানের আবহাওয়া পেতে URLটি সঠিকভাবে কনফিগার করার জন্য Openweathermap API ডকুমেন্টেশন পড়ুন৷
এই কমান্ড দিয়ে curl এবং jq ইনস্টল করুন:
$ sudo apt install curl jq
# OR
$ sudo dnf install curl jq
function weather_report() {
local response=$(curl --silent 'https://api.openweathermap.org/data/2.5/weather?id=5128581&units=imperial&appid=<YOUR_API_KEY>')
local status=$(echo $response | jq -r '.cod')
# Check for the 200 response indicating a successful API query.
case $status in
200) printf "Location: %s %s\n" "$(echo $response | jq '.name') $(echo $response | jq '.sys.country')"
printf "Forecast: %s\n" "$(echo $response | jq '.weather[].description')"
printf "Temperature: %.1f°F\n" "$(echo $response | jq '.main.temp')"
printf "Temp Min: %.1f°F\n" "$(echo $response | jq '.main.temp_min')"
printf "Temp Max: %.1f°F\n" "$(echo $response | jq '.main.temp_max')"
;;
401) echo "401 error"
;;
*) echo "error"
;;
esac
}
# Output
$ weather_report
Location: "New York" "US"
Forecast: "clear sky"
Temperature: 58.0°F
Temp Min: 56.0°F
Temp Max: 60.8°F
কিভাবে .bashrc-এ সিস্টেম তথ্য প্রিন্ট করবেন
আপনি যখন এইভাবে টার্মিনাল খুলবেন তখন আপনি দরকারী সিস্টেম তথ্য প্রদর্শন করতে পারেন:
clear
printf "\n"
printf " %s\n" "IP ADDR: $(curl ifconfig.me)"
printf " %s\n" "USER: $(echo $USER)"
printf " %s\n" "DATE: $(date)"
printf " %s\n" "UPTIME: $(uptime -p)"
printf " %s\n" "HOSTNAME: $(hostname -f)"
printf " %s\n" "CPU: $(awk -F: '/model name/{print $2}' | head -1)"
printf " %s\n" "KERNEL: $(uname -rms)"
printf " %s\n" "PACKAGES: $(dpkg --get-selections | wc -l)"
printf " %s\n" "RESOLUTION: $(xrandr | awk '/\*/{printf $1" "}')"
printf " %s\n" "MEMORY: $(free -m -h | awk '/Mem/{print $3"/"$2}')"
printf "\n"
আউটপুট:
পরিবর্তনগুলি কার্যকর করতে .bashrc ফাইলটি উৎস করুন:
$ source ~/.bashrc
এখানে এই সমস্ত কাস্টম .bashrc সেটিংস একসাথে আছে। একটি নতুন সিস্টেমে আমি .bashrc ফাইলে ডিফল্ট কোডের নিচে যেকোনো কাস্টমাইজেশন পেস্ট করি।
######################################################################
#
#
# ██████╗ █████╗ ███████╗██╗ ██╗██████╗ ██████╗
# ██╔══██╗██╔══██╗██╔════╝██║ ██║██╔══██╗██╔════╝
# ██████╔╝███████║███████╗███████║██████╔╝██║
# ██╔══██╗██╔══██║╚════██║██╔══██║██╔══██╗██║
# ██████╔╝██║ ██║███████║██║ ██║██║ ██║╚██████╗
# ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝
#
#
######################################################################
set -o vi
HISTTIMEFORMAT="%F %T "
HISTCONTROL=ignoredups
HISTSIZE=2000
HISTFILESIZE=2000
shopt -s histappend
blk='\[\033[01;30m\]' # Black
red='\[\033[01;31m\]' # Red
grn='\[\033[01;32m\]' # Green
ylw='\[\033[01;33m\]' # Yellow
blu='\[\033[01;34m\]' # Blue
pur='\[\033[01;35m\]' # Purple
cyn='\[\033[01;36m\]' # Cyan
wht='\[\033[01;37m\]' # White
clr='\[\033[00m\]' # Reset
alias gs='git status'
alias ga='git add'
alias gaa='git add --all'
alias gc='git commit'
alias gl='git log --oneline'
alias gb='git checkout -b'
alias gd='git diff'
alias ..='cd ..;pwd'
alias ...='cd ../..;pwd'
alias ....='cd ../../..;pwd'
alias c='clear'
alias h='history'
alias tree='tree --dirsfirst -F'
alias mkdir='mkdir -p -v'
alias jan='cal -m 01'
alias feb='cal -m 02'
alias mar='cal -m 03'
alias apr='cal -m 04'
alias may='cal -m 05'
alias jun='cal -m 06'
alias jul='cal -m 07'
alias aug='cal -m 08'
alias sep='cal -m 09'
alias oct='cal -m 10'
alias nov='cal -m 11'
alias dec='cal -m 12'
function hg() {
history | grep "$1";
}
function find_largest_files() {
du -h -x -s -- * | sort -r -h | head -20;
}
function git_branch() {
if [ -d .git ] ; then
printf "%s" "($(git branch 2> /dev/null | awk '/\*/{print $2}'))";
fi
}
# Set the prompt.
function bash_prompt(){
PS1='${debian_chroot:+($debian_chroot)}'${blu}'$(git_branch)'${pur}' \W'${grn}' \$ '${clr}
}
bash_prompt
function git_init() {
if [ -z "$1" ]; then
printf "%s\n" "Please provide a directory name.";
else
mkdir "$1";
builtin cd "$1";
pwd;
git init;
touch readme.md .gitignore LICENSE;
echo "# $(basename $PWD)" >> readme.md
fi
}
function weather_report() {
local response=$(curl --silent 'https://api.openweathermap.org/data/2.5/weather?id=5128581&units=imperial&appid=<YOUR_API_KEY>')
local status=$(echo $response | jq -r '.cod')
case $status in
200) printf "Location: %s %s\n" "$(echo $response | jq '.name') $(echo $response | jq '.sys.country')"
printf "Forecast: %s\n" "$(echo $response | jq '.weather[].description')"
printf "Temperature: %.1f°F\n" "$(echo $response | jq '.main.temp')"
printf "Temp Min: %.1f°F\n" "$(echo $response | jq '.main.temp_min')"
printf "Temp Max: %.1f°F\n" "$(echo $response | jq '.main.temp_max')"
;;
401) echo "401 error"
;;
*) echo "error"
;;
esac
}
clear
printf "\n"
printf " %s\n" "IP ADDR: $(curl ifconfig.me)"
printf " %s\n" "USER: $(echo $USER)"
printf " %s\n" "DATE: $(date)"
printf " %s\n" "UPTIME: $(uptime -p)"
printf " %s\n" "HOSTNAME: $(hostname -f)"
printf " %s\n" "CPU: $(awk -F: '/model name/{print $2}' | head -1)"
printf " %s\n" "KERNEL: $(uname -rms)"
printf " %s\n" "PACKAGES: $(dpkg --get-selections | wc -l)"
printf " %s\n" "RESOLUTION: $(xrandr | awk '/\*/{printf $1" "}')"
printf " %s\n" "MEMORY: $(free -m -h | awk '/Mem/{print $3"/"$2}')"
printf "\n"
উপসংহার
এই নিবন্ধে আপনি শিখেছেন কিভাবে বিভিন্ন .bashrc অপশন, উপনাম, ফাংশন এবং আরও অনেক কিছু কনফিগার করতে হয় যাতে আপনার কর্মপ্রবাহকে ব্যাপকভাবে উন্নত করা যায় এবং আপনার উৎপাদনশীলতা বৃদ্ধি পায়।
Github এ আমাকে অনুসরণ করুন | Dev.to.