Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Hướng dẫn tùy chỉnh Bashrc - Cách thêm bí danh, sử dụng hàm và hơn thế nữa

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
Hướng dẫn tùy chỉnh Bashrc - Cách thêm bí danh, sử dụng hàm và hơn thế nữa

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 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:

Hướng dẫn tùy chỉnh Bashrc - Cách thêm bí danh, sử dụng hàm và hơn thế nữa

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.