设想
我在使用 powershell 命令 wsl 从包含空格的路径复制文件时遇到了一些困难。我也没有找到这个特定案例的示例。因此我想知道:
问题
如何使用 powershell 复制 wsl 中路径中包含空格或空格的文件?
答案1
解决方案
其本质如下:
- 空格不需要用反引号 ` 进行转义
- 带空格的路径需要用引号 " 引起来,并且需要用反斜杠 \ 进行转义
- 整个字符串需要用单引号 ' 括起来
最小工作示例
MWE 是一个名为的 powershell 脚本exampleCopyCommand.ps1
,它将文件复制someFile.txt
到 wsl 中:
[String] $copy = 'sudo cp \"/mnt/c/path with a space in it/subFolder/Taskwarrior-installation/AutoInstallTaskwarrior/src/main/resources/autoinstalltaskwarrior/someFile.txt\" /home/testlinuxname/maintenance/gCal/' #WORKING
Write-Output "CurrentPathCopyCommand="$copy
#wsl $copy # not working
$output = bash -c $copy # working
Write-Host $output
参数化示例
由带有空格的路径组成的变量字符串的示例是:
[String] $linuxCurrentPath ="/mnt/c/path with a space in it/subFolder/Taskwarrior-installation/AutoInstallTaskwarrior"
[String] $getLinuxUsername ="testlinuxname"
[String] $getMaintenanceFolderName="maintenance"
[String] $getGCalSyncFolderName="gCal"
[String] $copy = 'sudo cp \"'+$linuxCurrentPath+'/src/main/resources/autoinstalltaskwarrior/askSync.sh\" /home/'+$getLinuxUsername+"/"+$getMaintenanceFolderName+"/"+$getGCalSyncFolderName+"/"
Write-Output "CurrentPathCopyCommand="$copy
#wsl $copy # not working
$output = bash -c $copy # working
Write-Host $output
笔记
^ 此处的需求并非回答问题时必须满足的绝对要求,而是此特定解决方案中必须满足的要求。我可以想象还有其他解决方案不需要满足这些需求。