Какая-либо оболочка может сделать уровень аргумента интерактивный поиск?

Я предпочел бы использовать 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 к размеру Вашего открытого ключа.

6
21.01.2013, 02:40
5 ответов

Если я понимаю правильно, Вы после динамической полной истории (см., например. man bash или http://www.cl.cam.ac.uk/local/sys/unix/applications/bash/), по умолчанию связанный с M-Tab.

2
27.01.2020, 20:30
  • 1
    Их tokenizehist пример там смотрит близко к тому, что искал OP. –  joeytwiddle 24.07.2015, 18:37

В zsh, с модернизированным активным завершением (т.е. с compinit в Вашем .zshrc), _history_complete_word функция обеспечивает эту функцию. Это доступно через два виджета: _history-complete-older и _history-complete-newer, связанный с ESC , и ESC / по умолчанию. Эти две команды циклически повторяются через все слова в истории оболочки, которые имеют текущее слово как префикс.

1
27.01.2020, 20:30
  • 1
    Это близко, но это все еще требует префикса. –  user716468 23.02.2013, 01:26

В 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 хрупко, в том, например, это работало непредсказуемо в сценариях (но там я очень буду убеждаться трижды, я выполняю правильную команду, так...).

0
27.01.2020, 20:30

Поиграйте с 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.
0
27.01.2020, 20:30

Мой плагинzsh-autocompleteтеперь может это делать:

enter image description here

Как видите, после нажатия ^Rможно ввести любую часть слова, которое вы ищете.

0
02.11.2021, 19:43

Теги

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