Как сделать удобный ввод пути до файла в своем Bash скрипте?

Здравствуйте, есть Bash скрипт в котором в определенный момент требуется ввести полный путь до файла, все работает но не так как хотелось бы, приходится копировать полный путь и вставлять в ввод команды а хотелось бы чтобы это работало как во встроенных командах, где по нажатию Tab строка сама дополняется, по двойному нажатию выводится список доступных файлов и директорий.
Например как в dd:
6309dac018b8c985220736.pngдва раза нажал на Tab и мне вывело список доступных директорий, можно ли реализовать это в скрипте?
  • Вопрос задан
  • 642 просмотра
Пригласить эксперта
Ответы на вопрос 2
martin74ua
@martin74ua Куратор тега Linux
Linux administrator
Подстановкой по TAB занимается не ваш скрипт, это делает bash. А если быть совсем точным - bash-completion. В нем описаны для разных программ допустимые аргументы и варианты подстановок. Вам стоит разобраться в правилах написания bash-completion расширения под ваш скрипт и распространять скрипт вместе с этим расширением.
Ответ написан
Комментировать
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
добавить свой путь в PATH
зы пропиши в башрс пару строк
ифы лишеие выкини, я просто скопировал кусок целиком
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; 
	then . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ];
	then . /etc/bash_completion
  fi
fi

if [ -x /usr/games/fortune ];
then fortune ru |lolcat -F 0.7 ;
fi

##  сперва будет искать man на русском, а если его нет, то на английском.
export MANOPT="-L ru"

## По умолчанию, каждый экземпляр bash переписывает историю. То есть, если вы запустите два терминала, что-то в них сделаете, а потом закроете, то история сохранится только от последнего закрытого. (Она затрёт историю первого закрытого.) Это очень неудобно и легко исправляется вот такой командой:
shopt -s histappend

##[ -f ~/.fzf.bash ] && . ~/.fzf.bash


if [ -s ~/.Xmodmap ];
then xmodmap ~/.Xmodmap
fi

## для Wine
export MESA_GL_VERSION_OVERRIDE=4.5
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы