Как я могу сохранить файл в памяти во время редактирования?

Ответ Джо требует нескольких изменений, чтобы он работал.

Во-первых, это должен быть $ _product, а не $ product, а во-вторых, в последней строке есть ошибочный ')'.

Следующий код должен быть правильным:

$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load(

Ответ Джо требует нескольких изменений, чтобы он работал.

Во-первых, это должен быть $ _product, а не $ product, а во-вторых, в последней строке есть ошибочный ')'.

Следующий код должен быть правильным:

[110]product->getAttributeSetId()); $attributeSetName = $attributeSetModel->getAttributeSetName();
6
задан Paul Tarjan 1 February 2017 в 21:02
поделиться

7 ответов

Вы могли бы просто использовать vim, чтобы зашифровать его.

Перед тем, как сохранить файл в vim, отфильтруйте содержимое через шифровальщик gpg:

    :{range}![!]{filter} [!][arg]               *:range!*
          Filter {range} lines through the external program
          {filter}.  Vim replaces the optional bangs with the
          latest given command and appends the optional [arg].
          Vim saves the output of the filter command in a
          temporary file and then reads the file into the
          buffer.  Vim uses the 'shellredir' option to redirect
          the filter output to the temporary file.
          However, if the 'shelltemp' option is off then pipes
          are used when possible (on Unix).
          When the 'R' flag is included in 'cpoptions' marks in
          the filtered lines are deleted, unless the
          |:keepmarks| command is used.  Example: >
            :keepmarks '<,'>!sort
    <            
          When the number of lines after filtering is less than
          before, marks in the missing lines are deleted anyway.
        w 

Итак, если вы хотите отфильтровать его через gpg (я предполагаю здесь флаги):

:%!gpg -q -d -p $password
:w $filename

Вам понадобится чтобы экспортировать переменные среды $ password и $ filename , чтобы vim имеет к ним доступ, если вы хотите использовать их в vim.

5
ответ дан 8 December 2019 в 12:22
поделиться

Имейте в виду, что по умолчанию Vim создает файл подкачки на диске. Чтобы избежать этого, запустите vim с помощью следующей команды:

vim "+set noswapfile"
7
ответ дан 8 December 2019 в 12:22
поделиться

Вы можете смонтировать файловую систему tmpfs (которая хранит данные в памяти) и выполнять там свою работу

РЕДАКТИРОВАТЬ (!): Извините, сделайте это ramfs. Разница в том, что tmpfs можно выгружать для подкачки пространства, что вам не нужно. Кроме того, вы можете отключить все устройства подкачки (с помощью swapoff) и использовать tmpfs.

3
ответ дан 8 December 2019 в 12:22
поделиться

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

echo $ passw | gpg -q -d --passphrase-fd 0 $ имя_файла | vim -

Или вообще не используйте vim.

Если вы хотите отредактировать файл перед передачей обратно в gpg, вам придется сделать это в два этапа.

1
ответ дан 8 December 2019 в 12:22
поделиться

Вы можете использовать команду % p для вывода редактируемого файла на стандартный вывод.

В этом примере Vim считывает свой стандартный ввод и отправляет его на стандартный вывод:

$ (echo one; echo two; echo three; echo four) | \
  vim - -nes -u NONE  -c ':%p' -c ':q!' | \
  tail -n +2 | \
  grep t
two
three

Примечания:

  • vim - : читать со стандартного ввода
  • -n : не создавать файл подкачки, использовать только память
  • -e : запуск в режиме ex
  • -s : тихий или пакетный режим
  • -u НЕТ : не читайте .vimrc (если вам нужен ваш .vimrc , пропустите этот параметр. Но у разных людей разные .vimrc -s, поэтому, если вы не напишите -u NONE , ваш код может не работать другой человек или даже для вас, если вы измените свой .vimrc .)
  • -c : запустить что-то как команду
  • -c ':% p': вывести содержимое буфера на стандартный вывод
  • -c 'q!' : выйти без сохранения
  • tail -n +2 : выбросить первую строку вывода Vim прочь (это строка ' Vim: чтение из стандартного ввода ... ')

В следующем примере Vim действительно делает что-то полезное: он удаляет первый столбец стандартного ввода.

$ (echo one; echo two; echo three; echo four) | \
  vim - -nes -u NONE  -c ':exec "normal G\<c-v>ggx"' -c ':%p' -c ':q!' | \
  tail -n +2
ne
wo
hree
our

Примечания:

  • : exec : выполнить следующую команду (команда командной строки, а не команда нормального режима)
  • нормальный : команда командной строки, которая выполняет заданные команды нормального режима
  • G : перейти к последней строке файла
  • \ : начать выбор блока
  • gg : перейти к первой строке
  • x : удалить выделенное символы

РЕДАКТИРОВАТЬ:

Могу ли я сообщить vim о выпуске ":% p" сразу после I ": wq"из интерактивного сеанса?

Вы можете указать Vim такие вещи, как «запустить команду X перед выходом», например, используя Автокоманда VimLeave (см. : автокоманда справки , : справка VimLeave ):

$ (echo "line 1"; echo "line 2") | \
  vim - -nes -u NONE -c ':autocmd VimLeave * :%p'
Vim: Reading from stdin...
:q!        # you type :q!
line 1
line 2

Проблема с командой ":% p". Если вы используете аргумент "-e", вы не будете получить визуальный редактор. Если вы не используете "-e", Vim не будет печатать результат ":% p" на стандартный вывод, но на терминал.

Я сделаю другое предложение в другом посте.

1
ответ дан 8 December 2019 в 12:22
поделиться

Вы не можете ничего скрыть от пользователя root, даже в памяти (у них есть доступ к / dev / mem). Этого факта нельзя избежать.

Так что я бы просто использовал временные файлы в вашем домашнем каталоге, которые должны быть защищены от всех, кроме root. В одной строке введите:

echo "testing" >~/proc$$ ; vim ~/proc$$ ;
    grep "good" ~/proc$$ ; rm -f ~/proc$$

Если вам нужна реальная безопасность, переместите файл в ящик, где вы являетесь единственным пользователем root, и сделайте это там. Затем переместите зашифрованный файл обратно.

0
ответ дан 8 December 2019 в 12:22
поделиться

Решение исходной проблемы (насколько я понимаю):

secret.txt содержит зашифрованный текст.

./ encode.sh - скрипт симметричного кодировщика.

Следующая команда прочитает текст из secret.txt, расшифрует, сделает его редактируемые в Vim, кодировать и записывать обратно в secret.txt:

$ cp secret.txt | \
  ./encode.sh | \
  vim - -n -u NONE \
      -c ':autocmd VimLeave * :exec "%!./encode.sh" | write! tmp'; \
  mv tmp secret.txt

Примечания:

  • : autocmd VimLeave * : выполнить перед тем, как оставить Vim для любого файла
  • : exec "%! ./ encode.sh" | записывать! secret.txt : запустить ./ encode.sh в целом содержимое буфера в качестве фильтра, затем записать буфер в secret.txt
  • «Как фильтр» означает, что содержимое буфера будет передано в ./ encode.sh . Содержимое буфера будет заменено стандартным вывод ./ encode.sh после завершения его выполнения.

Но я должен сказать, что это решение некрасиво. Я бы порекомендовал то же, что и rampion : взгляните на упомянутые автокоманды (: help autocommand ) и попытайтесь выполнить весь процесс редактирования в Vim.

Наконец, примечание. : Vim имеет свою собственную команду шифрования, которая делает именно то, что вы описали на веб-странице вашего проекта : «Она просто расшифровывает файл в файл, доступный только для чтения, вы редактируете его в своем любимом редакторе, а затем он rencrypts он и сохраняет файл туда, откуда он был. "

В справке Vim (: help: X ) говорится об алгоритме:

  • Используемый алгоритм не работает. 4-символьный ключ примерно один час, 6 ввод символов за один день (на ПК с процессором Pentium 133). Это требует, чтобы вы знали какой-то текст, который должен появиться в файле. Знаток сломает его на любой ключ. Когда текст был расшифрован, это также означает, что ключ может быть раскрывается, и другие файлы, зашифрованные тем же ключом, могут быть расшифрованы.
  • Pkzip использует такое же шифрование, и правительство США не возражает против его экспорта. Этот алгоритм подробно описывается в общедоступном файле Pkzip APPNOTE.TXT.
1
ответ дан 8 December 2019 в 12:22
поделиться
Другие вопросы по тегам:

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