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

Setting a Git alias which uses TR to translate backslash into forward slash

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

所以我有这个别名:

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

但是我得到这个错误:

tr: warning: an unescaped backslash at end of string is not portable

我试着在里面写 tr '\\' '/',认为 Git 只是转义了 \bash 得到了一个 \,但我得到了相同的结果错误。

有什么想法吗?

这里需要写8个反斜杠,因为字符串会被反转义3次

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

    Inside double quotes, double quote " and backslash \ characters must be escaped: use \" for " and \ for \.

  3. 第三次翻倍是因为使用sh -c "…"执行了命令。

我知道问题是关于 tr 但这是一个等效的替代方案。

如果你能写出 |tr ... 命令,
使用 |sed -r 's"[\]"/"g'.

更清楚(更少混淆)

我希望我能一直避免使用\\\\\\...我永远不会习惯它