将文件路径从 Linux 转换为 Wine 工具的 Windows 格式

Dan*_*scu 3 wine shell-script regular-expression

我有一个 Windows diff 工具,它比我找到的任何 Linux diff 工具都要好(我已经对可视化 diff 工具做了一些相当广泛的分析)。我想在 Linux 上使用该工具(通过 Wine)并且能够将 Linux 文件路径传递给它,部分原因是像 Double Commander 这样的双窗格文件管理器在调用 diff 工具时会自动传递完整的文件路径。

所以我问这个问题的反面:如何将 Linux 样式的文件路径(包括空格等转义字符)转换为通过 Wine 运行的 Windows 工具可接受的 Windows 样式文件路径?

举个简单的例子,

输入:

/path/to/file1.ext /path/to/file2.ext

输出

"\path\to\file1.ext" "\path\to\file2.ext"

当然,在现实世界中,文件可以有空格等等,所以我正在寻找一种比bash我目前所拥有的替代更可靠的解决方案:

#!/bin/bash
p1=$1
p2=$2
wine /utils/wincmp.exe ${p1//\//\\} ${p2//\//\\}
Run Code Online (Sandbox Code Playgroud)

Jde*_*eBP 5

您的脚本实际上非常接近。您所需要的只是winepath作为 WINE 一部分的工具来进行转换:

#!/bin/sh
exec wine /utils/wincmp.exe "`winepath --windows \"$1\"`" "`winepath --windows \"$2\"`"

或者使用Laurent Bercot 的execline

#!/command/execlineb -S2
反引号 -i left { winepath --windows $1 }
反引号 -i right { winepath --windows $2 }
多替换{
    进口左左
    进口权
}
葡萄酒 
/utils/wincmp.exe ${left} ${right}