teepuede redirigir la entrada estándar canalizada a la salida y al archivo estándar .
echo Hello, World! | tee greeting.txt
El comando anterior mostraría el saludo en la pantalla del terminal y lo guardaría en el contenido del greeting.txtarchivo, creando el archivo si no hay ninguno con ese nombre.
También hay un -ainterruptor para teeagregar al archivo existente en lugar de sobrescribir.
¿Hay alguna manera conveniente de redirigir la entrada canalizada al comando y la salida estándar en lugar del archivo?
Estoy tratando de crear una secuencia de comandos de contenedor para bukucopiar en la selección principal la URL del marcador especificado por su número de índice.
# bukuc:
#!/bin/sh
url=$(buku -f 1 -p $1 | cut -f 2) # NUMBER : URL
echo $url # DISPLAY
echo $url | xsel # PRIMARY SELECTION
Aquí lo uso echo dos veces, primero para mostrar en el terminal y luego guardar en la selección principal (portapapeles).
Me imagino algo echo $url | teeC xselo un atajo para mostrar la salida antes de pasar al siguiente comando (encadenar comandos), lo que me permitiría encadenar todo el comando en una línea sin la necesidad de guardar el resultado en una variable de la siguiente manera:
buku -f 1 -p $1 | cut -f 2 | teeC xsel
También puedo usarlo urlviewpara ver, seleccionar y abrir con lo $BROWSERsiguiente:
bukuc 10-20 | urlview

tee /dev/ttyotty0(no recuerdo exactamente ... estoy en el camino)info teemenciona la sustitución del proceso y la salida del tee de tubería a un programa ...Respuestas:
Es sencillo en los shells que admiten la sustitución del proceso , por ejemplo bash
De lo contrario, podría usar un FIFO (aunque carece de comodidad)
fuente
sh(Bourne shell) no admite esa característica; 2. La flecha debe pegarse como parte del operador único>()para la sustitución del proceso.El análogo directo de "tee para comandos" es el
peecomando de moreutils (teepero con tuberías). Sus argumentos se usan como comandos para ejecutar, no como rutas, y obtienen la entrada canalizada a ellos en lugar de escribirlos en el archivo. Todos los comandos reciben la entrada estándar a la que se canalizópeecomo propia.El uso
pee, se puede obtener el resultado que quería diciéndole que se ejecute tantoxselycatcon la entrada.Hay un
catproceso adicional flotando por allí para hacer la salida, lo cual no es realmente un problema para su caso de uso, pero podría ser menos ideal en otras ocasiones. Esto funciona con cualquier shell, a diferencia de la sustitución de procesos, pero por supuesto requiere una herramienta adicional (probablemente menos común) instalada.Puede dar órdenes más complejas con una cita de ellos:
pee "xsel --display :1" cat. Se ejecutan con ellossh, por lo que debe tener cuidado con los metacaracteres de shell.fuente