![命令完成不适用于包含“:”的名称](https://linux22.com/image/9429/%E5%91%BD%E4%BB%A4%E5%AE%8C%E6%88%90%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%E5%8C%85%E5%90%AB%E2%80%9C%3A%E2%80%9D%E7%9A%84%E5%90%8D%E7%A7%B0.png)
我一直在破解 Linux 系统(试图让蓝牙工作,尽管这不相关)。
有如下结构的目录
/var/lib/bluetooth/
├── B8:27:EB:8E:A8:4D
│ ├── 00:12:A1:12:09:51
│ │ └── info
│ ├── 34:88:5D:70:53:44
│ │ └── info
│ ├── cache
│ │ ├── 00:12:A1:12:09:51
│ │ ├── 34:88:5D:70:53:44
│ │ ├── E4:CE:8F:03:00:6D
│ │ └── F8:77:B8:AD:BC:AC
│ └── settings
我一直在尝试操作这些,但命令完成不适用于任何包含:
.这是正常的吗?有什么方法可以让命令完成正常工作吗?完整输入这些神秘的名称非常乏味,而且容易出错。
sudo ls /var/lib/bluetooth/B8:27:EB:8E:A8:4D/34:88
显示没有完成
sudo ls /var/lib/bluetooth/B8:27:EB:8E:A8:4D/34:88:5D:70:53:44
就OK
使用通配符例如00*
似乎也不起作用。
答案1
sudo ls
如果您必须使用sudo
才能访问该目录才能列出它,那么是什么让您认为您的 shell 可以列出它?
这不是命令行补全、通配符、冒号、引号或 shell 版本的问题。这是一个非常简单的权限问题。
您没有列出该目录的访问权限。因此,作为您的帐户运行的 shell 不能。由于它无法列出目录,因此无法完成其中的名称或扩展通配符。