我在这里正面临着某种许可问题。我能够使用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
发布于 2020-05-06 14:38:41
您通过Ubuntu的snap安装了snap。卸载它并通过apt重新安装它。
sudo snap remove jq
sudo apt install jqSnap包有"禁闭“,它要么是”严格的“,要么是”经典的“。在本例中,jq被打包为“严格”,这意味着它有自己的/tmp/snap.jq/目录,不能读取系统/tmp目录和一堆其他目录。想要使用“经典限制”的包必须由负责Snapcraft的人员手动批准,并且在安装它们时必须通过--classic,例如:sudo snap install <package_name> --classic。
只是不要用snap安装命令行工具,至少不要安装--classic。这个错误是有意的行为,他们不会改变它。
https://stackoverflow.com/questions/58128001
复制相似问题