Shell-Script
始終使用另一個命令傳遞一個命令
我該怎麼做?
如果命令看起來像
git show .....
然後執行
git show ..... | bat -l rs
我的意思是,
| bat -l rs
在執行之前添加到命令的末尾。
#!/bin/bash case "$1" in show) git "$@" | bat -l rs ;; *) git "$@" ;; esac
然後將此腳本別名為
git
. 如果要執行本機git show
使用\git
來轉義別名。或者通過定義一個shell函式並使用
command
並將其添加到shell rc文件(bash
-syntax)中:git() { case "$1" in show) command git "$@" | bat -l rs ;; *) command git "$@" ;; esac }
請注意,覆蓋本機
git
命令可能會對腳本等造成嚴重破壞;這與隱藏現有命令的 git 別名被靜默忽略的原因相同。但是,如果您通過命名將腳本定義為新
git-something
的 git 子命令,它將自動被 git 拾取。因此,例如,git-myshow
在 的某處創建一個執行檔PATH
,其內容為:#!/bin/sh git show "$@" | bat -l rs
將讓您執行
git myshow <any show arguments>
並將其安全地翻譯成git show <any show arguments> | bat -l rs
. 子命令的名稱將取決於腳本的名稱(git-showit
==git showit
等),因此您可以選擇您喜歡的任何內容,只要它與現有的子命令不同即可。