我在编写在WSL Ubuntu环境中使用/path/to/file
并在其默认Windows程序中打开该文件的程序时遇到了麻烦。这里最大的问题是将/path/to/file/for/WSL
转换为path\to\file\for\windows
。这是我写的并放入.bashrc
文件中的内容:
# Function to get open-wsl to work
function open-from-wsl() {
echo "opening"
cmd_directory = echo "$1" | sed 's/^\///' | sed 's/\//\\/g' | sed 's/^...../\0C:/' | sed 's/^\mnt//'
cmd_directory = echo "$cmd_directory" | sed 's/^..//'
cmd.exe /C start $cmd_directory
}
理想情况下,如果我键入:
open-from-wsl /mnt/c/Users/DavidG/Google\ Drive/folder/file.PDF
我将在默认的PDF查看器中打开file.PDF
。但是,截至目前,我收到错误cmd_directory: command not found
,然后打开命令提示符窗口。当然,编写此文件是为了使我可以从WSL中打开任何文件,并在其默认程序中将其打开,这不仅与PDF有关。
编辑:由于Socowi的输入,我已经像这样调整了代码:
# Function to get open-wsl to work
function open-from-wsl() {
echo "opening"
cmd_directory=$(echo "$1" | sed 's#\##')
cmd_directory=$(echo "$cmd_directory" | sed 's/^\///' | sed 's/\//\\/g' | sed 's/^...../\0C:/' | sed 's/^\mnt//')
cmd_directory=$(echo "$cmd_directory" | sed 's/^..//')
cmd.exe /C start $cmd_directory
}
我现在的问题似乎是我无法从\
中删除/mnt/c/Users/DavidG/Google\ Drive/folder/file.PDF
,这是我通过添加该行来实现的目标
cmd_directory=$(echo "$1" | sed 's#\##')
答案 0 :(得分:0)
在与邻道问题有关的各种问题中搜索之后。我终于找到了解决方案。这是我最终放入我的.bashrc
文件中的功能:
# Function to get open an arbitrary file in its default Windows program
function open-from-wsl() {
echo "opening"
cmd_directory=$(echo "$1" | sed 's#[\]##')
cmd_directory=$(echo "$cmd_directory" | sed 's/^\///' | sed 's/\//\\/g' | sed 's/^...../\0C:/' | sed 's/^\mnt//')
cmd_directory=$(echo "$cmd_directory" | sed 's/^..//')
echo "$cmd_directory"
cmd.exe /C start "" "$cmd_directory"
}
这将允许您在默认Windows程序中打开计算机中的任何文件(假设您知道该文件的WSL路径)。
答案 1 :(得分:0)