miércoles, 3 de junio de 2015

La diferencia entre > y |

A primera vista, podría ser difícil de comprender la redirección realizada por el operador tubería (pipeline)  | frente a la del operador de redirección >. Simplificando, el operador de redirección conecta un comando con un archivo mientras que el operador tubería conecta la salida de un comando con la entrada de un segundo comando.

comando1 > archivo1
comando1 | comando2

Mucha gente intentará lo siguiente cuando estén aprendiendo las tuberías, “sólo para ver lo que sucede.”

comando1 > comando2

Respuesta: A veces algo realmente malo.

Aquí tenemos un ejemplo real enviado por un lector que estaba administrando un servidor basado en Linux. Como superusuario, hizo esto:

# cd /usr/bin
# ls > less

El primer comando le colocó en el directorio donde están almacenados la mayoría de los programas y el segundo comando le dijo al shell que sobrescriba el archivo less con la salida del comando ls. Como el directorio /usr/bin ya contenía un archivo llamado “less” (el programa less), el segundo comando sobrescribió el archivo del programa less con el texto de ls y en consecuencia destruyó el programa less en su sistema.

La lección aquí es que el operador de redirección crea o sobrescribe archivos silenciosamente, así que necesitas tratarlo con mucho respeto.

No hay comentarios:

Publicar un comentario