我正在尝试启动一个小脚本来修复iceweasel图标中的错误。
这是脚本。您可以找到它作为解决方法在错误报告中
for n in 16 32 48; do inkscape -z -w $n -h $n -e
/usr/share/iceweasel/browser/chrome/icons/default/default${n}.png
/usr/share/icons/hicolor/scalable/apps/iceweasel.svg; done
for n in 16 32 48 64 128; do inkscape -z -w $n -h $n -e
/usr/share/icons/hicolor/${n}x${n}/apps/iceweasel.png
/usr/share/icons/hicolor/scalable/apps/iceweasel.svg; done
我创建了一个tempiceweasel.sh
包含上面几行的文件。我给了它执行权限:
# chmod +x tempiceweasel.sh
# ls -la tempiceweasel.sh
-rwxr-xr-x 1 user user 349 mars 9 16:33 tempiceweasel.sh
当我启动脚本时出现权限错误:
# ./scripts/tempiceweasel.sh
Nothing to do!
./scripts/tempiceweasel.sh: ligne 3: /usr/share/iceweasel/browser/chrome/icons/default/default16.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 4: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 3: /usr/share/iceweasel/browser/chrome/icons/default/default32.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 4: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 3: /usr/share/iceweasel/browser/chrome/icons/default/default48.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 4: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/16x16/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/32x32/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/48x48/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/64x64/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/128x128/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
看来我没有权限在这些目录中写入文件。我不明白为什么;我以 root 身份运行,这些文件的权限如下:
-rw-r--r-- 1 root root 93 févr. 14 14:25 default16.png
-rw-r--r-- 1 root root 325 févr. 14 14:25 default32.png
-rw-r--r-- 1 root root 1845 févr. 14 14:25 default48.png
有什么想法为什么我无法写入这些文件吗?
答案1
您复制粘贴的命令应该是单行命令。相反,它们被分成三行。因此每个命令都与您执行的命令相同:
# for n in 16 32 48; do inkscape -z -w $n -h $n -e
# /usr/share/iceweasel/browser/chrome/icons/default/default${n}.png
# /usr/share/icons/hicolor/scalable/apps/iceweasel.svg; done
所以基本上,在循环的每一步中,它都会尝试运行 inkscape,然后就是尝试将图像文件作为可执行文件运行,然后它尝试对 svg 文件执行相同的操作。当然,您收到有关权限的错误的原因是图像没有执行权限。 “无事可做”来自 inkscape,它缺少参数。
这三行应该都在同一条线上。或者,由于您正在编写 shell 脚本而不是单个命令,更合适的编写方法是:
for n in 16 32 48
do
inkscape -z -w $n -h $n -e \
/usr/share/iceweasel/browser/chrome/icons/default/default${n}.png \
/usr/share/icons/hicolor/scalable/apps/iceweasel.svg
done
请注意行末尾的反斜杠 - 它们意味着下一行是当前行的延续。这同样适用于第二个循环。