Ответ Джо требует нескольких изменений, чтобы он работал.
Во-первых, это должен быть $ _product, а не $ product, а во-вторых, в последней строке есть ошибочный ')'.
Следующий код должен быть правильным:
$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load( Ответ Джо требует нескольких изменений, чтобы он работал.
Во-первых, это должен быть $ _product, а не $ product, а во-вторых, в последней строке есть ошибочный ')'.
Следующий код должен быть правильным:
[110]product->getAttributeSetId());
$attributeSetName = $attributeSetModel->getAttributeSetName();
Вы могли бы просто использовать 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.
Имейте в виду, что по умолчанию Vim создает файл подкачки на диске. Чтобы избежать этого, запустите vim с помощью следующей команды:
vim "+set noswapfile"
Вы можете смонтировать файловую систему tmpfs (которая хранит данные в памяти) и выполнять там свою работу
РЕДАКТИРОВАТЬ (!): Извините, сделайте это ramfs. Разница в том, что tmpfs можно выгружать для подкачки пространства, что вам не нужно. Кроме того, вы можете отключить все устройства подкачки (с помощью swapoff) и использовать tmpfs.
Верно: Vim не выводит данные в канал. Vim не принимает ввод и не выводит его в канал, а выводит его в окно редактора, где вы можете его редактировать. Вы не можете продолжить последовательность каналов после vim. Так что попробуйте:
echo $ passw | gpg -q -d --passphrase-fd 0 $ имя_файла | vim -
Или вообще не используйте vim.
Если вы хотите отредактировать файл перед передачей обратно в gpg, вам придется сделать это в два этапа.
Вы можете использовать команду % 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" на стандартный вывод, но на терминал.
Я сделаю другое предложение в другом посте.
Вы не можете ничего скрыть от пользователя root, даже в памяти (у них есть доступ к / dev / mem). Этого факта нельзя избежать.
Так что я бы просто использовал временные файлы в вашем домашнем каталоге, которые должны быть защищены от всех, кроме root. В одной строке введите:
echo "testing" >~/proc$$ ; vim ~/proc$$ ;
grep "good" ~/proc$$ ; rm -f ~/proc$$
Если вам нужна реальная безопасность, переместите файл в ящик, где вы являетесь единственным пользователем root, и сделайте это там. Затем переместите зашифрованный файл обратно.
Решение исходной проблемы (насколько я понимаю):
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.