设置一个使用TR将反斜杠转换为正斜杠的Git别名

时间:2017-04-14 19:09:05

标签: git git-config git-alias

我正在尝试设置一个Git别名,它必须将反斜杠转换为正斜杠,以便稍后将其传递给filter-branch命令(因为我使用Posh并且需要将基于DOS的文件路径作为参数传递。)

所以我有这个别名:

echo-test = "!f() { path=$(echo $1 | tr '\\' '/'); echo $path; }; f"

但是我收到了这个错误:

  

tr:警告:字符串末尾的非转义反斜杠不可移植

我尝试在内部写tr '\\\\' '/',认为Git只是逃避\bash只获得一个\,但我得到同样的错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你需要在这里写8个反斜杠,因为字符串将被转义三次。

echo-test = "!f() { path=$(echo $1 | tr '\\\\\\\\' '/'); echo $path; }; f"
  1. 第一次加倍是因为OP已使用tr
  2. 第二次加倍归因于format of .gitconfig

      

    在双引号内,必须对双引号"和反斜杠\字符进行转义:对\"使用",为\\使用\

  3. 第三次加倍是由于使用sh -c "…"执行命令。