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

sha*_*awn 0 git

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

这是命令参考: git status | grep '已删除:' | cut -d':' -f2 | xargs -t -I {} git add -u "{}"

现在我想劫持它的尾端,以便我可以将多个文件输入到 git 命令中。git status .. 未跟踪的文件:(使用“git add ...”包含在将提交的内容中) Docs/collisions_bbox_08232021.jpg Docs/collisions_bbox_08232021.psd Fml/collisions_082321.flt Fml/scaleRef/sscalen_Refmlfml/sg sgn_wrong_way_do_not_enter_Low_3f_scale.flt ..

我的命令: $ git status | 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

这是问题所在:

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

谷歌没有帮助,也许 b/c 它正在处理特殊字符。知道 git(命令处理器?)正在破坏我的输入是怎么回事吗?如何重新格式化命令字符串以使其正常工作?

谢谢检查。

and*_*lrc 5

你不应该解析git statususe的输出git status --porcelain,像这样列出了已删除的文件:

git status --porcelain | sed -n 's/^.D.//p'
Run Code Online (Sandbox Code Playgroud)

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

git status --porcelain | sed -n 's/^??.//p'
Run Code Online (Sandbox Code Playgroud)