Bash

命令完成不適用於包含 : 的名稱

  • July 18, 2017

我一直在破解 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是好的

使用萬用字元例如00*似乎也不起作用。

sudo ls

如果您必須使用sudo才能訪問目錄才能列出它,是什麼讓您認為您的 shell 可以列出它?

這不是命令行補全、萬用字元、冒號、引號或 shell 版本的問題。這是一個非常簡單的權限問題。

您沒有列出該目錄的訪問權限。因此,作為您的帳戶執行的 shell 不能。由於它無法列出目錄,因此無法完成其中的名稱或擴展萬用字元。

引用自:https://unix.stackexchange.com/questions/378758