9

Я использую опцию -x в vim для шифрования файла. Я читаю эти файлы гораздо чаще, чем пишу, поэтому всегда использую cat, а затем вспоминаю, что он зашифрован из-за того, что он показывает .. Тогда я должен использовать vim, ввести пароль и затем выйти, используя :q ..

Есть ли способ использовать cat (или другую команду, конечно, где-нибудь передать мой пароль) и просто распечатать / получить содержимое? Или, может быть, есть только опция vim, которая только печатает содержимое без входа в редактор?

2 ответа2

5

Это не элегантное решение - оно быстрое и грязное - но оно работает с отдельными файлами, и вы можете использовать его как сценарий оболочки.

Это последовательность из трех команд, которые выполняют следующее:

  1. Открыть файл в vim (режим только для чтения): vim -R
  2. Сохраните файл в виде открытого текста и выйдите: -c ":set key= | sav ${filename}.plain | q
  3. Cat: обычный текстовый файл: cat ${filename}.plain
  4. (Необязательно) удалите текстовый файл: rm ${filename}.plain

В конце вы можете получить скрипт, который также передает пароль команде vim. Как простой скрипт это будет:

filename=$1
password=$2

vim -R -c ":set key= | sav ${filename}.plain | q" -- ${filename} <<< $password && cat ${filename}.plain && rm ${filename}.plain

где первый аргумент - это имя файла, а второй - пароль.

Конечно, есть несколько вещей, которые вы должны иметь в виду:

  • Убедитесь, что вы не перезаписываете существующие файлы с именем ${filename}.plain .
  • Пароль появится в командной строке и будет сохранен в истории. Если вы хотите каждый раз запрашивать пароль , удалите часть <<< $password .
3

Взгляните на vimdecrypt с открытым исходным кодом :

Инструмент командной строки для расшифровки файлов, зашифрованных vim-blowfish.

Начиная с версии 7.3, vim предлагает мощное встроенное шифрование / дешифрование blowfish, что для определенных целей более удобно, чем фильтрация через gnupg. К сожалению, полученные файлы могут быть прочитаны только vim, что затрудняет их использование в пакетной обработке или написании сценариев. Также долговечность зашифрованных данных является проблемой, если для разблокировки требуется программа с зависимостями и размером vim.

Vimdecrypt извлекает два соответствующих файла из исходного кода vim, blowfish.c и sha256.c, и связывает их с помощью простого инструмента командной строки. Данные читаются из файла, расшифрованные данные записываются на стандартный вывод.

vimdecrypt path_to_data

Пароль получен через GNU getpass, который не мешает перенаправлению stdin / stdout.

Система настройки Vim полностью удалена, что могло нарушить поддержку других платформ, кроме 32-разрядной версии i386, на которой она была разработана. Поскольку два соответствующих файла взяты из проекта vim без изменений, восстановление поддержки на других платформах должно быть тривиальным путем исправления заголовка vim.h.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .