Another option that avoids piping the stuff back and then to /dev/zero
is
sudo command | sudo dd of=FILENAME
Я использую, | sudo tee FILENAME
чтобы иметь возможность писать или добавлять в файл, для которого права суперпользователя требуются довольно часто.
Хотя я понимаю, почему это полезно в некоторой ситуации, которая tee
также отправляет свой вклад в STDOUT, я никогда не использовал эту часть tee
для чего-либо полезного. В большинстве случаев эта функция приводит к тому, что мой экран заполняется нежелательным дрожанием, если я не делаю дополнительный шаг и вручную отключаю его tee 1> /dev/null
.
Мой вопрос: есть ли команда arround, которая делает то же самое tee
, но по умолчанию ничего не выводит в STDOUT?
Another option that avoids piping the stuff back and then to /dev/zero
is
sudo command | sudo dd of=FILENAME
The dd
solution still prints junk to stdout:
$ 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
That can be avoided using the status
option:
command | sudo dd status=none of=FILENAME
Another interesting possibility (for Linux anyway):
command | sudo cp /dev/stdin FILENAME
To copy TTY input into a file, I often do this:
sudo cp /dev/tty FILENAME
It's too bad tee doesn't have an option to suppress stdout.
Вы могли бы использовать скрипт. Т.е. положить что-то подобное в ie $HOME/bin/stee
, 0tee
или аналогично:
#!/bin/bash argv= while [[ "$1" =~ ^- ]]; do argv+=" $1" shift done sudo tee $argv "$1" > /dev/null
#!/bin/bash sudo tee "$@" > /dev/null
Сделайте это выполнимым:
$ chmod 755 stee
Теперь сделайте то есть:
$ ls -la | stee -a / root / foo
Вы можете заключить всю команду в sudo, поэтому сама оболочка и перенаправления выполняются следующим образом root
:
sudo sh -c 'do_something > FILENAME'
Для этого не существует программы (это единственный случай, когда это будет полезно), но вы можете легко написать свою собственную. Если вы не хотите программировать, вы также можете написать простой скрипт, который делает то же самое: cat > $1
. Это отличается от помещения его в строку (как предложено опилками), потому что sudo будет применяться ко всему сценарию, включая перенаправление.
Я знаю, что уже слишком поздно, но что я делаю в таких случаях (когда нужен «плоский» стандартный вывод, но также и временный файл):
tee whatever | grep -v ""