#wsl #symlink #exe #create #cmd #binary #linux

bin+lib mklink

为 Windows 创建一个 mklink 二进制文件(不是通过 cmd.exe),以及为 WSL 创建一个 Linux 版本以创建 Windows-WSL 兼容的符号链接

1 个不稳定版本

0.1.0 2019 年 10 月 13 日

#15 in #wsl

MIT 许可证

22KB
575

mklink

这主要是从 WSL 中轻松调用 mklink 的一种方式。在 WSL 中创建的 Linux 符号链接与 Windows 不兼容,但 Windows 符号链接和目录连接点与 WSL 兼容,因此通过 mklink 创建符号链接更为可取。

mklink 必须通过 cmd.exe 调用,但它似乎不是一个独立的二进制文件。当我尝试从 WSL 中调用 cmd.exe /C mklink [...args] 时,在 bash 中有效,但程序化调用无效,因此我在此处创建了一个更好的解决方案。

这个 Rust 项目,当编译为 Windows 时,创建了一个 Windows 可执行文件 mklink.exe,它通过直接调用 Win32 API 重新创建了 cmd.exe 中的 mklink 功能,仅作为一个独立的二进制文件。

当编译为 Linux(假设 WSL)时,创建一个 mklink 二进制文件,它将 WSL 路径转换为 Windows 路径,然后执行 mklink.exe

用法

 
 USAGE:
     mklink [FLAGS] <target> <link>
 
 FLAGS:
     -d, --dir
     -f, --file
     -h, --hard
         --help       Prints help information
     -V, --version    Prints version information
 
 ARGS:
     <target>
     <link>

安装

您需要克隆仓库,然后从 Windows(PowerShell)和 WSL 运行 cargo install --path .。为此,您需要在 Windows 和 WSL 上都安装 Rust。您也可以尝试交叉编译,但我认为这种方法更简单。

依赖项

~3.5MB
~63K SLoC