Используйте tee --append
или tee -a
.
echo 'deb blah ... blah' | sudo tee -a /etc/apt/sources.list
Удостоверяются, что избежали кавычек в кавычках.
, Чтобы постараться не печатать данные назад к консоли, перенаправьте вывод к/dev/null.
echo 'deb blah ... blah' | sudo tee -a /etc/apt/sources.list > /dev/null
Помнят о (-a
/ --append
) флаг! Всего tee
работы как >
и перезапишет Ваш файл. tee -a
работы как >>
и запишет в конце файла.
sudo sh -c "echo 127.0.0.1 localhost >> /etc/hosts"
Выполнение
sudo sh -c "echo >> somefile"
должно работать. Проблема состоит в том, что> и>> обрабатываются Вашей оболочкой, не командой "sudoed", таким образом, полномочия являются Вашими, не те пользователя Вы - "sudoing" в.
Проблема - то, что именно Ваша оболочка обрабатывает перенаправление; это пытается открыть файл с Ваш полномочия не те из процесса, который Вы выполняете под sudo.
Использование что-то вроде этого, возможно:
sudo sh -c "echo 'something' >> /etc/privilegedFile"
Проблема состоит в том, что оболочка делает перенаправление вывода, не sudo или эхо, таким образом, это делается как Ваш обычный пользователь.
Попытка следующий фрагмент кода:
sudo sh -c "echo 'something' >> /etc/privilegedfile"
Как насчет:
текст эха | sudo dd status=none of=privilegedfile
я хочу изменить/proc/sys/net/ipv4/tcp_rmem.
я сделал:
sudo dd status=none =/proc/sys/net/ipv4/tcp_rmem < < < "4096 131072 1024000"
устраняет эхо с однострочным документом