smbclient复制文件,单引号

时间:2017-01-27 11:06:49

标签: linux samba libsmbclient

我如何在smbclient中使用单引号" put"命令?

例如:

smbclient -c 'put "/mydir/video.avi" "\Music\Guns N' Roses\video.avi"'

' in" Guns N'玫瑰"生成错误,但我不能使用" Guns N \'玫瑰",因为会改变路径。

1 个答案:

答案 0 :(得分:0)

您的shell不允许在单引号字符串中使用转义单引号。阅读man bash中标题为“QUOTING”的部分(假设你的shell是bash)。

你需要在单引号字符串中转义内部单引号

smbclient -c 'put "/mydir/video.avi" "\Music\Guns N'\'' Roses\video.avi"'

或者,如果您愿意:

smbclient -c 'put "/mydir/video.avi" "\Music\Guns N'"'"' Roses\video.avi"'

或者,你可以把东西放在变量中,使用格式化等等。显然我没有在你的环境中测试过这个,但以下内容对我来说似乎是合理的:

$ source="/mydir/video.avi"
$ target="\Music\Guns N' Roses\video.avi"
$ cmd='put "$s" "$s"'
$ smbclient -c "$(printf "$cmd" "$source" "$target")"