Я пытаюсь определить пользовательское поведение функции backward-kill-word в bash xterm.
Для этого мне нужно перехватить командную строку перед ее проверкой.
Например, если я sdcds/edfdD sdf/sdf
без ввода enter, я хочу с помощью ярлыка, такого как esc + backspace
перехватить строку sdcds/edfdD sdf/sdf
во временной переменной, чтобы применить sed после.
Я уже написал команды sed и bind, но нигде не могу найти, как перехватить командную строку buffer
.
Обновление от ответа
Хорошо, большое спасибо, я думаю, что я не достаточно ясно в моем объяснении. Я хочу создать функцию и связанный ключ связывания в bash.rc, чтобы изменить текст в командной строке. Представьте себе, я хочу определить функцию, которая удаляет командную строку (до ввода enter), например, до "/" и только до /, я мог бы написать в моем .bash.rc:
function backward-delete-to-slash () { echo $BUFFER_COMMAND_LINE | sed 's:\(.*[/][/]*).*:\1:';}
bind -x '"\e\d": backward-delete-to-slash'
Моя проблема состоит в том, чтобы перехватить командную строку в переменной $BUFFER_COMMAND_LINE
.
Если бы у меня была эта переменная, я мог бы сделать, например:
$: sdffs/dsfd dsfsdf/dfdsf (without typing enter)
Esc + Backspace
$: sdffs/dsfd dsfsdf/
Поэтому я надеюсь быть более исчерпывающим.