스크립트를 사용하여 Firefox의profiles.ini에 새 프로필 항목을 어떻게 추가합니까?

스크립트를 사용하여 Firefox의profiles.ini에 새 프로필 항목을 어떻게 추가합니까?

Firefox는 ~/.mozilla/firefox/profiles.ini. 항목은 다음과 유사합니다.

[Profile0]
Name=default
IsRelative=1
Path=default
Default=1

...

[Profile8]
Name=guest
IsRelative=1
Path=guest

profiles.iniBash 스크립트를 사용 하려면 새 항목을 추가해야 합니다 . 문제는 프로필에 순차적으로 번호를 매겨야 하는데, 각 사용자별로 몇 개의 프로필이 있는지 미리 알 수 없다는 점이다. 위의 예에서는 [Profile9]를 추가해야 합니다. 대신에 [Profile8], [Profile10] 또는 다른 번호를 추가하면 작동하지 않습니다.

내 스크립트가 현재 사용 중인 가장 높은 프로필 번호를 찾은 다음 해당 번호를 증가시키고 새 프로필을 추가하려면 어떻게 해야 합니까 profiles.ini?

나는 비슷한 것을 a 에서 사용했지만 for-loop그것을 얻는 방법을 모르겠습니다 $NewNumber.

echo "[Profile$NewNumber]
Name=NewProfile
IsRelative=1
Path=NewPath" >> /home/$myuser/.mozilla/firefox/profiles.ini

답변1

가장 간단한 방법:

/usr/bin/firefox -CreateProfile profileName 

profiles.ini파일의 프로필을 유지 하고 새 프로필을 만듭니다( profileName이 경우).

답변2

어쩌면 awk를 사용하여 "[Profile]" 줄을 추출한 다음 "[Profile ... ]" 비트를 처리한 다음 결과를 숫자로 정렬하고 마지막(가장 높은) 것만 유지합니다.

highest=$(awk '/^\[Profile[0-9]+\]$/ { s=substr($0, 9); sub("]","", s); print s}' < /home/$myuser/.mozilla/firefox/profiles.ini |sort -n | tail -1)
highest=$((highest + 1))
printf "[Profile%d]
Name=NewProfile
IsRelative=1
Path=NewPath" "$highest" >> /home/$myuser/.mozilla/firefox/profiles.ini

답변3

포괄적인 접근 방식을 취하는 것은 어떨까요 awk?

awk '
/Profile[0-9]+/ {PRNR = $0
                 gsub (/[^0-9]/, "", PRNR)
                }
1
END             {print ""
                 print "[Profile" ++PRNR "]"
                 print "Name=NewProfile"
                 print "IsRelative=1"
                 print "Path=NewPath >> /home/$myuser/.mozilla/firefox/profiles.ini"
                }
' profiles.ini

관련 정보