Vous pouvez rediriger tout ce que vous voulez, echomais cela ne fera rien. echone lit pas son entrée standard. Tout ce qu'il fait est d'écrire dans la sortie standard ses arguments séparés par un caractère d'espacement et terminés par un caractère de nouvelle ligne (et avec certaines echoimplémentations contenant des séquences d'échappement développées et / ou des arguments commençant par -éventuellement traités comme des options).
Si vous souhaitez echoafficher le contenu d'un fichier, vous devez transmettre ce contenu en tant qu'argument echo. Quelque chose comme:
echo "$(cat my_file.txt)"
Notez que des $(...)bandes le caractère de nouvelle ligne de fuite s de la sortie de cette catcommande, et echoajoute un retour.
Notez également que, sauf avec zsh, vous ne pouvez pas transmettre de caractères NUL dans les arguments d'une commande, de sorte que l'opération ci-dessus ne fonctionnera généralement pas avec les fichiers binaires. yashsupprimera également les octets qui ne font pas partie des caractères valides.
Si la raison de vouloir le faire parce que vous voulez echoà étendre \n, \b, \0351... des séquences d'échappement dans le fichier (comme UNIX conforme à l ' echoimplémentations font, mais pas tous ), alors vous préférez utiliser à la printfplace :
printf '%b\n' "$(cat my_file.txt)"
Contrairement à echo, celui-ci est portable et n'aura pas de problèmes si le contenu du fichier commence par -.
Comme alternative à $(cat file), avec ksh, zshet bash, on peut aussi le faire:$(<file) . C'est un opérateur spécial dans lequel le shell, par opposition à, catlit le contenu du fichier pour constituer l'extension. Il supprime toujours les sauts de ligne et les indentations de fin sur les octets NUL sauf dans zsh. En bash, cela impose encore un processus supplémentaire. Notez également qu'une différence est que vous n'obtiendrez aucune erreur si vous essayez de lire un fichier de type répertoire de cette façon. En outre, while $(< file)est spécial, $(< file; other command)non (dans le cas zshoù, sans émuler un autre shell, le contenu de la bibliothèque serait développé file, en exécutant la commande implicite $READNULLCMD (généralement un pager)).
echo?