我珍藏的 Bash 祕籍

2020-02-02 12:01:00

通過別名和其他捷徑來提高你經常忘記的那些事情的效率。

要是你整天使用計算機,如果能找到需要重複執行的命令並記下它們以便以後輕鬆使用那就太棒了。它們全都呆在那裡,藏在 ~/.bashrc 中(或 zsh 使用者~/.zshrc 中),等待著改善你的生活!

在本文中,我分享了我最喜歡的這些助手命令,對於我經常遺忘的事情,它們很有用,也希望這可以幫助到你,以及為你解決一些經常頭疼的問題。

完事吱一聲

當我執行一個需要長時間執行的命令時,我經常採用多工的方式,然後就必須回頭去檢查該操作是否已完成。然而通過有用的 say 命令,現在就不用再這樣了(這是在 MacOS 上;請根據你的本地環境更改為等效的方式):

function looooooooong {    START=$(date +%s.%N)    $*    EXIT_CODE=$?    END=$(date +%s.%N)    DIFF=$(echo "$END - $START" | bc)    RES=$(python -c "diff = $DIFF; min = int(diff / 60); print('%s min' % min)")    result="$1 completed in $RES, exit code $EXIT_CODE."    echo -e "\n?  $result"    ( say -r 250 $result 2>&1 > /dev/null & )}

這個命令會記錄命令的開始和結束時間,計算所需的分鐘數,並“說”出呼叫的命令、花費的時間和退出碼。當簡單的控制台鈴聲無法使用時,我發現這個超級有用。

安裝小助手

我在小時候就開始使用 Ubuntu,而我需要學習的第一件事就是如何安裝軟體包。我曾經首先新增的別名之一是它的助手(根據當天的流行梗命名的):

alias canhas="sudo apt-get install -y"

GPG 簽名

有時候,我必須在沒有 GPG 擴充套件程式或應用程式的情況下給電子郵件簽署 GPG 簽名,我會跳到命令列並使用以下令人討厭的別名:

alias gibson="gpg --encrypt --sign --armor"alias ungibson="gpg --decrypt"

Docker

Docker 的子命令很多,但是 Docker compose 的更多。我曾經使用這些別名來將 --rm 標誌丟到腦後,但是現在不再使用這些有用的別名了:

alias dc="docker-compose"alias dcr="docker-compose run --rm"alias dcb="docker-compose run --rm --build"

Google Cloud 的 gcurl 助手

對於我來說,Google Cloud 是一個相對較新的東西,而它有極多的文件gcurl 是一個別名,可確保在用帶有身份驗證檔頭的本地 curl 命令連線 Google Cloud API 時,可以獲得所有正確的檔頭。

Git 和 ~/.gitignore

我工作中用 Git 很多,因此我有一個專門的部分來介紹 Git 助手。

我最有用的助手之一是我用來克隆 GitHub 儲存庫的。你不必執行:

git clone [email protected]:org/repo /Users/glasnt/git/org/repo

我設定了一個克隆函數:

clone(){    echo Cloning $1 to ~/git/$1    cd ~/git    git clone [email protected]:$1 $1    cd $1}

即使每次進入 ~/.bashrc 檔案看到這個時,我總是會忘記和傻笑,我也有一個“重新整理上游”命令:

alias yoink="git checkout master && git fetch upstream master && git merge upstream/master"

給 Git 一族的另一個助手是全域性忽略檔案。在你的 git config --global --list 中,你應該看到一個 core.excludesfile。如果沒有,請建立一個,然後將你總是放到各個 .gitignore 檔案中的內容填滿它。作為 MacOS 上的 Python 開發人員,對我來說,這些內容是:

.DS_Store     # macOS cluttervenv/         # I never want to commit my virtualenv*.egg-info/*  # ... nor any locally compiled packages__pycache__   # ... or source*.swp         # ... nor any files open in vim

你可以在 Gitignore.io 或 GitHub 上的 Gitignore 儲存庫上找到其他建議。

輪到你了

你最喜歡的助手命令是什麼?請在評論中分享。