Используйте sponge из пакета moreutils. Его преимущество в том, что он не записывает в стандартный вывод.
echo test | sudo sponge /tmp/foo
Используйте параметр -a для добавления к файлу вместо его перезаписи.
su -s /bin/bash -c "/usr/bin/echo -n foo" -g apache apache
-s /bin/bash
переопределяет nologin и позволяет интерпретировать значение опции -c
-c "/usr/bin/echo -n foo"
позволяет избежать использования первого аргумента, начинающегося с тире Если оболочка входа пользователя установлена на /sbin/nologin
, то пользователь не может войти в систему, и su -
, как правило, не будет работать.
Но есть опция su -m
для сохранения среды текущего пользователя и оболочки входа в систему:
su -m <user> -c "<command>"
Например:
su -m apache -c "echo hello; id"
Печать:
hello
uid=33(apache) gid=33(apache) groups=33(apache)