Redireccionamiento de salida y espacios

9

Estoy paranoico sobre esto, pero espero que sea una pregunta simple:

¿Hay alguna diferencia entre

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

y

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

es decir, ¿importa si tengo espacios que rellenan la tubería (|) y los caracteres de redireccionamiento (>)? Estoy realmente paranoico de que tener espacios allí los espacios terminen de alguna manera en el archivo de salida cuando no quiero eso. ¿Alguien puede aclarar? (Usando Ubuntu 12 / bash si eso importa).

Magnus
fuente
Las únicas diferencias son a) cosmética yb) conveniencia al editar líneas de comando en bash, por ejemplo, una "palabra" está delimitada por espacios, por lo que sin espacios alrededor |o >luego escribiendo Ctrl-Wpara eliminar la "palabra" anterior se eliminaría más de lo que probablemente deseaba. ídem para cursor de movimiento pulsaciones de teclado como Esc-fy Esc-betc.
cas

Respuestas:

8

En la línea de comandos del shell, los espacios sin comillas solo sirven para delimitar palabras durante el análisis de comandos. No se transmiten, ni en los argumentos que ve el comando ni en la secuencia de entrada estándar.

jw013
fuente
¿Estás seguro de que no hay una vulnerabilidad de seguridad al usar un espacio después de los operadores? Estoy teniendo dificultades para reproducirlo ahora, pero hay una vulnerabilidad común en la que un usuario malintencionado puede cambiar la operación prevista mediante el uso de un archivo como "fileName" cuando el archivo deseado era "fileName".
CrippledTable