как отменить все действия программы, если пользователь оборвал ее исполнение

мне нужно сделать так, что бы при нажатии ctrl+c программа отменяла все изменения, которые сама и вносила. Например, вот часть программы, которая записывает в 1-ый указанный файл все остальные (при условии, что в списке может оказаться и он сам) через временный файл в /tmp.

   f1="$1"
   shift
   f2=mktemp
       cat "${@}" >> $f2 
       mv $f2 $f1
   trap kill "$$" 2

Но эта программа не удаляет временный файл. Как его удалить?

PS да, есть команда cut, но при попадании f1 в списке для копирования в f1, программа запускает вечный двигатель, это не подходит.


Ответы (0 шт):