超實用 bash 自定義腳本,分分鐘提升工作效率

工作越久,越能發現bash 自動化腳本的實用與好處。bash 用得好的話,在提升工作效率方面說“積小流而成江海”也不為過。今天分享一些 bash 常用工具。

前置條件

本文提到的所有命令只在 MacOS 系統上測試使用,同時都是寫入 ~/.bash_profile 然後 source ~/.bash_profile 進行更新應用(有些也可能是 .bashrc)。

為了省事,我直接將開啟、編譯 bash_profile 的命令成別名。

<code>BASH_PROFILE_PATH=

"

$HOME

/.bash_profile"

alias

bash.open=

"open

${BASH_PROFILE_PATH}

"

alias

bash.class="lazy" src="//p2.ttnews.xyz/loading.gif" data-original=

"source

${BASH_PROFILE_PATH}

"

複製代碼/<code>

實用 alias 別名

bash 的 alias 別名可以說是我用得最多的功能了,在我理解看來,它像是一個簡單函數,內在組合了一些繁瑣的邏輯流程,對外只暴露一個優雅的別名。

1、Git 系列

實際開發中,常用的 git 命令來來回回也就幾個,既然熟背於心,那又何苦一遍遍重新敲命令來浪費時間呢?以下是我常用的別名。

<code>

alias

g=

"git"

alias

gb=

"git branch"

alias

ga=

"git add"

alias

gaa=

"git add ."

alias

gap=

"git add -p"

alias

gs=

"git status"

alias

gco=

"git checkout"

alias

gcp=

"git cherry-pick"

alias

gcm=

"git commit -m"

alias

gcma=

"git commit --amend"

alias

gcl=

"git clone"

alias

glo=

"git log"

alias

glog=

"git log --graph --oneline"

alias

glol=

"git log --oneline"

alias

gdif=

"git diff HEAD^ HEAD"

複製代碼/<code>

簡簡單單幾個字符就可以對 Git 項目在命令行中查看、提交、對比等。

2、工作流系列

工作中經常打開的應用、切換的目錄,完全可以寫成別名節省時間。

<code>

alias

vscode=

'open -a /Applications/Visual\ Studio\ Code.app/'

alias

cd.desk=

"cd ~/Desktop"

alias

cd.

byte

=

"cd ~/Desktop/Bytedance"

alias

cd.nginx=

"cd /usr/local/etc/nginx"

alias

ip=

"ifconfig | grep -oE 'inet.*netmask' | grep -oE '(\d+\.){3}\d+' | sed -n 2p"

複製代碼/<code>

還可以在 vscode 中安裝 'code' 命令。

超實用 bash 自定義腳本,分分鐘提升工作效率

這樣你就可以在命令行中快速用 vscode 打開項目。

<code>

code

PROJECT 複製代碼/<code>

3、工具系列

<code> 

alias

tree=

"tree -N"

alias

stat

=

"stat -x"

alias

ll=

"exa -lhaBgb --git"

alias

pwd.cp=

"pwd | pbcopy"

複製代碼/<code>

這裡需要留意的是 tree、exa 命令在 MacOS 下都需要手動安裝。

<code>

brew

install tree

brew

install exa

複製代碼

/<code>

以下 tree 的效果:

超實用 bash 自定義腳本,分分鐘提升工作效率

以下 ll 的效果:

超實用 bash 自定義腳本,分分鐘提升工作效率

編寫 shell 函數

1、快速創建遞歸文件夾並切換工作路徑

這個不多說了,相當實用。

<code>

mkcd

() {

mkdir

-p

$1

&& cd

"./

$1

"

} 複製代碼/<code>

2、快速查看IP

快速查看本地的 ip 地址,同時自動複製到粘貼板。

<code>

alias

ip=

"ifconfig | grep -oE 'inet.*netmask' | grep -oE '(\d+\.){3}\d+' | sed -n 2p"

ipl

() { IP=$(ip)

echo

$IP

| pbcopy

echo

"local IP address:

$IP

"

} 複製代碼/<code>

3、快速查看磁盤空間

速度很快。

<code>

ds

() {

echo

"Disk Space Utilization For

$HOSTNAME

"

df -h } 複製代碼/<code>

4、計算漢字數量

ggrep 需要手動裝一下。

<code>

countHan

() { ggrep -roP

'[\p{Han}]'

$1

} 複製代碼/<code>

5、正則切換 Git 分支

切換分支的時候不想輸入分支全名怎麼辦?偷懶方法,當然是通過寫正則來切換啦。

<code>

gcof

() { REGEX=

$1

TARGET=

"

$(g branch | grep -E $REGEX | grep -vx "\*.*" | head -n 1 | tr -d '[:space:]')

"

if

[[ -z

$TARGET

]];

then

 

echo

"Use regex '

$REGEX

' to match null"

else

 

echo

"Use regex '

$REGEX

' to match branch '

$TARGET

'"

 

read

-p

"Are you sure to checkout branch '

$TARGET

' [Y/N]"

-n 1 -s  

echo

 

if

[[

$REPLY

=~ ^[Yy]$ ]];

then

    git checkout

$TARGET

 

else

   

echo

"Still on original branch"

 

fi

fi

} 複製代碼/<code>

建議大家體驗一下,十分優雅~

修改命令行提示符

在 ~/.bash_profile 或者 ~/.bashrc 設置命令行提示符。

<code>PS1=

'\033[0;32m\]\[\033[0m\] \w $ '

export

PS1 複製代碼/<code>

如果有人問我自定義提示符有什麼用?當然是因為有趣啊。

環境變量

在 vscode 中設置環境變量 VSCODE,然後再在 .bash_profile 中就可以讀取變量,並根據此變量設定不同的命令行提示符。

<code> 

if

[ -f ~/.profile ];

then

. ~/.profile

fi

if

[[

$VSCODE

==

'sulirc@vscode'

]];

then

echo

"Ah choo~~

$USER

, welcome to vscode terminal! ( ͡° ͜ʖ ͡°)✧"

;

echo

""

; PS1=

'\w $ '

fi

複製代碼/<code>

便利腳本集合

1、快速查單詞

<code>

grep

-i

'^c..fu..r$'

/usr/share/dict/words 複製代碼/<code>

2、快速清空文件

利用重定向輸出快速清空文件,十分便捷。

<code>> 

filename

.txt

複製代碼/<code>

3、設置腳本可執行權限

對於腳本文件,有兩個常見的權限設置:權限為 755 的腳本,則每個人都能執行,和權限為700的腳本,只有文件所有者能夠執行。注意為了能夠執行腳本,腳本必須是可讀的。

<code>

chmod

755

script

.sh

複製代碼/<code>

當然實際上你需要更深入瞭解 chmod 命令,比如 ugo 分組,rwx 權限等,才能細粒度的使用。

4、忽略標準輸出錯誤

親愛的垃圾桶 /dev/null

<code>$ non-exist-command 

2

>

/dev/

null

複製代碼/<code>

vim 配置

修改 ~/.vimrc 進行 vim 格式化配置。

<code>:syntax 

on

:

set

hlsearch :

set

tabstop=

4

:

set

autoindent 複製代碼/<code>

這樣在 vim 裡也能語法高亮,同時編輯 bash 時能自動縮進。

超實用 bash 自定義腳本,分分鐘提升工作效率

掌握 bash 的基本原理,循環、判斷、函數、組合表達式,以及正則等,都不是一蹴而就的事情,多練習、多思考、勤查手冊,技能慢慢就會提升,然後你會發現讀懂以前覺得神奇的 bash 腳本簡直不要太簡單。


分享到:


相關文章: