#1 Le 31/07/2018, à 10:53
- Blackdruid
Exécuter un script .sh en pipant ls, grep et xargs
Salut,
Je voudrais réussir à enchaîner les commandes suivantes.
J'ai plusieurs scripts dans mon répertoire demo :
user@localhost: demo$ ls
script1.sh script2.sh script3.sh script4.sh
Et il me faut lancer le script3.sh après un ls et un grep via un xargs :
user@localhost: demo$ ls | grep script3 | xargs bash -c
bash: script3.sh : commande introuvable
La commande est introuvable car mon répertoire demo n'est pas dans le PATH et il manque donc le "./" devant le nom du script pour que celui-ci soit trouvé et exécuté.
Quelqu'un saurait-il modifier cette commande pour qu'elle fonctionne ?
(C'est pour ma culture personnelle, je ne cherche pas de solutions de contournement j'en ai déjà )
Hors ligne
#2 Le 31/07/2018, à 11:31
- bruno
Re : Exécuter un script .sh en pipant ls, grep et xargs
AMHA, ce n'est pas parce que ton script n'est pas dans le PATH, mais à cause de l'argument -c.
Quand tu fais cela ce qui est exécuté c'est :
bash -c script3.sh
ce qui provoque une erreur car ce devrait être :
bash script3.sh -c
Tu peux faire :
ls | grep script3 | xargs -I {} /bin/bash {} -c
Dernière modification par bruno (Le 31/07/2018, à 11:43)
#3 Le 31/07/2018, à 11:38
- pingouinux
Re : Exécuter un script .sh en pipant ls, grep et xargs
Bonjour,
Si tu tiens absolument à utiliser cet enchaînement bizarre :
ls | grep script3 | xargs bash
ou bien
ls -d ./* | grep script3 | xargs bash -c
Hors ligne
#4 Le 31/07/2018, à 11:42
- bruno
Re : Exécuter un script .sh en pipant ls, grep et xargs
Oui mais :
ls -d ./* | grep script3 | xargs bash -c option
ne fonctionnera pas pour la raison invoquée plus haut.
N.B. : je ne vois pas l’intérêt d'utiliser -c sans passer d'option…
Dernière modification par bruno (Le 31/07/2018, à 11:43)
#5 Le 31/07/2018, à 11:45
- Blackdruid
Re : Exécuter un script .sh en pipant ls, grep et xargs
Yes, bien vu ! En effet le -c est en trop (étonnant que je n'aie pas testé cette combinaison, pourtant simple).
Voilà ce que je voulais :
ls | grep script3 | xargs bash
Merci
Je trouve ça pratique quand on a plusieurs scripts avec des préfixes proches dans un même répertoire. Ça m'évite de mitrailler la touche [tab].
Dernière modification par Blackdruid (Le 31/07/2018, à 11:46)
Hors ligne
#6 Le 31/07/2018, à 12:14
- pingouinux
Re : Exécuter un script .sh en pipant ls, grep et xargs
Je trouve ça pratique quand on a plusieurs scripts avec des préfixes proches dans un même répertoire.
C'est un point de vue…
Ceci ferait la même chose
./script3*
Hors ligne
#7 Le 31/07/2018, à 12:20
- Watael
Re : Exécuter un script .sh en pipant ls, grep et xargs
Ça m'évite de mitrailler la touche [tab].
pourtant, ça évite ce genre de commande foireuse.
+1 pingouinux, bien que manipuler des scripts à l'aveuglette...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne