bash-complete-partial-path - предлагает расширенную обработку завершения пути в Bash, добавляя удобное развертывание неполных вариантов представления, как это работает в
Zsh
, без установки последнего.Вот как это работает.
Когда нажата клавиша Tab,
bash-complete-partial-path
предполагает, что каждый компонент является неполным и пытается его расширить. Предположим, вы хотите перейти к /usr/share/applications
. Вы можете ввести cd /u/s/app
, нажать Tab, а bash-complete-partial-path
- развернет его в правильный cd /usr/share/applications
. Если есть множественные вхождения поддиректорий, то при нажатии Tab заканчивается только путь без конфликтов. Например, у нас есть несколько директорий в /usr/share
, которые начинаются с app
, поэтому в случае ввода cd /u/s/app
будет развернута только часть с /usr/share/
.По ссылке - наглядная демонстрация возможностей: https://asciinema.org/a/191776
еще один пример более глубокого расширения пути к файлу. Введите
cd /u/s/f/t/u
, нажмите Tab
, и путь будет развернут до cd /usr/share/fonts/truetype/ubuntu
Особенности:
- Экранирование специальных символов
- Если пользователь запускает путь с кавычками, экранирование символов не применяется, кавычка закрывается соответствующим символом после раскрытия пути
- Корректное расширение
~
- Если пакет
bash-completion
уже используется, этот код безопасно переопределит его функцию _filedir. Никакой дополнительной конфигурации не требуется
1. Скопировать актуальную версию расширения в
~/.config
Код: Выделить всё
# Install or update bash-complete-partial-path
mkdir -p "$HOME/.config/bash-complete-partial-path/" && \
curl \
-o "$HOME/.config/bash-complete-partial-path/bash_completion" \
"https://raw.githubusercontent.com/sio/bash-complete-partial-path/master/bash_completion"
~/.bashrc
Код: Выделить всё
# Enhanced file path completion in bash - https://github.com/sio/bash-complete-partial-path
[ -s "$HOME/.config/bash-complete-partial-path/bash_completion" ] && \
source "$HOME/.config/bash-complete-partial-path/bash_completion"
Код: Выделить всё
source ~/.bashrc