अपनी .bashrc फाइल को कस्टमाइज़ करना आपके वर्कफ़्लो को काफी हद तक सुधार सकता है और आपकी उत्पादकता बढ़ा सकता है।
.bashrc आपकी Linux होम डायरेक्टरी में स्थित एक मानक फाइल है। इस लेख में मैं आपको उपयोगी .bashrc विकल्प, एलियास, फंक्शन, और बहुत कुछ दिखाऊंगा।
.bashrc फाइल को कॉन्फ़िगर करने के मुख्य लाभ हैं:
- एलियास जोड़ने से आप कमांड तेजी से टाइप कर सकते हैं, जिससे समय की बचत होती है।
- फंक्शन जोड़ने से आप जटिल कोड को सेव और रीरन कर सकते हैं।
- यह उपयोगी सिस्टम जानकारी प्रदर्शित करता है।
- यह Bash प्रॉम्प्ट को कस्टमाइज़ करता है।
.bashrc के साथ संपादन कैसे शुरू करें
यहां बताया गया है कि आप टेक्स्ट एडिटर के साथ .bashrc फाइल को कैसे संपादित कर सकते हैं:
$ vim ~/.bashrc
आप bash हिस्ट्री में तारीख और समय फॉर्मेटिंग जोड़ सकते हैं।
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
एक्टिव हिस्ट्री में लाइनों की संख्या सेट करने और Bash हिस्ट्री में सेव की गई लाइनों की संख्या सेट करने के लिए, ये दो लाइनें जोड़ें।
HISTSIZE=2000
HISTFILESIZE=2000
आप अपनी हिस्ट्री को Bash हिस्ट्री को ओवरराइट करने के बजाय जोड़ने के लिए सेट कर सकते हैं। 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
[...]
Bash प्रॉम्प्ट में रंग जोड़ने के लिए कुछ वेरिएबल बनाएं जैसे:
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 प्रेमियों के लिए है। यह आपको कमांड लाइन पर 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
चूंकि मैं Git का बहुत उपयोग करता हूं, वह एलियास बनाने के लिए एक बेहतरीन कमांड होगी।
# Git स्टेटस देखें।
alias gs='git status'
# Git में फाइल जोड़ें।
alias ga='git add'
# सभी फाइलों को Git में जोड़ें।
alias gaa='git add --all'
# कोड में परिवर्तन कमिट करें।
alias gc='git commit'
# Git लॉग देखें।
alias gl='git log --oneline'
# नई Git ब्रांच बनाएं और उसी समय नई ब्रांच पर जाएं।
alias gb='git checkout -b'
# अंतर देखें।
alias gd='git diff'
यहां कुछ अन्य उपयोगी एलियास हैं:
# पैरेंट फोल्डर में जाएं।
alias ..='cd ..;pwd'
# दो पैरेंट फोल्डर ऊपर जाएं।
alias ...='cd ../..;pwd'
# तीन पैरेंट फोल्डर ऊपर जाएं।
alias ....='cd ../../..;pwd'
# टर्मिनल स्क्रीन साफ़ करने के लिए c दबाएं।
alias c='clear'
# bash हिस्ट्री देखने के लिए h दबाएं।
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'
# 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
[...]
आप Bash प्रॉम्प्ट में रंग भी जोड़ सकते हैं और वर्तमान Git ब्रांच को इस तरह प्रदर्शित कर सकते हैं:
# Bash प्रॉम्प्ट में वर्तमान Git ब्रांच प्रदर्शित करें।
function git_branch() {
if [ -d .git ] ; then
printf "%s" "($(git branch 2> /dev/null | awk '/\*/{print $2}'))";
fi
}
# प्रॉम्प्ट सेट करें।
function bash_prompt(){
PS1='${debian_chroot:+($debian_chroot)}'${blu}'$(git_branch)'${pur}' \W'${grn}' \$ '${clr}
}
bash_prompt
अपनी हिस्ट्री में पिछली चलाई गई कमांड के लिए Grep (खोज) करें:
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/
आप कमांड लाइन पर मौसम की रिपोर्ट भी प्राप्त कर सकते हैं। इसके लिए curl, jq, और Openweathermap से एक 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=')
local status=$(echo $response | jq -r '.cod')
# सफल API क्वेरी को दर्शाने वाली 200 प्रतिक्रिया की जांच करें।
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
}
# प्रॉम्प्ट सेट करें।
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=')
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 पर फॉलो करें।