无法打开文件lol.json:使用Jq时权限被拒绝?

16

我在这里遇到了某种权限问题。我可以使用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
请将 cat lol.json 的输出添加到您的问题中。 - Cyrus
@Cyrus 刚刚完成了! - Panda
1
@anishsane,这是为了解释这里的情况。即使拥有所有权限,我也完全不知道为什么这不起作用。请在评论前仔细阅读整个问题。 - Panda
1
请在您的问题中添加 ls -lZ $(which jq) 的输出。 - Cyrus
4
Ubuntu 又对 Snap 做了一些奇怪的事情。我建议您从官方网站安装 jq(他们提供一个静态二进制文件),或者使用 apt 安装(版本较旧但可用)。 - clorz
显示剩余8条评论
1个回答

36
sudo snap remove jq
sudo apt install jq

不要在没有使用--classic选项的情况下安装命令行工具snap。这是一种错误的行为行为

这对我有用,但我还需要多做一步(在... ¯\(ツ)/¯之后,jq仍然指向/snap/bin/jq,所以我必须运行source ~/.profile来清除错误(留给那些在我之后的人的帮助:-) - Taylor Paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接