Как предотвратить выполнение команды, отредактированное с помощью fc

У меня FCEDIT установлен vim. Если я назову команду fc, она откроет vim с временным файлом, и содержимое этого файла будет последней выполненной командой из истории.

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

$ printf "\nHelloAskubuntu\n\n"

HelloAskubuntu

$ fc # opens vim, I do :q!
printf "\nHelloAskubuntu\n\n"

HelloAskubuntu

Как этого избежать?

1
задан 19 July 2016 в 03:55

1 ответ

Это происходит потому, что содержимое уже сохранено во временном файле /tmp/bash-fc-*.

Рабочий подход, который я мог бы проверить в Ubuntu 16.04.

Создать прокси-команду (новый редактор)
sudo vim /usr/local/bin/vim2
Сделайте его открытым в файле vim, затем выпустите его на диск. Таким образом, содержимое находится только в vim, если вы его не сохранили, fc ничего не выполнит
#!/bin/sh

sh -c "sleep 1; echo -n ''>$1" &
vim $1
Fix permission
sudo chmod +x /usr/local/bin/vim2
Установите FCEDIT на vim2 или временно проверите export FCEDIT=vim2

Единственная надежда состоит в том, что вы не быстрее меня, чтобы закрыть vim до 1 секунды.

0
ответ дан 23 May 2018 в 08:00

Другие вопросы по тегам:

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