Redirection de sortie et espaces

9

Je suis paranoïaque à ce sujet, mais j'espère que c'est une question simple:

Y a-t-il une différence entre

cat file1 | egrep -oP "[Mm]y string" > /home/user/file.txt

et

cat file1|egrep -oP "[Mm]y string">/home/user/file.txt

c'est-à-dire, est-ce important si j'ai des espaces remplissant les caractères pipe (|) et redirection (>)? Je suis vraiment paranoïaque qu'en ayant des espaces là-bas, les espaces finiront en quelque sorte dans le fichier de sortie quand je ne le veux pas. Quelqu'un peut-il clarifier? (Utilisation d'Ubuntu 12 / bash si cela importe.)

Magnus
la source
Les seules différences sont a) cosmétique et b) la commodité lors de l'édition des lignes de commande en bash - par exemple, un "mot" est délimité par des espaces, donc sans espaces autour |ou >alors taper Ctrl-Wpour supprimer le "mot" précédent supprimerait plus que vous ne le souhaitiez probablement. idem pour les frappes de mouvements de curseur comme Esc-fet Esc-betc.
cas

Réponses:

8

Dans la ligne de commande du shell, les espaces sans guillemets ne servent qu'à délimiter les mots lors de l'analyse des commandes. Ils ne sont pas transmis, ni dans les arguments que la commande voit ni dans le flux d'entrée standard.

jw013
la source
Êtes-vous sûr qu'il n'y a pas de vulnérabilité de sécurité avec l'utilisation d'un espace après les opérateurs? J'ai du mal à le reproduire maintenant, mais il y a un exploit commun où un utilisateur malveillant peut changer l'opération prévue en utilisant un fichier comme "fileName" lorsque le fichier prévu était "fileName".
CrippledTable