1 votes

Pourquoi echo * | rm -f ne fonctionne-t-il pas?

Pourquoi echo * | rm -f ne fonctionne-t-il pas? Selon mes connaissances, echo * devrait lister tous les fichiers du répertoire et le pipe devrait envoyer cette liste comme argument à la commande rm -f, qui devrait supprimer les fichiers. Qu'est-ce que je rate?

7voto

Le pipe envoie des données à stdin. Et non à la liste des arguments. Ce sont deux concepts très différents.

Les arguments sont ce qui est en ligne après la ligne de commande. Stdin est essentiellement comme un fichier qui est déjà ouvert, à partir duquel vous pouvez lire.

Veuillez également noter que faire des choses comme ceci : echo * | xargs rm -f est une mauvaise idée car cela pourrait causer des problèmes en cas de fichiers avec des espaces dans les noms, ou avec un "-" au début.

1voto

Transmettez la sortie de echo * en tant qu'arguments plutôt que des entrées stdin provenant d'un pipe.

rm -f `echo *`

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X