如何接受包含反斜杠的未加引号的字符串?

时间:2018-06-23 08:25:00

标签: bash unix

我想要一个命令从Windows转换为Unix文件名,只是用反斜杠替换反斜杠...,但不要用“”引号,因为复制粘贴时比较麻烦。

它在另一个方向(u2w)上使用带引号且不带引号的输入,但不适用于w2u。

machine:~/glebbb> w2u "a\b\c"

a/b/c

machine:~/glebbb> w2u a\b\c  

abc

我如何使其起作用?我尝试了各种转义,回显-E,printf等形式,似乎没有任何作用!

function w2u {
    if [ -z "$1" ] ; then
        echo "w2u: must provide path to convert!"
        return 1
    else
        printf "\n%s\n\n" "$1" | sed -e 's#\\#\/#g'
        return 0
    fi
}

1 个答案:

答案 0 :(得分:1)

如果您要复制粘贴并且路径包含在X剪贴板中,则可以使用xclip

xclip -o | sed -e 's#\\#\/#g'

如果您要转换的文件路径很多,则可以处理整个文件:

sed ... < file

将产生一个新流,其中反斜杠更改为斜杠。

否则,我想不出任何办法如何不将参数转义到w2u却又使反斜杠失去了意义。