Как сделать пользовательскую функцию BASH для записи в определенный каталог с автозаполнением - PullRequest
3 голосов
/ 27 декабря 2011

У меня есть проекты в схеме именования ~/Documents/EP_example_project.Все они живут под ~/Documents.

. Я хотел бы создать bash-функцию, которая позволяет мне записываться в каталог проекта с любого места, где я нахожусь;с автозаполнением.Вот так:

cdp E<tab>
# ... EAP_example_additional_project EP_example_project
P<tab>
# prompt now says:
cdp EP_example_project<enter>
# ... And I am in the project-directory.

Это было бы немного проще, чем набирать cd ~/Do<tab>EP<tab> каждый раз.

Я знаю основы создания простой функции, но не могу найти, как добавить к ней автозаполнение табуляции.

ПРИМЕЧАНИЕ: рассуждения, приведенные выше, не имеют большого смысла: дополнительные ~ / Doне , что много накладных расходов, это дополнительные вещи, которые я могу сделать в такой функции, как напечатать содержимое определенного файла, если он найден (.birdseye), перечислить содержимое проектов, даты последнего доступа и т. д., что делает это более интересным в будущем.

Ответы [ 4 ]

1 голос
/ 27 декабря 2011

Вы могли бы рассмотреть CDPATH.Вы можете export CDPATH=~/Documents добавить все каталоги в ~ / Documents для автодополнения.Вы можете иметь функцию или псевдоним для этой команды экспорта и установить & unset CDPATH как и когда вам нужно.
Надеюсь, это поможет!

1 голос
/ 27 декабря 2011

Bash имеет встроенную поддержку того, что вы просите

  CDPATH The search path for the cd command.  This is  a  colon-separated
         list  of  directories  in  which the shell looks for destination
         directories specified by the cd  command.   A  sample  value  is
         ".:~:/usr".

Добавьте путь к переменной CDPATH, и команда cd будет автоматически искать содержимое этой переменной при каждой попытке изменить каталог независимо от текущего пути.

0 голосов
/ 27 декабря 2011

Посмотрите примеры в /etc/bash_completion.d Возможно, вы пытаетесь сделать.

0 голосов
/ 27 декабря 2011

Если у автозаполнения есть только одна опция, вы можете использовать * внутри скрипта, где вы бы использовали tab в командной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...