私はmv
のエイリアスを作成しようとしています。そのため、通常のフォルダーで通常の動作を行い、gitリポジトリ内でgit mv
に置き換えられます。私は多くの方法を試しました。 ifステートメントが機能する場合、コマンドgit mv
のみが正しく実行されません。
alias mv='"$(
if [ x`git rev-parse --show-toplevel 2> /dev/null` = x ];
echo mv;
else
echo "git mv";
fi)"'
そのための関数を使用します。
gitmv()
{
# If in a git repo - call git mv. otherwise- call mv
if [ x`git rev-parse --show-toplevel 2> /dev/null` = x ];
then
mv "$@"
else
git mv "$@"
fi
}
編集:
alias mv=gitmv
Jhscheerがはるかに優れたソリューション(IMHO)を提案しましたが、エイリアスのみで実行しようとしていたことを達成することは依然として可能です。
git mv
を単一のトークンにする外部二重引用符が原因でエイリアスが機能せず、git mv
実行可能ファイルがありません。外部の二重引用符を削除すると、エイリアスは正常に機能します。
ところで、echo "git mv"
の内側の二重引用符は役に立ちませんが、害はありません。
すぐにテストできるgitリポジトリはありませんが、次のエイリアスで試してみました。
alias foo='$(if [ x"`pwd`" = x"$HOME" ] ; then echo echo; else echo echo foo; fi)'