Chmod
遞歸更改權限或不遞歸更改權限之間的區別
chmod 777 *
命令和chmod -R 777 *
遞歸或正常更改權限有什麼區別 ?
假設您有以下目錄結構:
$ ls -lR .: total 4 drwxr-xr-x 3 user users 4096 Aug 2 14:05 a ./a: total 4 drwxr-xr-x 3 user users 4096 Aug 2 14:05 b ./a/b: total 4 drwxr-xr-x 2 user users 4096 Aug 2 14:05 c ./a/b/c: total 0
僅
chmod 777 *
將目前目錄中所有文件的權限設置為0777。但是,子目錄中的文件不受影響,即a/
權限設置為0777但不設置a/b
或a/b/c
等等:$ chmod 777 * $ ls -lR .: total 4 drwxrwxrwx 3 user users 4096 Aug 2 14:05 a ./a: total 4 drwxr-xr-x 3 user users 4096 Aug 2 14:05 b <=== Note ./a/b: total 4 drwxr-xr-x 2 user users 4096 Aug 2 14:05 c <=== Note ./a/b/c: total 0
這是遞歸發生的地方:
chmod -R 777 *
目前目錄的所有子目錄中的所有文件和目錄都會受到影響:$ ls -lR .: total 4 drwxrwxrwx 3 user users 4096 Aug 2 14:05 a ./a: total 4 drwxrwxrwx 3 user users 4096 Aug 2 14:05 b <=== Note ./a/b: total 4 drwxrwxrwx 2 user users 4096 Aug 2 14:05 c <=== Note ./a/b/c: total 0
注意:如果使用 bash,那麼“所有文件”的含義取決於 的值
dotglob
,參見 bash(1);對於其他貝殼也是如此。