¿Por qué es que casi todas las instrucciones relacionadas con la adición de texto a los archivos del sistema tienen gusto fstabe /etc/apt/sources.list.d/<name>.listimplican el uso tee y la adición de echodicho texto?
Tome los siguientes ejemplos, que se ejecutan como root :
## 1
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee -a file1
## 2
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' >> file2
Correr diff -u file1 file2no devuelve nada; correr md5sum file1 file2muestra que sus sumas de verificación son idénticas, lo que me lleva de vuelta a mi pregunta original:
¿Por qué es | tee <FILENAME>tan frecuente en los documentos de Ubuntu, es solo una buena práctica, de lo contrario, no sería más fácil usar el ejemplo 2 en lugar de pasar la salida de echoa tee?
command-line
tee
Alexej Magura
fuente
fuente

Respuestas:
Hay una diferencia: tee duplica la salida: la envía tanto al archivo como a la pantalla.
Pero hay más:
Por ejemplo, si desea escribir alguna cadena en dos archivos a la vez, el comando con tee que puede usar es:
Otra cosa que te puede ayudar es evitar un problema al usar sudo. El operador de redirección de salida normal siempre se ejecuta con sus privilegios de usuario, también cuando escribe un sudo delante del comando que genera el texto STDOUT. En otras palabras, esto fallará si no tiene el permiso para escribir en ese archivo:
Pero con tee, todo irá bien:
2 ejemplos de este sitio . Tiene un poco más.
fuente
sudosintee-sudo sh -c 'echo SOMETHING > FILE'...;)", las cosas se vuelven desordenadasecho "some text" | tee file1 file2 ... fileNy tal vez agregue> /dev/null, si no desea desorden en stdout.teetoma la secuencia de entrada estándar y la escribe tanto en la secuencia de salida estándar como en una secuencia de archivos. Si ayuda a la gente a recordar, el nombre del comando proviene de un divisor en T en la tubería. Hay un buen artículo de Wikipedia donde aprendí sobre el origen del nombre del comando.fuente
En primer lugar, en
teesí mismo no agrega texto, ni tampoco>.Es
tee -ay su complemento,>>que APENDE el texto.No creo que todos los shells admitan la
>>función, por esoteese usa más comúnmente. (Piense en simplemente viejosh). Tee es un comando, mientras que>>es un operador.Si usa (mi favorito personal)
bash,>y>>es mucho más agradable / fácil.El uso
teetambién le permite sudo SOLO ese comando para que no tenga que sudo la declaración completa, como ensudo sh -c "echo foo > bar".teeTambién le permite dividir la salida. Por supuesto, todo esto se puede ver enman tee. Es principalmente solo su preferencia personal.Para leer más, ver aquí y aquí .
fuente
sudo somecommand >> filease ejecutarásudo somecommandy luego, como el usuario que invoca , agregar la salida afilea. Usarsudo sh -c "somecommand >> filea"obras, pero puede causar pesadillas entre comillas anidadas. El uso sesomecommand | sudo tee -a fileaejecutasomecommandcomo el usuario que invoca, y luego agrega la salidafileacomo root, que generalmente es lo que el usuario quería.