Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/12/2011, à 14:36

percherie

[RESOLU] Usine à gaz pour afficher le retour de la commande CP

Bonjour,

Ayant besoin d'afficher le nom du fichier copier j'ai commencé à utiliser l'option -i de la commande cp mais elle n'est pas très lisible.

J'ai donc opté pour un pipe qui me modifie ce retour mais débutant dans le codage, j'ai l'impression que c'est une grosse usine à gaz. Peut être qu'il y a une solution plus acceptable.

cp -v /home/percherie/Téléchargements/picasa39-setup.exe ~ | sed s#«/home/percherie/Téléchargements/#"Le fichier "# | sed s#».*#" à été copié"#

Affiche Le fichier picasa39-setup.exe à été copié à la place de «/home/percherie/Téléchargements/picasa39-setup.exe» -> «/home/percherie/picasa39-setup.exe»

Dernière modification par percherie (Le 24/12/2011, à 22:45)


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#2 Le 21/12/2011, à 14:54

wido

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

Bonjour,

$ basename /home/percherie/Téléchargements/picasa39-setup.exe

Hors ligne

#3 Le 22/12/2011, à 09:47

percherie

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

Excellent cette commande mais je n'arrive pas à la mettre en place basename avec la commande cp car le texte renvoyé avec l'option --verbose utilise des guillemets et contrarie la commande basename

J'ai testé :
cp -v <source> <destination> | basename (le plus logique)
basename | cp -v <source> <destination> (là j'improvise)
basename cp -v <source> <destination> (ici ça ne devrait jamais fonctionner)

Après quelques recherche sur google je tombe souvent sur des portions de code qui n'ont rien à voir ou simplement de la documentation pour CP d'un coté et BASENAME de l'autre sans utilisation conjointe.


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#4 Le 22/12/2011, à 14:53

AnsuzPeorth

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

Bjr,
Ton fichier source, il vient de où, une variable ?
Dans ce cas:

fichier='/home/user/machin.exe'
name="${fichier##*/}"

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 22/12/2011, à 21:48

percherie

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

Non, en fait je cherche simplement à copier le contenu d'un dossier et d'afficher le résulta pour l'utilisateur uniquement si il y a une copie d'effectuée. J'utilise donc « cp -uv <dossier_source>/* <dossier_destination> »

Pour l'instant mon usine à gaz fonctionne très bien mais les connaisseurs m'ont toujours surpris par des solutions déjà existante dans le shell, par exemple la commande basename semble répondre à mes besoins mais ça ne passe pas. Dommage.


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#6 Le 22/12/2011, à 21:58

Hizoka

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

Tu peux faire :

cp ton_fichier dans ton_dossier && echo "copie ok de $(basename ton_fichier)"

le && ne lance la commande qui le suit que si la commande précédante s'est bien terminé, en envoyant le code 0

le mieux étant de faire :

fichier="ton_fichier"
dossier="ton_dossier"
cp "${fichier}" "${dossier}" && echo "copie ok de ${fichier##*/}"

Dernière modification par Hizoka (Le 22/12/2011, à 22:00)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#7 Le 22/12/2011, à 22:06

pingouinux

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

Bonsoir,
Est-ce que ceci peut convenir ?

cp -v chemin_du_fichier_source chemin_de_la_destination | sed -r "s#(\`.*/|\`)(.*)' -> \`.*'#Le fichier \2 a été copié#"

Modifié : Correction

Dernière modification par pingouinux (Le 23/12/2011, à 05:02)

Hors ligne

#8 Le 23/12/2011, à 20:20

percherie

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

C'est étrange, ta commande provoque une attente, j'ai un caractère > puis plus rien, je doit interrompre avec un ctrl+C

De mon coté j'ai tout de même intégrer mon code exemple dans mon script qui donne maintenant

cp -vn $SourceParts/obligatoire/*.list /etc/apt/sources.list.d/ | sed s#«$SourceParts/obligatoire/#"Le dépôt "# | sed s#-$codename.*#" à été ajouté"#

Le nom de fichier contenu dans le dossier $SourceParts/obligatoire/ sont de la forme <nom_du_depot>-oneiric.list d'où les quelques modifications faite dans sed


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#9 Le 23/12/2011, à 20:56

pingouinux

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

percherie #8 a écrit :

C'est étrange, ta commande provoque une attente, j'ai un caractère > puis plus rien, je doit interrompre avec un ctrl+C

Est-ce la commande de mon message #7 qui provoque une attente ? Je peux regarder, mais il faut m'envoyer (avec un copier/coller) la copie exacte de la ligne de commande que tu as lancée.

Hors ligne

#10 Le 23/12/2011, à 21:57

percherie

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

J'ai du faire une erreur de syntaxe lors de la transposition de ton code à mon cas. Maintenant ça ne bloque plus mais la commande sed ne trouve rien à traiter

sudo cp -v /media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/* /etc/apt/sources.list.d/ | sed -r "s#(\`.*/|\`)(.*)' -> \`.*'#Le fichier \2 a été copié#"

Voici le retour

«/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/google-earth-stable-oneiric.list» -> «/etc/apt/sources.list.d/google-earth-stable-oneiric.list»
«/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/jd-team-jdownloader-oneiric.list» -> «/etc/apt/sources.list.d/jd-team-jdownloader-oneiric.list»
«/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/myunity-ppa-oneiric.list» -> «/etc/apt/sources.list.d/myunity-ppa-oneiric.list»
«/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/timekpr-maintainers-ppa-oneiric.list» -> «/etc/apt/sources.list.d/timekpr-maintainers-ppa-oneiric.list»
«/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/tor-oneiric.list» -> «/etc/apt/sources.list.d/tor-oneiric.list»
«/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/virtualbox-4.1-oneiric.list» -> «/etc/apt/sources.list.d/virtualbox-4.1-oneiric.list»
«/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/webupd8team-jupiter-oneiric.list» -> «/etc/apt/sources.list.d/webupd8team-jupiter-oneiric.list»

J'ai tenté de corriger ton code mais je m'y perds dans les expressions régulière que tu utilise, je n'arrive pas à comprendre comment elles fonctionnent.

En vue de test, j'ai tenté une modification des expressions en :

sudo cp -v /media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/* /etc/apt/sources.list.d/ | sed -r "s#(«/media/)(.*)' -> \`.*'#Le fichier \2 a été copié#"

Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#11 Le 24/12/2011, à 10:39

pingouinux

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

Bonjour,
En fait, le problème vient de ce que la sortie de cp -v est différente (je suis en version anglaise) :
Chez toi

«/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/google-earth-stable-oneiric.list» -> «/etc/apt/sources.list.d/google-earth-stable-oneiric.list»

Chez moi

`/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/google-earth-stable-oneiric.list' -> `/etc/apt/sources.list.d/google-earth-stable-oneiric.list'

Voici la commande qui devrait fonctionner avec «» :

cp -v chemin_du_fichier_source chemin_de_la_destination | sed -r "s#(«.*/|«)(.*)» -> «.*»#Le fichier \2 a été copié#"

Dernière modification par pingouinux (Le 24/12/2011, à 10:39)

Hors ligne

#12 Le 24/12/2011, à 19:44

percherie

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

Ha d accord, cette dernière information m'a permis de commencer à comprendre (un peut) les expressions régulière. J'ai donc modifier le code pour prendre en compte les deux langues (on sait jamais)

Contrôle avec les ponctuations anglaise :

echo "\`/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/google-earth-stable-oneiric.list' -> \`/etc/apt/sources.list.d/google-earth-stable-oneiric.list'" | sed -r "s#(\`.*/|\`|«.*/|«)(.*)('|») -> (\`|«).*('|»)#Le fichier \2 a été copié#"

Contrôle avec les ponctuations française :

echo "«/media/Protection/depot.local/etc_apt/sources.list.d/obligatoire/webupd8team-jupiter-oneiric.list» -> «/etc/apt/sources.list.d/webupd8team-jupiter-oneiric.list»" | sed -r "s#(\`.*/|\`|«.*/|«)(.*)('|») -> (\`|«).*('|»)#Le fichier \2 a été copié#"

Je pense que c'est bon, mais qu'en pense tu ?

Ps : pourquoi utilise tu comme expression régulière (\`.*/|\`), est ce que (\`.*/) suffirait ?


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#13 Le 24/12/2011, à 20:09

pingouinux

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

Bravo, c'est bon.

percherie #12 a écrit :

pourquoi utilise tu comme expression régulière (\`.*/|\`), est ce que (\`.*/) suffirait ?

C'est pour prévoir le cas où le fichier à copier n'est pas précédé de son répertoire :

$ echo "\`google-earth-stable-oneiric.list' -> \`/etc/apt/sources.list.d/google-earth-stable-oneiric.list'" | sed -r "s#(\`.*/|\`|«.*/|«)(.*)('|») -> (\`|«).*('|»)#Le fichier \2 a été copié#"
Le fichier google-earth-stable-oneiric.list a été copié
$ echo "\`google-earth-stable-oneiric.list' -> \`/etc/apt/sources.list.d/google-earth-stable-oneiric.list'" | sed -r "s#(\`.*/|«.*/)(.*)('|») -> (\`|«).*('|»)#Le fichier \2 a été copié#"
`google-earth-stable-oneiric.list' -> `/etc/apt/sources.list.d/google-earth-stable-oneiric.list'

Hors ligne

#14 Le 24/12/2011, à 22:48

percherie

Re : [RESOLU] Usine à gaz pour afficher le retour de la commande CP

Ok, dans mon cas, je pense que l'option verbose de la commande CP renvoie systématiquement l'adresse du répertoire, j'ai modifier le code en fonction.

Merci pour tout, j'apprécie beaucoup quand j'ai un bon coup de pouce et qu'on me ponde pas tout pour que je puisse comprendre par moi même. C'est ce que tu a réussi à faire. Maintenant, grâce à toi, j'ai de vague notion en expression régulière mais il faut bien commencer quelques part ;D


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne