С момента публикации этого вопроса я узнал, что ex
- это POSIX-совместимая программа. Почти повсеместно она связана симлинком с vim
, но в любом случае, следующее (я думаю) является ключевым моментом в ex
по отношению к файловым системам (взято из спецификации POSIX):
В этом разделе используется термин edit buffer для описания текущего рабочего текста. Никакой конкретной реализации этот термин не подразумевает. Все изменения при редактировании выполняются в буфере редактирования, и никакие изменения в нем не влияют на какой-либо файл до тех пор, пока команда редактора не запишет этот файл.
"...влияет на любой файл...". Я полагаю, что размещение чего-либо в файловой системе (вообще, даже временного файла) будет считаться "влиянием на любой файл". Возможно? *
Внимательное изучение POSIX-спецификаций для ex
указывает на некоторые "загвоздки" в его предполагаемом переносном использовании по сравнению с обычными скриптовыми использованиями ex
, найденными в Интернете (которые переполнены vim
-специфическими командами).
+cmd
является необязательной согласно POSIX. -c
также не является обязательным. :g
"съедает" все до следующей новой строки без символов (и поэтому запускается после каждого найденного совпадения для regex, а не один раз в конце). Таким образом, -c 'g/regex/d | x'
удаляет только один экземпляр, а затем выходит из файла. Итак, согласно тому, что я исследовал, POSIX-совместимый метод редактирования файла на месте в полной файловой системе для удаления всех строк, соответствующих определенному regex, следующий:
ex -sc 'g/myregex/d
x' /path/to/file/filename
Это должно работать, если у вас достаточно памяти для загрузки файла в буфер.
* Если вы найдете что-нибудь, что указывает на обратное, пожалуйста, укажите это в комментариях.
Проблема заключалась в том, что Antergos не устанавливает gnome -power -менеджер как зависимость от GNOME, и в результате он отстает. Установка диспетчера gnome -power -устраняет эту проблему, и GNOME работает без сбоев при питании от батареи.