Автозаполнение аргументов командной строки
В bash исполняемые файлы, такие как mplayer и imagemagick "convert", имеют классную функцию автозаполнения в своих аргументах командной строки. Например, если я набираю
mplayer <tab><tab>
в одной из моих папок, тогда mplayer перечислит все медиафайлы, расположенные в этой папке, и только файлы мультимедиа.
Аналогично, если я набираю
convert -<tab><tab>
то я увижу все возможные варианты преобразования script, что отлично.
Мой вопрос заключается в том, как достичь аналогичной функциональности, используя скрипты bash, ruby или python?
Ответы
Ответ 1
Это пример умного завершения BASH. Основное описание здесь, руководство по написанию собственных расширений здесь и другое (на основе Debian) руководство здесь. И здесь более полное описание для команды complete
(команда, которая облегчает это поведение).
Ответ 2
Эта функциональность в bash предоставляется bash-completion, и аналогичная функциональность включена в zsh. Если вы хотите добавить поддержку какой-либо программы, которая в настоящее время не поддерживается одним из этих инструментов, вам нужно написать свои собственные расширения для них.