С помощью ed
ed file << EOF
/cow/+2a
yay
.
,p
q
EOF
для печати измененного выход; или
ed file << EOF
/cow/+2a
yay
.
wq
EOF
или (как однострочник bash
)
printf '%b\n' '/cow/+2a' 'yay\n.' 'wq' | ed file
, чтобы записать изменения на месте.
Обычно вы увидите выполнение только после выхода из оболочки, если вы: я настроил это вручную. Но, возможно, один из установленных вами пакетов идет со сценарием оболочки выхода из bash ...
check;
~ / .bash_logout
, возможно, вы найдете оттуда вызов сценария, он странный ...
man bash
exit [n] [...] Прерывание EXIT выполняется до завершения работы оболочки .
Такие ловушки часто используются для очистки файлов tmp при выходе, см. https://stackoverflow.com/questions/687014/removing-created-temp-files- in-неожиданный-bash-exit
Определите такую ловушку выхода (для лучшего тестирования в новой оболочке):
$ bash
$ trap "rm filetodelete" EXIT
Показать определенную ловушку EXIT:
$ trap -p EXIT
trap -- 'rm filetodelete' EXIT
Тест:
$ exit
rm: cannot remove ‘filetodelete’: No such file or directory
Обратите внимание, что exit
тоже могут быть "вызваны" неявно. Таким образом, вместо exit
вы могли также активировать ловушку с помощью kill -HUP $$
.