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 a...@machine.mmm:~ ; 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" a...@example.com:; 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" a...@example.com:; 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 a...@machine.mmm:~ ; done > Le chemin d’une machine distante u...@example.com: 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 alb...@example.com:~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-requ...@lists.tuxfamily.org Archives: http://listengine.tuxfamily.org/lists.tuxfamily.org/carrefourblinux ou http://www.mail-archive.com/carrefourblinux@lists.tuxfamily.org/