2017-01-27 2 views
0

Comment puis-je utiliser guillemet simple dans la commande "put" de smbclient?smbclient Copier le fichier avec guillemet simple

Par exemple:

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

Le 'dans "Guns N' Roses" génère une erreur, mais je ne peux pas utiliser "Guns N \ » Roses", parce chemin va changer.

+0

Cette question ne concerne pas Samba ou libsmbclient, il s'agit de savoir comment utiliser des guillemets dans votre shell. Quelle coque utilisez-vous? – ghoti

Répondre

0

Votre shell n'autorise pas l'utilisation de guillemets simples échappés dans une chaîne entre guillemets simples. Lisez la section intitulée "QUOTING" au man bash (en supposant que votre shell est bash).

Vous devez échapper aux apostrophes internes extérieur la chaîne unique cité:

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

Ou, si vous préférez:

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

Ou alternativement, vous pouvez mettre les choses dans les variables , utilisez la mise en forme, etc Évidemment, je n'ai pas testé cela dans votre environnement, mais ce qui suit me semble raisonnable:

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

Super !!! Merci, tout le travail maintenant. – Vardar