Назад | Перейти на главную страницу

В разрешении отказано при использовании Sed

Я использую 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, а запускается от имени обычного пользователя.

Первая команда работает, потому что вы просто читаете первый файл и записываете в файл, которым владеете, поэтому обычный пользователь может это сделать.