Как показать список установленных расширений для Firefox через командную строку?

Что такое командная строка для отображения списка всех установленных расширений в браузере Firefox? Есть ли. Я проверил man firefox, но не помогло.

6
задан 21 June 2014 в 04:45

3 ответа

Дайте попытку этому grep команда остроты для списка всех дополнений Firefox,

grep -oP '(?<=\},\"name\":\")([^"]*)' ~/.mozilla/firefox/*.default/addons.json

ИЛИ

Это работало на меня:

user@host:~$ cat ~/.mozilla/firefox/*.default/addons.json |
python -c 'import json,sys;obj=json.load(sys.stdin);
for (i, x) in enumerate(obj["addons"]):
  print x["name"]' | uniq

Вывод в моем случае:

Clean Links
Tee-Timer

Объяснение:

  • cat ~/.mozilla/firefox/*.default/addons.json: читает addons.json файл в каждом профиле.
  • python -c 'import json,sys;obj=json.load(sys.stdin); загрузите json библиотеку синтаксического анализатора Python, и загружает json через stdin (стандартный вход), следовательно от cat
  • for (i, x) in enumerate(obj["addons"]): код фитона для цикличного выполнения через массив дополнений...
  • print x["name"]' | uniq ... и распечатайте его имя только один.
13
ответ дан 23 November 2019 в 07:16

Это - в основном просто упрощенная версия подхода @chaos:

grep -oP '},"name":"\K[^"]*' ~/.mozilla/firefox/*.default/addons.json

Нет никакой причины получить имя пользователя, можно всегда просто использовать ~/ или $HOME получить корневой каталог. Название профиля по умолчанию является, аналогично, ненужным. Вы, вероятно, только имеете один, и его имя будет RandomString.default. Если у Вас будут больше чем один и различные дополнения для каждого, то этот подход перечислит всех их. Так, если у Вас действительно есть несколько профилей, Вы могли бы хотеть добавить | uniq к вышеупомянутой команде для удаления дубликатов.

Объяснение

  • grep -oP : -o причины grep только распечатать подобранную часть строки и -P активирует Perl Совместимые Регулярные выражения, которые необходимы для \K (см. ниже).
  • },"name":"\K[^"]*: соответствуйте самому длинному фрагменту не -" символы ([^"]*) то прибывшее право после },"name":. \K означает, "игнорируют все подобранное до сих пор" который, в сочетании с -o, вызовет только часть соответствия после name:":" быть распечатанным.
  • ~/ : это - Ваш корневой каталог.
8
ответ дан 23 November 2019 в 07:16

После scriptlet просто больше-featureful версии кода @chaos. Мои мотивации были

  • Я использую больше чем один профиль Firefox.
  • Я поместил свои профили Firefox в другой dir/папку, чем значение по умолчанию: посмотрите FIREFOX_PROFILE_ROOT в пишут сценарий/позволяют, который необходимо, вероятно, отредактировать (назад к значению по умолчанию), или использовать более новое profiles.ini- парсинг кодирует (см. ссылку ниже).
  • Я хотел видеть больше информации о своих дополнениях, так как у меня была проблема, которая оказалась extension-version-related.
  • Я просто не кодировал в течение нескольких дней :-)

Вы можете также {видеть последнюю версию этого кода, использовать последнюю версию в качестве загружаемого файла сценария} здесь. Обратите внимание, что более новый код также анализирует profiles.ini (использование путей профиля, которые Вы определяете там) вместо того, чтобы положиться (как ниже) на Вас говорящий код, где найти Ваши профили.

### List add-ons in all local Firefox profiles. Requires:

### * users to know where they keep their Firefox profiles. TODO: parse `profiles.ini`
### * python (to parse the add-ons JSON)

### Tested on Linux with Python versions={2.7.9, 3.4.2}.

### Copyright (C) 2017 Tom Roche <Tom_Roche@pobox.com>
### This work is licensed under the Creative Commons Attribution 4.0 International License.
### To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/

#FIREFOX_PROFILE_ROOT="${HOME}/.mozilla/firefox"  # default Firefox path, which ...
FIREFOX_PROFILE_ROOT="${HOME}/firefox"           # ... I override, but you probably should not!
FIREFOX_ADDONS_FILENAME='addons.json'            # default Firefox value
FIREFOX_ADDONS_FP_LIST=''                        # default empty

### find add-ons JSON files:

if  [[ ! -r "${FIREFOX_PROFILE_ROOT}" ]] ; then
    >&2 echo "ERROR: cannot read FIREFOX_PROFILE_ROOT='${FIREFOX_PROFILE_ROOT}', exiting ..."
else

    FIREFOX_ADDONS_FP_LIST="$(find "${FIREFOX_PROFILE_ROOT}/" -type f -name "${FIREFOX_ADDONS_FILENAME}" | fgrep -ve 'blocklists')"
#    echo -e "FIREFOX_ADDONS_FP_LIST=\n${FIREFOX_ADDONS_FP_LIST}" # debugging


    if   [[ ( -z "${FIREFOX_ADDONS_FP_LIST}" ) ||
            ( "$(echo ${FIREFOX_ADDONS_FP_LIST} | wc -l)" == '0' ) ]] ; then
        >&2 echo "ERROR: found no add-ons files in Firefox profiles under '${FIREFOX_PROFILE_ROOT}', exiting ..."
    else

        for FIREFOX_ADDONS_FP in ${FIREFOX_ADDONS_FP_LIST} ; do
            echo "${FIREFOX_ADDONS_FP} contains:"
            ### Parse add-ons file using python, so
            ### * gotta export the envvar
            export FIREFOX_ADDONS_FP
            ### * indenting becomes important

            python -c '
import json, os
with open(os.environ.get("FIREFOX_ADDONS_FP")) as addons_file:
    addons_data = json.load(addons_file)
    for (i, addon) in enumerate(addons_data["addons"]):
        print("add-on name=" + addon["name"])
        print("    version=" + addon["version"])
        print("        URI=" + addon["learnmoreURL"])
        print("") # newline
'

            echo # newline
        done
    fi
fi
1
ответ дан 23 November 2019 в 07:16

Другие вопросы по тегам:

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