Я предпочел бы использовать openssl
утилита, поскольку это, кажется, довольно повсеместно.
Преобразуйте открытый ключ RSA и закрытый ключ к формату PEM:
$ openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem
$ openssl rsa -in ~/.ssh/id_rsa -pubout -outform pem > id_rsa.pub.pem
Шифрование файла с открытым ключом:
$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc
Дешифрование файла с закрытым ключом:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt
Но, как Gilles прокомментировал выше этого, только подходит для шифрования файлов, меньших, чем Ваш открытый ключ, таким образом, Вы могли сделать что-то вроде этого:
Генерируйте пароль, зашифруйте файл с ним симметрично и зашифруйте пароль со своей общественностью, ключ, сохраняющий его в файл:
$ openssl rand 64 |
tee >(openssl enc -aes-256-cbc -pass stdin -in file.txt -out file.enc) |
openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -out file.enc.key
Дешифруйте пароль со своим закрытым ключом и используйте его для дешифрования файла:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc.key |
openssl enc -aes-256-cbc -pass stdin -d -in file.enc -out file.txt
Вы закончите с двумя файлами, Вашим зашифрованным файлом и Вашим зашифрованным паролем, но поместите в сценарий, он работал бы приятно.
Вы могли даже добавить a tar cvf file file.enc file.enc.key
убраться.
Оптимально, Вы максимизировали бы размер своего пароля, также изменяющегося rand 64
к размеру Вашего открытого ключа.
Если я понимаю правильно, Вы после динамической полной истории (см., например. man bash
или http://www.cl.cam.ac.uk/local/sys/unix/applications/bash/), по умолчанию связанный с M-Tab
.
В zsh, с модернизированным активным завершением (т.е. с compinit
в Вашем .zshrc
), _history_complete_word
функция обеспечивает эту функцию. Это доступно через два виджета: _history-complete-older
и _history-complete-newer
, связанный с ESC ,
и ESC /
по умолчанию. Эти две команды циклически повторяются через все слова в истории оболочки, которые имеют текущее слово как префикс.
В bash(1)
(это прибывает первоначально из оболочки C), можно повторить предыдущее использование команд !
(как долго, как они находятся в истории). Так, например:
enter code here
frob --vigorous extremely/super/cali/fragi/listic/file/name
...
...
xemacs !frob:$ # Edit last argument to last frob command
!frob # Repeat last frobbing
fiddle !frob:1-$ # Fiddle, use arguments 1 to last of !frob
Синтаксис берет некоторых привыкающих к, и (из-за роскоши readline) я редко использую его, но это довольно удобно. Это (или используется, чтобы быть) somehwat хрупко, в том, например, это работало непредсказуемо в сценариях (но там я очень буду убеждаться трижды, я выполняю правильную команду, так...).
Поиграйте с ALT-. из manpage bash:
- yank-last-arg (M-., M-_):
Insert the last argument to the previous command (the last word of
the previous history entry). With an argument, behave exactly like
yank-nth-arg. Successive calls to yank-last-arg move back through the
history list, inserting the last argument of each line in turn. The
history expansion facilities are used to extract the last argument,
as if the "!$" history expansion had been specified.
Мой zshплагинzsh-autocomplete
теперь может это делать:
Как видите, после нажатия ^R
можно ввести любую часть слова, которое вы ищете.
tokenizehist
пример там смотрит близко к тому, что искал OP. – joeytwiddle 24.07.2015, 18:37