Якщо ви виражаєте свою команду без одинарних лапок, ви можете помістити її всередині одиничних лапок і виконати це через проміжну оболонку.
Щоб виконати це як 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
)