git 正在向我的命令字符串添加控制字符,从而炸毁"$'\033[m"



我正在尝试运行一个git bash命令,以前是工作的,但最近失败了。我不知道从那时到现在发生了什么变化(没有新的git d/l)。

下面是命令参考:git status | grep 'deleted:' | cut -d':' -f2 | xargs -t -I {} git add -u "{}">

现在我想劫持它的尾部,这样我就可以将多个文件输入到git命令中。git状态..无路径的文件:(使用"git添加…"包括在将要承诺的内容中)文档/collisions_bbox_08232021.jpg文档/collisions_bbox_08232021.psdFml/collisions_082321.fltFml/scaleRef/sgn_one_way_Low_2f_scale.fltFml/scaleRef/sgn_wrong_way_do_not_enter_Low_3f_scale.flt. .

我的命令:$ git status | grep FmlFml/collisions_082321.fltFml/scaleRef/sgn_one_way_Low_2f_scale.fltFml/scaleRef sgn_wrong_way_do_not_enter_Low_3f_scale.flt

问题来了:

xxx MINGW64 /e/sss/ProjectData (master)
$ git status | grep Fml | xargs -t -I {} git add -u "{}"
git add -u ''$'33''[31mFml/collisions_082321.flt'$'33''[m'
fatal: pathspec '?[31mFml/collisions_082321.flt?[m' did not match any files
git add -u ''$'33''[31mFml/scaleRef/sgn_one_way_Low_2f_scale.flt'$'33''[m'
fatal: pathspec '?[31mFml/scaleRef/sgn_one_way_Low_2f_scale.flt?[m' did not match any files
git add -u ''$'33''[31mFml/scaleRef/sgn_wrong_way_do_not_enter_Low_3f_scale.flt'$'33''[m'
fatal: pathspec '?[31mFml/scaleRef/sgn_wrong_way_do_not_enter_Low_3f_scale.flt?[m' did not match any files

Google没帮上忙,可能是b/c它在处理特殊字符。你知道git(命令处理器?)弄乱了我的输入是怎么回事吗?我如何重新格式化命令字符串,使其工作?

谢谢你的检查。

您不应该解析git status的输出,而应该使用git status --porcelain,下面列出了删除的文件:

git status --porcelain | sed -n 's/^.D.//p'

对于未跟踪的文件,您可以使用:

git status --porcelain | sed -n 's/^??.//p'

好吧,我真傻。

有领导??在git的返回字符串中,它被输入到命令字符串中:

MINGW64 /e/ssss/ProjectData (master)
$ git status --porcelain | grep Fml
?? Fml/collisions_082321.flt
?? Fml/scaleRef/sgn_one_way_Low_2f_scale.flt
?? Fml/scaleRef/sgn_wrong_way_do_not_enter_Low_3f_scale.flt

当我处理这些时,命令输入再次工作:

$ git status --porcelain | grep Fml | cut -d' ' -f2 | xargs -t   -I {}  git add  -u "{}"
git add -u Fml/collisions_082321.flt
git add -u Fml/scaleRef/sgn_one_way_Low_2f_scale.flt
git add -u Fml/scaleRef/sgn_wrong_way_do_not_enter_Low_3f_scale.flt

感谢andlrc提供的瓷尖!

最新更新