出于工作流程的目的,我想写一个bash脚本,我在其中复制一个文件,用当前日期和当前git分支名称重命名它,如下所示:
$ cp test.txt test-$(date +'%Y-%h-%d')-$(__git_ps1).txt
说我在名为feature
的分支中,输出文件名将是(今天的日期):
test-2017-Nov-5-feature.txt
对于日期部分(2017-Nov-5
),它工作正常,但我很难通过$(__git_ps)
我做错了什么?谢谢!
答案 0 :(得分:1)
您的命令问题是由__git_ps1
生成的前导空格。
您可以使用以下命令删除所有空格:
cp test.txt test-$(date +'%Y-%h-%d')-$(__git_ps1 | tr -d '[:space:]').txt
但是这样输出仍然包含我认为你不想要的'('和')'(参见替代解决方案)
可能的'分支名称中的斜杠'问题(由@HuStmpHrrr突出显示)可以通过删除(如使用空格完成)或转换为兼容字符(| tr '/' '_'
)来以类似的方式解决/ p>
正常
test-2017-Nov-06-(master).txt
如果分离的工作空间
测试-2017-NOV-06 - ((2af977d ...))的txt
尝试使用
cp test.txt test-$(date +'%Y-%h-%d')-$(git rev-parse --abbrev-ref HEAD).txt
正常
测试-2017-NOV-06-master.txt
如果分离的工作空间
测试-2017-NOV-06-HEAD.txt