Pourquoi xargs bash -ic echo n'est-il pas la même chose que xargs echo ou xargs?


3

J'attends la commande

ls -d doc/* | grep -P "<some_pattern>" | xargs bash -ic echo

faire la même chose que:

ls -d doc/* | grep -P "<some_pattern>" | xargs echo

c'est-à-dire, pour me donner les fichiers correspondants ls -d doc/* | grep -P "<some_pattern>", uniquement séparés par des espaces au lieu de nouvelles lignes.

Mais je ne reçois qu'une nouvelle ligne en sortie.

Pourquoi est-ce? Comment puis-je corriger la première commande pour faire ce que je veux?

En passant, je me sers de l'utilisation à la zshplace de bash, mais aucun ne fonctionnera.

J'ai en fait besoin de cela pour imprimer un groupe de fichiers dont les noms correspondent au modèle spécifié par "grep" et doivent être imprimés à l'aide d'une .zshrccommande -aliased.

Réponses:


4

depuis la page de manuel bash

   -c string If the -c option is present,  then  commands  are  read  from
             string.   If  there  are arguments after the string, they are
             assigned to the positional parameters, starting with $0.

alors...

 $ echo a b c d e f g | xargs bash -ic echo

 $ echo a b c d e f g | xargs bash -ic 'echo $0 $@'
 a b c d e f g

Cela marche! Grand merci. Il me manquait l’existence de paramètres de position et je ne vis que cette partie des pages de manuel. Ma faute!
k.stm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.