Re: [CBLX] y a-t-il un bug dans scp ? |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/carrefourblinux Archives
]
- To: carrefourblinux@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [CBLX] y a-t-il un bug dans scp ?
- From: Didier Spaier <didier@xxxxxxxx>
- Date: Mon, 14 Nov 2022 17:48:50 +0000
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/simple; d=slint.fr; s=default; t=1668440986; bh=NhqC8FvYZnSJB8RXG0Kj8HkMGugm3IFJLQ9n186ofYE=; h=Date:Subject:To:References:From:In-Reply-To:From; b=dACrlaFIQGy/kbW+5zYg29pYs4fe6NFLoLzMQveJeI4VKPnsjx8p2q5rcj97msNDk 08vYgTtzovzSp5Lh0frcakJVKzSDQLwM85Dovm3jg2u0lLpmw1x+Ys4c4shiiXbtL8 5ujRAKDLWyLn0Z6ybaH+xfIzSJQgNAOGdh0H2FkLZ+Vqe3E0RsV1AaXX1qQ2mytqOo 9r/zlVb51v0TQCqyaMJTke7VA6IPBFFnvgrYaTDbvDHHLIAMF0dXzIMouFG4ENaKud ukDBx6IhkIhHHfMCcUVT+XCpy28oRLOIJKYDfh6/EoyEF5naLd0tK2kHAS/x4aPWLS tkFX+CtGd/GmQ==
Bonjour Léa,
Le 14/11/2022 à 15:48, Léa Gris a écrit :
> Le 14/11/2022 à 15:08, Didier Spaier écrivait :
>> Bonjour,
>>
>> Je n'ai pas la réponse mais tu peux envoyer les 20 fichiers en une seule ligne
>> de commande.
>> si $liste="f1 f2 f3 ... f20":
>> echo "$liste"|while read $i; do scp $i aldo@xxxxxxxxxxx:~ ; done
>
> Non vraiment trop de mauvaise pratique du shell :
>
> On ne range pas une liste dans un chaîne séparée par des espaces ; on la range
> dans un tableau liste=('f1' 'f2' 'f3' ... 'f20').
> for src in "${liste[@]}"; do scp "$src" aldo@xxxxxxxxxxx:; done
Pas ici. Je refuse les bashismes!
Drew DeVault t'expliquera pourquoi mieux que je ne saurai le faire:
https://drewdevault.com/2018/02/05/Introduction-to-POSIX-shell.html
Pour info ce petit script (un peu moins de 3000 lignes):
https://github.com/DidierSpaier/slint-translations/blob/main/source/functions
n'en comporte aucun (vérifié avec shellcheck) et fonctionne.
Dans le même esprit celui-là:
https://github.com/DidierSpaier/convtags/blob/master/convtags
ne comporte aucune extension GNU à sed tel que spécifié par:
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
> ou simplement:
> for src in 'f1' 'f2' 'f3'; do scp "$src" aldo@xxxxxxxxxxx:; done
Là, je suis d'accord.
En outre, je me suis aperçu après coup que pour que ma proposition fonctionne
j'aurais dû écrire quelque chose comme:
echo "f1 f2 f3 <suite>"|sed "s@ @\n@g"|while read $i; do scp $i
aldo@xxxxxxxxxxx:~ ; done
> Le chemin d’une machine distante user@xxxxxxxxxxx: pointe toujours vers le
> dossier home de l'utilisateur. Donc inutile de spécifier le tilde.
> Maintenant si tu veux désigner le dossier home d’un autre utilisateur que celui
> qui se connecte, il faut écrire albert@xxxxxxxxxxx:~bernard/
> Le / de fin est nécessaire pour bien spécifier que la destination est un dossier
> et éviter comme dans ton cas que la taille considérée soit celle de l’inode du
> dossier qui est juste la taille allouée pour contenir les noms de fichiers du
> dossier et qui est visible avec la commande :
> ls -ld ~
>
> On ajoute toujours -r à read sinon ça interprète les \
> On met toujours une variable shell entre guillemets pour éviter d'étendre le
> contenu comme un motif de recherche (globbing pattern) et découpage selon le
> contenu de la variable d’environnement IFS.
>
> Une très bonne lecture :
> https://mywiki.wooledge.org/BashPitfalls
>
> Et pour revenir à scp. rsync est un remplaçant bien plus moderne qui sait gérer
> la compression, la reprise et les conditions de mises à jour ou synchronisations
> entre dossiers de et vers une machine distante, ou localement.
Pour juste envoyer un fichier ou un répertoire j'utilise sftp qui fonctionne aussi.
Bonne soirée,
Didier
--
CBLX - CarrefourBLinuX MailingListe
Pour obtenir de l'aide, envoyez le sujet help à:
carrefourblinux-request@xxxxxxxxxxxxxxxxxxx
Archives:
http://listengine.tuxfamily.org/lists.tuxfamily.org/carrefourblinux
ou
http://www.mail-archive.com/carrefourblinux@xxxxxxxxxxxxxxxxxxx/