Shell-Script

始終使用另一個命令傳遞一個命令

  • July 10, 2022

我該怎麼做?

如果命令看起來像

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等),因此您可以選擇您喜歡的任何內容,只要它與現有的子命令不同即可。

引用自:https://unix.stackexchange.com/questions/709212