Я использую Sed для поиска и замены строки в файле. Это первый раз, когда я работаю с ним, так что, возможно, я делаю это неправильно,
У меня есть файл «test.properties», принадлежащий «root», и я хочу заменить «world» на «cat».
Итак, я запускаю эту команду:
sudo sed s/world/cat/ <test.properties >newtest.properties
И он отлично работает, но когда я хочу записать в ОДИН файл вот так:
sudo sed s/world/cat/ <test.properties >test.properties
Там написано «-bash: test.properties: Permission denied», но я использую «sudo», так почему это отклонено?
sudo sed -i s/world/cat/ test.properties
Не запускайте команду, которую вы пытаетесь запустить
Если вы попытаетесь перенаправить вывод sed обратно в тот же файл, он очистит его, удалив все содержимое файлов. Попробуйте что-то вроде этого:
sed s/world/cat/ <test.properties >newtest.properties && sudo mv newtest.properties test.properties
Вы получаете отказ в разрешении, потому что часть команды перенаправления не запускается через sudo, а запускается от имени обычного пользователя.
Первая команда работает, потому что вы просто читаете первый файл и записываете в файл, которым владеете, поэтому обычный пользователь может это сделать.