2015-10-19 3 views
0

Я хотел бы добавить список пакетов emacs в мой сценарий резервного копирования, поэтому мне нужно как-то извлечь список установленных пакетов - например, используя переменную package-activated-list - из командной строки. Возможно ли это? Я имею в виду вызов emacs с каким-то параметром, поэтому вывод - это список установленных пакетов, которые я могу перенаправить в некоторый файл.Извлечение списка пакетов из emacs

ответ

1

Да, я полагаю, вы хотите что-то вроде этого:

emacs -batch -l ~/.emacs --eval='(message (mapconcat '"'"'symbol-name package-activated-list "\n"))' 

См http://www.emacswiki.org/emacs/BatchMode для того, как запускать команды Emacs из командной строки.

+0

Ваш Lisp выглядит так, как будто он имеет синтаксическую ошибку. Во всяком случае, вам действительно не нужно «message» или «symbol-name» что угодно - просто «--eval =» (mapcar 'print package-activated-list) «' будет казаться достаточным. Вы также хотите отказаться от стандартной ошибки, которая содержит различные сообщения о проделанной работе от Emacs. – tripleee

+0

Да, это тоже работает. Поэтому я считаю, что наиболее удобным решением является 'emacs -batch -l ~/.emacs --eval =" (mapcar 'print package-activated-list) "2>/dev/null'. Мое предыдущее решение * выглядит так, как будто оно имеет синтаксическую ошибку из-за того, как вы избегаете цитат в bash. Но он работает правильно. –

+0

О, мое плохое, ты прав; Мне не удалось правильно разобрать цитату. Использование 'message' имеет особый недостаток в том, что сообщения прогресса и результат будут смешанными, тогда как с' print' вы их разделяете. – tripleee

Смежные вопросы