Может ли bash (или терминал) автоматически завершаться (tab-complete) из содержимого буфера терминала?

Представьте, что у меня есть сеанс bash в терминале, только после некоторого вывода:

$ grep foo *.txt
this.txt: something123 foo
$

После этого grep, скажем, что моя следующая команда примет something123 в качестве аргумента.

Существуют ли какие-либо инструменты, которые позволят мне добавить / автоматически завершить something123 по подсказке? т.е. автозаполнение чтения из последнего буфера терминала?

В частности: я хочу иметь возможность печатать grep в приглашении несколько символов something123 а остальное something123 появляются, как если бы, например, something123 были имя файла в текущем рабочем каталоге.

Изменить: в настоящее время я использую терминал xfce4 (на Arch Linux), но я открыт для других!

2 ответа

Решение

Вы можете сделать это с помощью специального скрипта, но, насколько я знаю, это не встроенное поведение в любой системе - конечно, не с завершением табуляции.

См. http://tldp.org/LDP/abs/html/tabexpansion.html для получения инструкций о том, как самостоятельно написать что-то подобное. Предупреждение: подробное знание команд bash требуется, если вы решите заняться написанием этого самостоятельно, но, учитывая, что вы просто хотите выполнить определенный grep, я не думаю, что это будет так сложно.

Вы не говорите, какую систему вы используете...

iTerm2 в Mac OS X сделает это, используя Cmd+; Сочетание клавиш. Это не совсем похоже на завершение табуляции (вы должны выбрать из списка завершений GUI терминала, прежде чем оно отправит какие-либо нажатия клавиш в базовый процесс), но, тем не менее, оно экономит ваши нажатия клавиш. См. Http://www.iterm2.com/#/section/features/autocomplete.

Я был бы удивлен, если бы не было что-то подобное для Unix.

Такое поведение на самом деле проще всего реализовать непосредственно в Windows (процесс с консолью может получить доступ к своему буферу обратной прокрутки), но, несмотря на это, я никогда не видел, чтобы это было сделано.

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