Может ли 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 (процесс с консолью может получить доступ к своему буферу обратной прокрутки), но, несмотря на это, я никогда не видел, чтобы это было сделано.