下面的脚本,执行之后,可以完成 git clone
并 cd
至目标文件夹内。
!f() {
local tmp=$(mktemp);
local repo_name;
git clone $@ --progress 2>&1 | tee $tmp;
repo_name=$(awk -F\' '/Cloning into/ {print $2}' $tmp);
rm $tmp;
cd $repo_name;
};
f
一些说明:
mktemp
可以创建一个临时文件,文件路径存放在tmp
变量中git clone $@
中的$@
是执行脚本时候所有的传入参数---progress 2>&1
会将 Git clone 命令的结果输出。这里,默认情况下,clone 的过程数据只有在 error stream 输出到 terminal 的时候,才会显示。因为这里的命令需要将内容通过管道输出到tmp
临时文件中,所以默认情况下 Git 就不会输出过程的数据了。为了能够让 Git 输出这部分内容,需要加上--progress
tee $tmp
将管道的数据输出到临时文件中awk -F\' '/Cloning into/ {print $2}' $tmp
的部分,会从输出的数据中,寻找Cloning into
的输出,然后找到具体 clone 到了哪个文件夹中