Bash
有沒有辦法查看路徑的所有中間目錄的權限..?
我有一個文件路徑..是否有任何單個命令可以查看路徑中所有中間目錄的文件/目錄權限..?
這是兩個oneliners。
ls
每個路徑組件一次呼叫:$ (IFS=/; set -f -- $PWD; for arg; do path="${path%/}/$arg"; ls -dal "$path"; done)
輸出:
# drwxr-xr-x 31 root admin 1122 4 Nov 22:08 / # drwxr-xr-x 9 root admin 306 3 Nov 17:36 /Users # drwxr-xr-x+ 67 janmoesen staff 2278 7 Nov 14:46 /Users/janmoesen # drwxr-xr-x+ 53 janmoesen staff 1802 4 Nov 22:07 /Users/janmoesen/Sites # drwxr-xr-x 28 janmoesen staff 952 7 Nov 15:01 /Users/janmoesen/Sites/example.com
只需一次呼叫
ls
所有路徑:$ (IFS=/; set -f -- $PWD; for arg; do path="${path%/}/$arg"; paths+=("$path"); done; ls -dal "${paths[@]}")
輸出:
# drwxr-xr-x 31 root admin 1122 4 Nov 22:08 / # drwxr-xr-x 9 root admin 306 3 Nov 17:36 /Users # drwxr-xr-x+ 67 janmoesen staff 2278 7 Nov 14:46 /Users/janmoesen # drwxr-xr-x+ 53 janmoesen staff 1802 4 Nov 22:07 /Users/janmoesen/Sites # drwxr-xr-x 28 janmoesen staff 952 7 Nov 15:01 /Users/janmoesen/Sites/example.com
Linux 附帶的
namei
命令主要用於顯示路徑中的符號連結,但也可以顯示所有權。$ namei -nom ~ f: /home/gilles drwxr-xr-x root root / drwxr-sr-x root staff home drwxr-xr-x gilles gilles gilles
否則,這是一種遍歷包含給定文件的連續目錄(不是唯一一個,如本頁其他答案所示)並列出其內容的方法。
d=$PWD; set /; while [ -n "$d" ]; do set -- "$@" "$d/"; d=${d%/*}; done; ls -ld "$@"
請注意,在存在符號連結的情況下,此列表可能會有些誤導。例如,如果
/foo/bar
是一個符號連結,/hello/world
它本身就是 的符號連結/one/two
,並且所有的/foo
和/hello
都是/world
世界可讀的(比如模式 755),但/hello
使用者 Alice 不可讀,那麼 Alice 將無法訪問/foo/bar
,但上面的列表將只顯示世界可讀的目錄。