Что такое командная строка для отображения списка всех установленных расширений в браузере Firefox? Есть ли. Я проверил man firefox
, но не помогло.
Дайте попытку этому 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
... и распечатайте его имя только один.Это - в основном просто упрощенная версия подхода @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:":"
быть распечатанным.~/
: это - Ваш корневой каталог.После scriptlet просто больше-featureful версии кода @chaos. Мои мотивации были
FIREFOX_PROFILE_ROOT
в пишут сценарий/позволяют, который необходимо, вероятно, отредактировать (назад к значению по умолчанию), или использовать более новое 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