簡體   English   中英

在shell腳本中,。[!。] *是什么意思?

[英]In shell scripting, what does .[!.]* mean?

打印當前目錄中文件和文件夾以及它們的總大小的列表的命令是du -sh * 但是,僅該命令不會列出隱藏的文件或文件夾。 我找到了一個命令的解決方案,該命令可以正確列出隱藏文件和文件夾以及其余文件: du -sh .[!.]* * 盡管效果很好,但該解決方案是按原樣提供的,沒有任何解釋。

.[!.]*確切含義是什么? 它是如何工作的?

. -匹配一個. ,隱藏文件的前綴

[!.] -匹配任何字符,只要它不是. 請參閱參考

* -任意數量的字符

因此,此模式表示匹配文件以開頭. 但不是..

這是一種遍歷模式,基本上告訴bash查找以a開頭的所有文件. ,后跟除以外的任何字符. 然后包含任何字符。

請參見本頁,了解有關bash遍歷模式的詳細說明。

.[!.]*的含義是任何以.開頭的文件或目錄名稱. 但不跟隨. ,因此它將包括當前目錄下的所有隱藏文件和目錄,但不包括父目錄。

因為此行為是由Shell Glob模式決定的。 因此,您可以使用ls .[!.]*來查看shell環境中實際得到的內容。

順便說一句,您可以在shell中打開dotglob來簡化du命令。

$ shopt -s dotglob
$ du -sh *
$ shopt -u dotglob

從bash手冊

dotglob(如果已設置),bash包含以“。”開頭的文件名。 擴展路徑名的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM