Если вы выражаете свою команду без одинарных кавычек, вы можете поместить ее в одинарные кавычки и выполнить ее через промежуточную оболочку.
Чтобы выполнить это как 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
, ...
В качестве альтернативы, используйте приличный редактор и заставьте его называть sudo В Emacs, откройте /sudo:/etc/conf.d/hwclock
. В Vim вызовите :w !sudo tee %
запись в открытый файл от имени пользователя root или используйте плагин sudo.vim . Или иди с конца sudo и позвони sudoedit /etc/conf.d/hwclock
.
Или вы можете уступить темной стороне и запустить оболочку от имени root.
$ sudo -i
# echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock
tee
команды запускаются от имени root, а не основная команда, которая может быть сложной и склонной к неправильному поведению. (не случайecho
)