web-dev-qa-db-fra.com

Comment afficher la liste des extensions installées pour Firefox via une ligne de commande?

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é.

6

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.
13
chaos

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.

Explication

  • 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.
8
terdon

Le script suivant n'est qu'une version plus complète de code de @ chaos . Mes motivations étaient

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
1
TomRoche