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

Вот как я это делаю:

john@host:~$ ls /etc/postgresql
9.1
john@host:~$ sudo vim /etc/postgresql/9.1/main/pg_hba.conf

Поскольку путь такой: /etc/postgresql/[VERSION]/main/pg_hba.conf

1
задан 21 June 2014 в 16:45

2 ответа

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

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

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

Объяснение

grep -oP: -o вызывает grep только печать согласованной части строки, а функция -P активирует регулярные выражения, совместимые с Perl, которые необходимы для \K (см. ниже). },"name":"\K[^"]*: совпадение с самым длинным отрезком не " символов ([^"]*), которые появляются сразу после },"name":. [F15] означает «игнорировать все согласованное здесь», которое в сочетании с -o будет вызывать только часть матча после печати name:":". ~/: это ваш домашний каталог.
8
ответ дан 24 May 2018 в 06:28

Следующим скриптлетом является просто более функциональная версия кода @ хаоса. Мои мотивы были

Я использую более одного профиля Firefox. Я помещал свои профили Firefox в другую папку dir /, чем по умолчанию: см. [F2] в сценарии / let, которые вы, вероятно, должны редактировать (вернуться к умолчанию), или использовать новый profiles.ini -параметр (см. Ссылку ниже ). Я хотел увидеть больше информации о моих дополнениях, так как у меня была проблема, которая оказалась связанной с расширением. Я просто не закодирован на несколько дней :-)

Вы также можете {увидеть последнюю версию этого кода, использовать последнюю версию как загружаемый файл сценария} код @ хаоса . Обратите внимание, что более новый код также анализирует 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
ответ дан 24 May 2018 в 06:28
  • 1
    пожалуйста, не оставляйте комментарии, рекламирующие ваш (прекрасный) ответ на другие ответы. Ваш ответ так же заметен, и вы просто рассылаете спам другим ответчикам. – terdon♦ 31 August 2017 в 20:05

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

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