Приостановите и отредактируйте предыдущие однострочные команды

Тот ответ характерен для определенных эмуляторов терминала, я не думаю, что он может быть обобщен вне Соляриса.

В ksh нажмите Ctrl+V затем Конец. Это вставит литеральный символ ESC, сопровождаемый остальной частью escape-последовательности, которую отправляет ключ. Например, Вы могли бы видеть ^[[4~ ( ^[ вначале на самом деле символ ESC, нет ^ сопровождаемый [). Сделайте то же для других клавиш управления курсором, которые Вы хотите реконфигурировать.

В Вашем .kshrc, поставьте капкан KEYBD для перевода escape-последовательностей из функциональных клавиш в привязку для команд, которые Вы хотите, чтобы ключ вызвал. Например (Вы, возможно, должны корректироваться, escape-последовательности — отмечают ту внутреннюю часть $'…',\e' означает символ ESC):

keybd_trap () {
  case ${.sh.edchar} in
    $'\e[1~') .sh.edchar=$'\001';; # Home = beginning-of-line
    $'\e[4~') .sh.edchar=$'\005';; # End = end-of-line
    $'\e[5~') .sh.edchar=$'\e>';; # PgUp = history-previous
    $'\e[6~') .sh.edchar=$'\e<';; # PgDn = history-next
    $'\e[3~') .sh.edchar=$'\004';; # Delete = delete-char
  esac
}
trap keybd_trap KEYBD
set -o emacs

4
03.05.2013, 01:58
1 ответ

Что-то как

compile && { test -f /path/to/dont_run || run; }

должен решить Вашу проблему. touch /path/to/dont_run предотвратил бы run от того, чтобы быть выполняемым. Можно сделать это более сложным (и более удобный), например, определение функции оболочки cond_run_cmd, который делает некоторую проверку как этот, ограниченный ее tty (так, чтобы у Вас могли быть несколько параллельно), или что бы то ни было.

3
27.01.2020, 20:58

Теги

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