![像 cat 和 ls 这样的命令的制表符补全“compspec”在哪里定义?](https://linux22.com/image/1206784/%E5%83%8F%20cat%20%E5%92%8C%20ls%20%E8%BF%99%E6%A0%B7%E7%9A%84%E5%91%BD%E4%BB%A4%E7%9A%84%E5%88%B6%E8%A1%A8%E7%AC%A6%E8%A1%A5%E5%85%A8%E2%80%9Ccompspec%E2%80%9D%E5%9C%A8%E5%93%AA%E9%87%8C%E5%AE%9A%E4%B9%89%EF%BC%9F.png)
一些借口:
我在本地安装 Jenkins,安装完成后,系统要求我从以下文件夹中的文本文件中生成密码:/var/lib/jenkins/secrets/
然而,输入文件名的首字母后
cat /var/lib/jenkins-secrets/
,瞧,制表符和双制表符没有任何作用——自动完成功能坏了!
经过一番阅读,我发现自动完成是通过名为计算机规格,变量 GLOBIGNORE 和 FIGNORE 用于定义自动完成中忽略的内容。不过我现在很好奇,我想知道 ls 和 cat 究竟是如何忽略我的 /secrets/ 文件夹的内容的。输入以下命令后,查看 compspec 文件列表:
ls /etc/bash_completion.d
我只看到文件夹:
apt-linux-mint git-prompt
标准 bash 命令是否有通用的规范?是什么阻止我在 /var/lib/jenkins/secrets/ 中双击?
答案1
根据用户“muru”对我的问题的评论,这是由于权限问题,而不是 compspecs 问题。
编辑:也感谢 Raffa 提供一些有用的信息。