Мне нужно было получить отпечаток ключа ssh, используя:
$ ssh-keygen -lf ~/.ssh/id_rsa_user.pub
после ввода:ssh-keygen -lf ~/.ss
TAB Это не давало никаких вариантов.
Я должен был сделать:
$ compdef _files ssh-keygen
После этого мне стало доступно автозаполнение с использованием пути к файлам, но автозаполнение команды перестало работать, поэтому, если я наберу ssh-keygen -
Tab, я больше не увижу этот вывод:
$ ssh-keygen -
-- option --
-B -- show the bubblebabble digest of key
-C -- provide new comment
-D -- download key stored in smartcard reader
-N -- provide new passphrase
-P -- provide old passphrase
-U -- upload key to smartcard reader
-b -- specify number of bits in key
-c -- change comment in private and public key files
-e -- export key to SECSH file format
-f -- key file
-i -- import key to OpenSSH format
-l -- show fingerprint of key file
-p -- change passphrase of private key file
-q -- silence ssh-keygen
-t -- specify the type of the key to create
-y -- get public key from private key
Поэтому интересно, есть ли способ включить обе опции, чтобы я мог сделать что-то вроде:
ssh-keyg
TAB, который даст мне:
$ ssh-keygen
Тогда я могу сделать
$ ssh-keygen -
TAB
Это распечатало бы меню опций и было доступно для выполнения:
$ ssh-keygen -lf ~/.ss
TAB
И есть список вариантов, которые могут работать, поэтому в конце я получу что-то вроде:
$ ssh-keygen -lf ~/.ssh/id_rsa_user.pub
А пока я просто добавляю к своему ~/.zshrc
это:
compdef _files ssh-keygen
compdef _files adb
compdef _files mysql
...
Но я должен сделать это для каждой команды. Я хочу использовать завершение _files, поэтому я хотел бы знать, есть ли способ всегда использовать _files
или аварийное переключение на него.
Есть идеи?
Можно ли заставить его вести себя как csh
, где нажатие Ctrl+d показывает параметры файлов?
Обновление:
Я заметил, что если последним аргументом является -f
, автозаполнение работает:
ssh-keygen -l -f ~/.ssh
TAB
Но для пользовательских скриптов, команд, какая функция, псевдоним виджета может помочь принудительно завершить _files
.?