下面的脚本,执行之后,可以完成 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 输出这部分内容,需要加上--progresstee $tmp将管道的数据输出到临时文件中awk -F\' '/Cloning into/ {print $2}' $tmp的部分,会从输出的数据中,寻找Cloning into的输出,然后找到具体 clone 到了哪个文件夹中