Тот ответ характерен для определенных эмуляторов терминала, я не думаю, что он может быть обобщен вне Соляриса.
В 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
Что-то как
compile && { test -f /path/to/dont_run || run; }
должен решить Вашу проблему. touch /path/to/dont_run
предотвратил бы run
от того, чтобы быть выполняемым. Можно сделать это более сложным (и более удобный), например, определение функции оболочки cond_run_cmd, который делает некоторую проверку как этот, ограниченный ее tty (так, чтобы у Вас могли быть несколько параллельно), или что бы то ни было.