Bash
command .*
作用於父目錄
我們團隊中的某個人想要遞歸地更改使用者主目錄中所有隱藏目錄的使用者權限。為此,他執行了以下命令:
cd /home/username chown -R username:groupname .*
當我們意識到他實際上遞歸地更改了 /home 中所有使用者目錄的權限時,我們感到非常驚訝,因為
.*
equals..
也是如此。不過,您會在 Linux 中預料到這種行為嗎?
當我嘗試將 .* 用於任何事情時,我總是會感到很痛苦,並且很久以前就切換到使用字元類:
chown -R username.groupname .[A-Za-z]*
我會怎麼做。
編輯:有人指出這不會得到,例如點文件,例如
._Library
. 要使用的擷取所有字元類將是chown -R username.groupname .[A-Za-z0-9_-]*
使用擴展的萬用字元 (
shopt -s extglob
),您可以使用.!(.|)
即點不跟點或什麼都沒有。