![Терминал зависает, пока я использую `$ pass insert [..]`](https://rvso.com/image/1618496/%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%20%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B0%D0%B5%D1%82%2C%20%D0%BF%D0%BE%D0%BA%D0%B0%20%D1%8F%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8E%20%60%24%20pass%20insert%20%5B..%5D%60.png)
Этот пост о утилите pass
. У меня она работает хорошо, за исключением случаев, когда я пытался использовать
$ pass insert Email/gmail/myname
Мой терминал выдает приглашение
Enter password for Email/gmail/myname: _
и зависает, пока никакие нажатия клавиш не влияют на него, кроме Ctrl-C
остановки программы. Достаточно интересно, что программа создала каталоги ~/.local/share/password-store/Email/gmail/
. У кого-нибудь была такая же проблема раньше?
(Я использую pass
v1.7.3 на Arch.)
решение1
При интерактивной вставке enter
клавиша указывает на то, что вы завершили ввод пароля:
$ pass insert test
Enter password for test: [keystrokes: asdf<enter>]
Retype password for test: [keystrokes: asdf<enter>]
$ pass test
adsf
Кроме того, с помощью --echo
или -e
можно принимать входные данные через stdin из канала.
Например, я делаю запись testo
с паролем hello world
:
$ echo "hello world" | pass insert --echo testo
[main b451b23] Add given password for testo to store.
1 file changed, 1 insertion(+)
create mode 100644 testo.gpg
$ pass testo
hello world
Но это работает только для отдельных строк. Для многострочного ввода используйте флаг --multiline
вместо --echo
.
$ man pass
$ echo "password123" > passfile.txt
$ echo "Email: [email protected]" >> passfile.txt
$ cat passfile.txt | pass insert --multiline test
Enter contents of test and press Ctrl+D when finished:
[main e1acd8e] Add given password for test to store.
1 file changed, 1 insertion(+)
create mode 100644 test.gpg
$ pass test
password123
Email: [email protected]
В документации на странице руководства не упоминается нажатие enter
для прекращения ввода, возможно, я отправлю письмо по электронной почтесписок рассылки разработчиковоб этом. Вот текущая информация man pass
:
insert [ --echo, -e | --multiline, -m ] [ --force, -f ] pass-name
Insert a new password into the password store called pass-name. This will read the new password from standard in. If --echo or -e is not
specified, disable keyboard echo when the password is entered and confirm the password by asking for it twice. If --multiline or -m is spec‐
ified, lines will be read until EOF or Ctrl+D is reached. Otherwise, only a single line from standard in is read. Prompt before overwriting
an existing password, unless --force or -f is specified. This command is alternatively named add.