
Lo estoy usando | sudo tee FILENAME
para poder escribir o agregar a un archivo para el cual se requieren permisos de superusuario con bastante frecuencia.
Aunque entiendo por qué es útil en algunas situaciones, que tee
también envía su entrada a STDOUT nuevamente, nunca usé esa parte tee
para nada útil. En la mayoría de las situaciones, esta característica solo hace que mi pantalla se llene con vibraciones no deseadas, si no doy el paso adicional y la silencio manualmente con tee 1> /dev/null
.
Mi pregunta: ¿Existe un comando alrededor que haga exactamente lo mismo que tee
, pero que, de forma predeterminada, no envíe nada a STDOUT?
Respuesta1
Otra opción que evita canalizar el material de un lado a otro /dev/zero
es
sudo command | sudo dd of=FILENAME
Respuesta2
La dd
solución todavía imprime basura en stderr:
$ ls | sudo dd of=FILENAME
0+1 records in
0+1 records out
459 bytes (459 B) copied, 8.2492e-05 s, 5.6 MB/s
Eso se puede evitar usando la status
opción:
command | sudo dd status=none of=FILENAME
Otra posibilidad interesante (al menos para Linux):
command | sudo cp /dev/stdin FILENAME
Para copiar la entrada TTY en un archivo, suelo hacer esto:
sudo cp /dev/tty FILENAME
Es una lástima que Tee no tenga una opción para suprimir la salida estándar.
Respuesta3
Podrías usar un guión. Es decir, ponga algo como esto en ie $HOME/bin/stee
, 0tee
o similar:
#!/bin/bash
argv=
while [[ "$1" =~ ^- ]]; do
argv+=" $1"
shift
done
sudo tee $argv "$1" > /dev/null
#!/bin/bash
sudo tee "$@" > /dev/null
Hazlo ejecutable:
$ chmod 755 acero
Ahora haz, es decir:
$ ls-la | stee -a /raíz/foo
Respuesta4
Puede encapsular todo el comando en sudo, de modo que el shell en sí, así como las redirecciones, se realicen como root
:
sudo sh -c 'do_something > FILENAME'