Трохи уточнити, чому варіант трійника є кращим
Якщо припустити, що у вас є відповідний дозвіл на виконання команди, яка створює вихід, якщо ви передаєте висновок вашої команди в tee, вам потрібно лише підняти privledges tee за допомогою sudo і прямо tee, щоб написати (або додати) до відповідного файлу.
у прикладі, наведеному у питанні, що означатиме:
ls -hal /root/ | sudo tee /root/test.out
ще кілька практичних прикладів:
# kill off one source of annoying advertisements
echo 127.0.0.1 ad.doubleclick.net | sudo tee -a /etc/hosts
# configure eth4 to come up on boot, set IP and netmask (centos 6.4)
echo -e "ONBOOT=\"YES\"\nIPADDR=10.42.84.168\nPREFIX=24" | sudo tee -a /etc/sysconfig/network-scripts/ifcfg-eth4
У кожному з цих прикладів ви берете висновок непривілейованої команди та записуєте у файл, який, як правило, записується лише коренем, що є джерелом вашого питання.
Це добре робити так, оскільки команда, яка генерує результат, не виконується з підвищеними правами. Це, мабуть, не має значення, echo
але коли команда-джерело - це сценарій, якому ви повністю не довіряєте, це дуже важливо.
Зауважте, що ви можете використовувати опцію -a tee, щоб додати додаток (як >>
) до цільового файлу, а не перезаписати його (як >
).