Завершение zsh для пользовательского скрипта

Перенаправление ввода (как вcat < file)означает, что оболочка открывает входной файл и записывает его содержимое в стандартный ввод другого процесса. Невозможно просто поставить команду после <.

Но вы можете использовать Подстановку процесса для создания дескриптора файла из вывода команды, используя следующий синтаксис:

<(some_command)

Это похоже на использование вывода команды как переменной с использованием $(some_command).


Попробуйте это:

readarray -t FileArray < <(tac "$PWD$DEBUG_DIR$DEBUG_MENU")

3
26.12.2020, 06:45
1 ответ

Если предположить, что все упомянутые вами варианты взаимоисключающие друг друга, то решение выглядит следующим образом:

#compdef pass

_pass() {
  local -a args=(
      # (-) makes the option mutually exclusive with all other options. 
      '(-)--insert[Create a new password entry]'
      '(-)--edit[Edit a password entry]'
      '(-)--rm[Delete a password entry]'
      '(-)-P:string:'
      '1:password entry:->directory'
  )

  _arguments $args

  case $state in
    directory)
      _path_files -W $HOME/passwords -g '*(/)' -S /
      _path_files -W $HOME/passwords -g '*.gpg(:r)' -S ' '
      ;;
  esac
}

Документация здесь:http://zsh.sourceforge.net/Doc/Release/Completion-System.html#index-_005farguments

3
18.03.2021, 22:40

Теги

Похожие вопросы