2017-01-27 10 views
0

Как я могу использовать одиночную кавычку в команде smbclient «put»?smbclient файл с копией

Например:

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

'в "Guns N' Roses" генерирует ошибку, но я не могу использовать "пушки Розы N \»", так как изменится путь.

+0

Этот вопрос касается не Samba или libsmbclient, а о том, как использовать кавычки в своей оболочке. Какую оболочку вы используете? – ghoti

ответ

0

Ваша оболочка не допускает использования одиночных кавычек с одиночными кавычками внутри строки с одной кавычкой. Прочтите раздел «QUOTING» в man bash (при условии, что ваша оболочка - 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")" 
+0

Отлично !!! Спасибо, теперь все работает. – Vardar