Jeśli wyrazisz swoje polecenie bez pojedynczych cudzysłowów, możesz umieścić je w pojedynczych cudzysłowach i wykonać je za pomocą powłoki pośredniej.
Aby wykonać to jako root:
echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock
Napisz polecenie w inny sposób, który nie używa '
:
echo clock_hctosys=\"YES\" >> /etc/conf.d/hwclock
Następnie wywołaj sudo sh -c …
:
sudo sh -c 'echo clock_hctosys=\"YES\" >> /etc/conf.d/hwclock'
Alternatywnie, aby zapisać dane wyjściowe w pliku, do którego tylko root może zapisywać, wywołaj sudo tee
. Przekaż -a
opcję tee
dołączania do pliku docelowego, w przeciwnym razie plik zostanie obcięty.
echo 'clock_hctosys="YES"' | sudo tee -a /etc/conf.d/hwclock >/dev/null
W przypadku bardziej skomplikowanych modyfikacji plików, można zadzwonić sudo sed
, sudo ed
, sudo perl
, ...
Alternatywnie, użyj porządnego edytora i spraw, aby zadzwonił do sudo. W Emacs otwórz /sudo:/etc/conf.d/hwclock
. W Vimie wywołaj, :w !sudo tee %
aby zapisać do otwartego pliku jako root, lub użyj wtyczki sudo.vim . Lub przejdź od końca sudo i zadzwoń sudoedit /etc/conf.d/hwclock
.
Lub możesz poddać się ciemnej stronie i uruchomić powłokę jako root.
$ sudo -i
# echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock
tee
polecenia działają jako root, a nie główne polecenie, które może być złożone i podatne na niewłaściwe zachowanie. (nie przypadekecho
)