Quelle est la ligne de commande pour afficher la liste de toutes les extensions installées sur le navigateur Firefox? Y a-t-il. J'ai vérifié man firefox
mais je n'ai pas aidé.
Essayez cette commande grep
oneliner pour lister tous les addons firefox,
grep -oP '(?<=\},\"name\":\")([^"]*)' ~/.mozilla/firefox/*.default/addons.json
OU
Cela a fonctionné pour moi:
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
Sortie dans mon cas:
Clean Links
Tee-Timer
Explication:
cat ~/.mozilla/firefox/*.default/addons.json
: lit le fichier addons.json dans chaque profil.python -c 'import json,sys;obj=json.load(sys.stdin);
charge la bibliothèque de l'analyseur json de python et charge json via stdin (entrée standard), par exemple de cat
for (i, x) in enumerate(obj["addons"]):
code phyton pour parcourir le tableau des addons ...print x["name"]' | uniq
... et n'imprimez que son nom.Ceci est fondamentalement juste une version simplifiée de l'approche de @ chaos:
grep -oP '},"name":"\K[^"]*' ~/.mozilla/firefox/*.default/addons.json
Il n'y a aucune raison d'obtenir le nom de l'utilisateur, vous pouvez toujours utiliser simplement ~/
ou $HOME
pour obtenir le répertoire de base. De même, le nom du profil par défaut est inutile. Vous n'en avez probablement qu'un et son nom sera RandomString.default
. Si vous avez plus d'un addon différent pour chacun, cette approche en listera tous . Ainsi, si vous avez plusieurs profils, vous voudrez peut-être ajouter | uniq
à la commande ci-dessus pour supprimer les doublons.
grep -oP
: le -o
force grep
à n'imprimer que la partie correspondante de la ligne et le -P
active les expressions régulières compatibles Perl nécessaires au \K
( voir ci-dessous).},"name":"\K[^"]*
: correspond au plus long tronçon de caractères non -"
([^"]*
) situés juste après },"name":
. Le \K
signifie "ignorer tout ce qui correspond à ici", ce qui, lorsqu'il est combiné avec -o
, ne fera qu'imprimer la partie de la correspondance après le name:":"
.~/
: c'est votre répertoire personnel.Le script suivant n'est qu'une version plus complète de code de @ chaos . Mes motivations étaient
FIREFOX_PROFILE_ROOT
dans script/let, que vous devriez probablement modifier (revenir à la valeur par défaut), ou utiliser le plus récent code profiles.ini
voir lien ci-dessous).:-)
Vous pouvez également {voir la dernière version de ce code, utiliser la dernière version en tant que fichier script téléchargeable} --- (ici . Notez que le code le plus récent analyse également profiles.ini
(à l'aide des chemins de profil que vous définissez ici) plutôt que de vous fier (comme ci-dessous) à ce que vous disiez le code où trouver vos profils.
### 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 <[email protected]>
### 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