Как команда выхода работает на терминале Unix?

С помощью 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

, чтобы записать изменения на месте.

14
26.10.2016, 11:22
2 ответа

Обычно вы увидите выполнение только после выхода из оболочки, если вы: я настроил это вручную. Но, возможно, один из установленных вами пакетов идет со сценарием оболочки выхода из bash ...

check;

~ / .bash_logout

, возможно, вы найдете оттуда вызов сценария, он странный ...

20
27.01.2020, 19:50

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 $$ .

25
27.01.2020, 19:50

Теги

Похожие вопросы