在Bash中手动输入一个Windows路径,如何转换为POSIX路径?
Manually enter a Windows path in Bash, how to convert to a POSIX path?
当我在Bash中手动输入Windows路径时,
我想将其转换为 POSIX 路径并将其保存在变量中。
但是转义字符没有转义。
我想输入 C:\Users\xiang\Downloads\Compressed
并将其转换为
/c/users/xiang/downloads/compressed
#!/bin/sh
read -rp "Enter a path: " pth
dir=$(echo "/$pth" | sed -e 's/\/\//g' -e 's/://')
cd ${dir}
git status
read -n 1 -s -r -p "Press any key to continue"
exit 0;
这是因为 bash 将您的 C:\Users\<user>\Downloads\Compressed
中的反斜杠 \
视为转义字符。要解决此问题,您需要将输入作为 C:\Users\<user>\Downloads\Compressed
。
问题是您的 Windows 路由中的反斜杠被认为是转义字符的一种方式。
这里你有两个选择,要么你用双反斜杠写路由(C:\\Users\\...),要么你可以使用 read -rp "Enter a path: " pth
(注意 r)。
我个人更喜欢第二种方式,因为你不必告诉其他用户用双反斜杠写路由,而且更简单。
当我在Bash中手动输入Windows路径时, 我想将其转换为 POSIX 路径并将其保存在变量中。 但是转义字符没有转义。
我想输入 C:\Users\xiang\Downloads\Compressed
并将其转换为
/c/users/xiang/downloads/compressed
#!/bin/sh
read -rp "Enter a path: " pth
dir=$(echo "/$pth" | sed -e 's/\/\//g' -e 's/://')
cd ${dir}
git status
read -n 1 -s -r -p "Press any key to continue"
exit 0;
这是因为 bash 将您的 C:\Users\<user>\Downloads\Compressed
中的反斜杠 \
视为转义字符。要解决此问题,您需要将输入作为 C:\Users\<user>\Downloads\Compressed
。
问题是您的 Windows 路由中的反斜杠被认为是转义字符的一种方式。
这里你有两个选择,要么你用双反斜杠写路由(C:\\Users\\...),要么你可以使用 read -rp "Enter a path: " pth
(注意 r)。
我个人更喜欢第二种方式,因为你不必告诉其他用户用双反斜杠写路由,而且更简单。