Это основано на ответе, включающем tee
. Чтобы упростить задачу, я написал небольшой скрипт (я называю его suwrite
) и поместил его в /usr/local/bin/
с разрешением +x
:
#! /bin/sh
if [ $# = 0 ] ; then
echo "USAGE: <command writing to stdout> | suwrite [-a] <output file 1> ..." >&2
exit 1
fi
for arg in "$@" ; do
if [ ${arg#/dev/} != ${arg} ] ; then
echo "Found dangerous argument ‘$arg’. Will exit."
exit 2
fi
done
sudo tee "$@" > /dev/null
Как показано в ИСПОЛЬЗОВАНИИ в коде, все, что вам нужно сделать, - это передать выходные данные в этот скрипт, за которым следует желаемое доступное для суперпользователя имя файла, и оно при необходимости автоматически запросит ваш пароль (поскольку оно включает sudo
).
echo test | suwrite /root/test.txt
Обратите внимание, что, поскольку это простая оболочка для tee
, она также примет опцию -a
тройника для добавления, а также поддерживает запись в несколько файлов одновременно.
echo test2 | suwrite -a /root/test.txt
echo test-multi | suwrite /root/test-a.txt /root/test-b.txt
Он также имеет некоторую упрощенную защиту от записи на устройства /dev/
, о которой упоминалось в одном из комментариев на этой странице.