我在这里遇到了一些许可问题。我可以用cat
读取文件,用nano
对其进行更改,但由于某种原因,jq
存在权限问题。这就是我所面临的:
msp@coolpad:~/projects/lol$ jq .name lol.json
jq: error: Could not open file lol.json: Permission denied
在检查权限时,这是我得到的:
msp@coolpad:~/projects/lol$ ls -l
total 4
-rw-rw-r-- 1 msp msp 0 Sep 27 04:04 lol-domains.txt
-rwxrwxrwx 1 msp msp 593 Sep 27 04:38 lol.json
正如你所看到的,我已经尝试给它777
权限,但它仍然显示Permission denied
。我知道设置777
权限不是一个好主意,我完全打算在问题解决后将其更改回664
。任何帮助将不胜感激。
**更新1:**我已经尝试从snap
重新安装jq
,但仍然无法解决问题。
更新2:cat lol.json
的输出
msp@coolpad:~$ cat lol.json
{"name":"lol"}
更新3:echo '{"name":"lol"}' | jq .name
的输出
msp@coolpad:~$ echo '{"name":"lol"}' | jq .name
"lol"
更新4:在评论中弹出的一个解决方法:
cat lol.json | jq .name
1条答案
按热度按时间sf6xfgos1#
不要在没有
--classic
的snap
上安装命令行工具。Snap软件包有“confinement”,这是“严格”或“经典”。
jq
只被打包为“严格”,这意味着它有自己的/tmp/snap.jq/
目录,不能读取系统/tmp
目录和一堆其他目录。想要使用“经典限制”的软件包必须由负责Snapcraft的人员手动批准,并且在安装它们时必须通过--classic
,如下所示:sudo snap install <package_name> --classic
。为了避免这种情况,永远不要在
snap
中安装命令行工具。这个错误是is intended behavior,他们不会改变它。