Я использую gnu pass с автодополнением bash/zsh. Это означает, что когда я печатаю, pass a[TAB]
оболочка предлагает мне доступные пароли, начиная с a
.
У меня есть два каталога gnu-pass, когда я хочу использовать каталог не по умолчанию, мне нужно установить PASSWORD_STORE_DIR
. Чтобы получить автодополнение оболочки, мне нужно export PASSWORD_STORE_DIR=~/.password-store-non-default
и затем использовать pass как обычно.
Это неудобно, так как мне приходится часто переключаться между двумя каталогами.
Есть ли способ создать псевдоним или команду оболочки, которая установит эту переменную, предоставит дополнения, а затем вернет этой переменной ее исходное значение?
Например
alias otherpass=...
otherpass a[TAB]
Обеспечит завершение без установки другого PASSWORD_STORE_DIR
.
решение1
В Zsh вы можете просто привязать к нему сочетание клавиш, например так:
# Bind the command to Ctrl-P.
bindkey '^P' complete-password
# Create a completion widget for the command.
zle -C complete-password complete-word complete-password
# Create a function to implement the widget.
complete-password() {
export PASSWORD_STORE_DIR=~/.password-store-non-default
_main_complete $@
unset PASSWORD_STORE_DIR
}
Затем нажатие CtrlPвыполнит завершение с сохранением пароля, отличного от пароля по умолчанию. ( TabНажатие не требуется.)