我使用以下作为git shell脚本。
#!/bin/sh
[ -z "$1" ] && dir="$PWD" || dir="$1"
find "$dir" -mindepth 1 -maxdepth 1 -type d -exec sh -c '
for i; do
printf "\n%s\n" "$i"
cd "$i" \
&& git remote update
done' sh {} +
但是想使用git别名。
rmup=!sh -c "find . -mindepth 1 -maxdepth 1 -type d -exec sh -c '\
for i; do \
printf "\n%s\n" "$i" && cd "$i" && git remote update; \
done' sh {} +"
或至少是一个shell别名。
alias rmup="find . -mindepth 1 -maxdepth 1 -type d -exec sh -c '\
for i; do \
printf "\n%s\n" "$i" && cd "$i" && git remote update; \
done' sh {} +"
我尝试过所有类型的转义,单引号和双引号组合,但没有成功。
想要使用" embedded"别名是为了简化机器之间的维护和可移植性,因为我已经在同步.gitconfig
和.bashrc
。
忘记提到我也尝试过shell函数,当printf
打印目录时,cd
会抱怨该目录不存在。
rmup() {
find . -mindepth 1 -maxdepth 1 -type d -exec sh -c '
for i; do
printf "\n%s\n" "$i" && cd "$i" && git remote update;
done' sh {} +
}
答案 0 :(得分:3)
如果您已经拥有shell脚本,请将其命名为git-rmup
,将其放入$PATH
,然后您就可以调用git rmup
,就好像它是Git别名。
答案 1 :(得分:1)
rmup argument
特别是,你不能在别名中替换位置参数,这里你的代码明确需要这样做。 (现在,你可以扩展到一些东西然后查看它的位置参数,但是这种技术可用的案例集......受到很大限制,原因我不想进入这里)。
用法与别名的用法完全相同:{{1}}