在 Centos 和 Debian 上我嘗試過這個。
ls 指令中的 * 是否表示遞歸搜尋?
如果我開始輸入目錄名稱並點擊選項卡,我會看到以下內容:
# ls /etc/rc<tab>
rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rc.local rcS.d/
我想如果我在路徑中添加一個星號,我會看到同樣的東西,但它卻進行了遞歸搜尋:
# ls /etc/rc*
/etc/rc.local
/etc/rc0.d:
K50netconsole K90network
/etc/rc1.d:
K50netconsole K90network
/etc/rc2.d:
K50netconsole S10network
/etc/rc3.d:
K50netconsole S10network
...
windows dir 指令只會顯示與 /etc/rc* 相符的目錄,如何從 ls 取得此行為(不使用 Tab 鍵)?
****編輯/更新:
好吧,現在我明白* 是由bash 而不是命令解釋的,但它總是被解釋為“枚舉文件和文件夾條目”,或者如果我在不同的上下文中使用它,它會做其他事情嗎?轉 -qa 帖子*)返回套件名稱等”
答案1
星號在到達ls
命令之前會展開,因此這相當於
ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d ...
它將分別列出每個目錄的內容。
您可能想要使用ls -d /etc/rc*
禁止列出目錄內的文件,或使用僅顯示擴展名的命令,例如echo /etc/rc*
.
答案2
預設情況下,如果您ls
使用目錄參數調用,它將顯示目錄的內容。您可以使用該選項來變更該行為-d
。從man ls
-d, --directory
list directory entries instead of contents, and do not derefer‐
ence symbolic links