Tùy chỉnh tệp .bashrc của bạn có thể cải thiện đáng kể quy trình làm việc và tăng năng suất của bạn.
.Bashrc là một tệp tiêu chuẩn nằm trong thư mục chính Linux của bạn. Trong bài viết này, tôi sẽ chỉ cho bạn các tùy chọn .bashrc hữu ích, bí danh, chức năng và hơn thế nữa.
Các lợi ích chính của việc định cấu hình tệp .bashrc là:
- Thêm bí danh cho phép bạn nhập lệnh nhanh hơn, tiết kiệm thời gian.
- Thêm các chức năng cho phép bạn lưu và chạy lại mã phức tạp.
- Nó hiển thị thông tin hệ thống hữu ích.
- Nó tùy chỉnh lời nhắc Bash.
Cách Bắt đầu Chỉnh sửa .bashrc
Đây là cách bạn có thể chỉnh sửa tệp .bashrc bằng trình soạn thảo văn bản:
$ vim ~/.bashrc
Bạn có thể thêm định dạng ngày và giờ vào lịch sử cơ sở.
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}'
Thêm dòng này để bỏ qua các lệnh trùng lặp trong lịch sử.
HISTCONTROL=ignoredups
Để đặt số dòng trong lịch sử hoạt động và để đặt số dòng được lưu trong lịch sử Bash, hãy thêm hai dòng này.
HISTSIZE=2000
HISTFILESIZE=2000
Bạn có thể đặt lịch sử của mình thành nối thay vì ghi đè lịch sử Bash. shopt
là viết tắt của "tùy chọn vỏ".
shopt -s histappend
Để xem tất cả các tùy chọn trình bao mặc định, hãy chạy 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
[...]
Tạo một số biến để thêm màu vào dấu nhắc Bash như sau:
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
Đây là dành cho những người yêu thích Vim. Điều này sẽ cho phép bạn sử dụng các lệnh vim trên dòng lệnh. Đây luôn là dòng đầu tiên tôi thêm vào .bashrc của mình.
set -o vi
Cách tạo bí danh trong .bashrc
Bạn có thể sử dụng bí danh cho các lệnh mà bạn chạy nhiều. Tạo bí danh sẽ cho phép bạn nhập nhanh hơn, tiết kiệm thời gian và tăng năng suất.
Cú pháp để tạo bí danh là alias <my_alias>='longer command'
. Để tìm hiểu lệnh nào sẽ tạo bí danh tốt, hãy chạy lệnh này để xem danh sách 10 lệnh hàng đầu mà bạn chạy nhất.
$ 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
Vì tôi sử dụng Git rất nhiều, đó sẽ là một lệnh tuyệt vời để tạo bí danh cho.
# 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'
Dưới đây là một số bí danh hữu ích khác:
# 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
Cách sử dụng các hàm trong .bashrc
Các hàm rất phù hợp với những đoạn mã phức tạp hơn khi bí danh không hoạt động.
Đây là cú pháp hàm cơ bản:
function funct_name() {
# code;
}
Đây là cách bạn có thể tìm thấy các tệp lớn nhất trong một thư mục:
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
[...]
Bạn cũng có thể thêm màu vào dấu nhắc Bash và hiển thị nhánh Git hiện tại như sau:
# 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
Grep (tìm kiếm) qua lịch sử của bạn cho các lệnh đã chạy trước đó:
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
Đây là cách bạn bắt đầu một dự án mới với 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/
Bạn cũng có thể nhận được báo cáo thời tiết trên dòng lệnh. Điều này yêu cầu gói curl , jq và khóa API từ Openweathermap. Đọc tài liệu API Openweathermap để định cấu hình URL chính xác để biết thời tiết ở vị trí của bạn.
Cài đặt curl và jq bằng các lệnh sau:
$ 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
Cách In Thông tin Hệ thống trong .bashrc
Bạn có thể hiển thị thông tin hệ thống hữu ích khi bạn mở thiết bị đầu cuối như sau:
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"
Đầu ra:
Nguồn tệp .bashrc để các thay đổi có hiệu lực:
$ source ~/.bashrc
Đây là tất cả các cài đặt .bashrc tùy chỉnh này cùng nhau. Trên hệ thống mới, tôi dán bất kỳ tùy chỉnh nào bên dưới mã mặc định trong tệp .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"
Kết luận
Trong bài viết này, bạn đã học cách định cấu hình nhiều tùy chọn .bashrc, bí danh, chức năng và hơn thế nữa để cải thiện đáng kể quy trình làm việc và tăng năng suất của bạn.
Theo dõi tôi trên Github | Dev.to.