命令完成不适用于包含“:”的名称

命令完成不适用于包含“:”的名称

我一直在破解 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 不能。由于它无法列出目录,因此无法完成其中的名称或扩展通配符。

相关内容