Bash
Bash (Git) - 函式、別名和 SH 腳本文件
我對別名的使用非常多產,尤其是所有不同的 git 命令及其順序和相互依賴關係等。所以,我創建了一些執行更複雜腳本的別名。
alias stash='f() { .... }; f'
總之非常直接。然而,作為我的開發風格中最純粹的一點,我喜歡“格式良好”的程式碼。形式有時與功能一樣重要。因此,使用一個簡單的別名:
alias gca='git commit --amend '
我沒有問題直接在
.bash_aliases
文件中列出它們。但是對於一些多命令別名,我有點希望它們是分開的。打字
help
我看到function name { COMMANDS ; } or name () { COMMANDS ; }
但我目前理解使用的唯一方法
function
是以別名的名義。但是考慮到git diff --name-status
我評論的文章的顏色,我可以將腳本合併到 SH 文件中,例如,我通過 xargs 將數據傳遞給它。但是是否有可能(可能)通過腳本創建“函式”,而不是將它們列為“別名”,而是將它們列為儲存在 sh 文件中的實際函式?
假想:
alias stash='f() { if [[ -z $1 ]]; then git stash list; else git stash $1; fi; }; f'
相反,
stash.sh
文件將具有:function stash { if [[ -z $1 ]]; then stash list; else git stash $1; fi; }
這樣的事情是否可能,所以在這兩種情況下,我都會在提示符下簡單地鍵入“stash”,但它們的定義方式卻大不相同?
您可以在您的環境中獲取所需功能的列表。
創建一個文件
~/.bash_functions
並從~./bashrc
.與來源相同的方式
./bash_aliases
:if [ -f ~/.bash_functions ]; then . ~/.bash_functions fi
然後,定義盡可能多(和復雜)的函式。
您可以為函式定義別名(在 ~/.bash_aliases 內以保持秩序)。但這並不是真正需要的,因為您可以直接呼叫源函式。通過定義:
stash() { if [[ -z $1 ]]; then stash list; else git stash $1; fi; }
stash
您可以簡單地通過or來呼叫它stash this
,不需要別名。