Firefoxブラウザーにインストールされているすべての拡張機能のリストを表示するコマンドラインとは何ですか?ありますか。 man firefox
をチェックしましたが、助けにはなりませんでした。
このgrep
onelinerコマンドを試して、すべての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);
pythonのjsonパーサーライブラリをロードし、stdin(標準入力)経由でjsonをロードし、cat
からergoをロードしますfor (i, x) in enumerate(obj["addons"]):
アドオンの配列をループするフィトンコード...print x["name"]' | uniq
...そしてその名前を1つだけ出力します。これは基本的に@chaosのアプローチの単純化されたバージョンです。
grep -oP '},"name":"\K[^"]*' ~/.mozilla/firefox/*.default/addons.json
ユーザーの名前を取得する理由はありません。~/
または$HOME
を使用していつでもホームディレクトリを取得できます。同様に、デフォルトプロファイルの名前は不要です。おそらく1つしかなく、その名前はRandomString.default
になります。複数のアドオンがあり、それぞれに異なるアドオンがある場合、このアプローチではallがリストされます。そのため、doに複数のプロファイルがある場合、上記のコマンドに| uniq
を追加して重複を削除することができます。
grep -oP
:-o
によりgrep
は行の一致部分のみを印刷し、-P
は\K
に必要なPerl互換正規表現をアクティブにします(下記参照)。},"name":"\K[^"]*
:"
の直後にある最長の非[^"]*
文字(},"name":
)のストレッチに一致します。 \K
は「ここまで一致するものをすべて無視する」ことを意味し、-o
と組み合わせると、name:":"
の後の一致部分のみが出力されます。~/
:これはホームディレクトリです。次のスクリプトレットは、より機能的なバージョンの @ chaosのコード です。私の動機は
FIREFOX_PROFILE_ROOT
を参照してください。おそらく編集(デフォルトに戻す)するか、新しいprofiles.ini
-解析コードを使用してください。 (以下のリンクを参照)。:-)
また、{このコードの最新バージョンを参照し、最新バージョンをダウンロード可能なスクリプトファイルとして使用することもできます} here 。新しいコードは、プロファイルを検索する場所をコードに指示することに依存するのではなく(下で説明するように)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 <[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