Я нахожусь на centos, и я сделал sudo echo 'testline'>>/etc/test/test он сказал -bash: /etc/test/test: Permission denied
sudo echo 'testline'>>/etc/test/test
-bash: /etc/test/test: Permission denied
Однако, когда я делаю sudo vi /etc/test/test и вставляю testline и делаю :wq, выписывается нормально, почему этопроисходит?
sudo vi /etc/test/test
testline
:wq
Перенаправление обрабатывается оболочкой до запуска sudo, а не является ее частью.Вместо этого используйте tee, чтобы sudo запускал процесс, который фактически открывает файл для записи.
sudo
tee
echo 'testline' | sudo tee -a /etc/test/test > /dev/null
Другой синтаксис для того же общего решения, которое эти парни уже представили:
echo "echo 'testline'>>/etc/test/test" | sudo su
Вам нужно заключить весь оператор (включая перенаправление) в группу, чтобы sudo распространялось вокруг него.
sudo bash -c "echo 'testline' >> /etc/test/test"
Примечание: это тоже не удастся, если /etc/test еще не существует.
/etc/test