У меня есть веб-проекты в /var/www/projects/some/long/path/strange-project-name
Теперь я хочу ввести терминал:
webs str{TAB}
Он должен автоматически заполняться до webs strange-project-name
(на основании ls /var/www/projects/some/long/path/
) и после выполнения команды pwd
должен указывать на путь к проекту. Вид умный cd strange-project-name
с автозаполнением
Как бы вы реализовали эту функцию? Какой-то умный псевдоним? Функция в .bashrc
? Сценарий?
Какой-то умный псевдоним?
Вам понадобится двухчастный. Один, сценарий завершения:
_webs() {
local cur prev projdir=/var/www/projects/some/long/path
COMPREPLY=()
cur=$(_get_cword)
prev=${COMP_WORDS[COMP_CWORD-1]}
COMPREPLY=( $( compgen -W '$( command ls "$projdir/$cur*" | sed "s|$projdir/||")' -- '' ) )
}
complete -F _webs webs
_get_cword
зависит от устанавливаемого пакета bash-completions. Если у вас его нет, измените строку:
cur=$(_get_cword)
кому:
cur=${COMP_WORDS[$COMP_CWORD]}
Два, функция:
webs () {
local projdir=/var/www/projects/some/long/path
cd "$projdir"
do_something_ "$@"
}
Я не уверен, что это то, что вам нужно ...
в терминале ...
sudo vim /etc/inputrc
найдите эти строки и раскомментируйте их:
# alternate mappings for “page up” and “page down” to search the history
#”\e[5~”: history-search-backward
#”\e[6~”: history-search-forward
теперь вы можете автоматически заполнять команды из своей истории со страницей вверх / вниз
Для этого я бы создал собственный скрипт автозаполнения bash. Взгляни на /etc/bash_completion.d
справочник и его многочисленные примеры. Затем создайте файл с именем webs
в этот каталог и адаптируйте его под свои нужды.
Поправьте меня, если я ошибаюсь, но я думаю, что это именно то, что Молнии был создан для. Это проект Ruby, поэтому это не лучший ответ, если использование Bash само по себе является целью.