Якщо ви виражаєте свою команду без одинарних лапок, ви можете помістити її всередині одиничних лапок і виконати це через проміжну оболонку.
Щоб виконати це як root:
echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock
Напишіть команду іншим способом, який не використовується ':
echo clock_hctosys=\"YES\" >> /etc/conf.d/hwclock
Потім виклик sudo sh -c …:
sudo sh -c 'echo clock_hctosys=\"YES\" >> /etc/conf.d/hwclock'
Крім того, щоб записати вихід у файл, до якого може писати тільки root, зателефонуйте sudo tee. Перейдіть до -aопції для teeдодавання до цільового файлу, інакше файл буде усічений.
echo 'clock_hctosys="YES"' | sudo tee -a /etc/conf.d/hwclock >/dev/null
Для більш складних модифікацій файлів, ви можете зателефонувати sudo sed, sudo ed, sudo perl, ...
Крім того, використовуйте гідний редактор і змусьте його називати судо. У Emacs відкрийте /sudo:/etc/conf.d/hwclock. У Vim зателефонуйте, :w !sudo tee %щоб записати у відкритий файл як root, або використовуйте плагін sudo.vim . Або піти з кінця судо і подзвонити sudoedit /etc/conf.d/hwclock.
Або ви можете поступитися темною стороною і запустити оболонку як корінь.
$ sudo -i
# echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock
teeякості кореня виконуються лише команди, а не головна команда, яка може бути складною і схильною до неправильної поведінки. (не справаecho)