この質問はすでに superuser.com で回答されています (あるサイトからの質問を別のサイトからの重複としてマークできるかどうかわかりません)。解決策は、書くのと同じくらい簡単です (ターゲットファイル名と同じディレクトリにいると仮定します):
$ namei -l $(pwd)/somefile ## or `namei -l $(realpath -s somefile)`
-l
のせいで 、各親ディレクトリの基本的なアクセス許可を長い形式でリストします。
pwd
を使用する必要があります /realpath
なぜなら namei
相対パスを解決しません。ターゲット ディレクトリにない場合は、フル パスを記述してください。
これを行うこの小さなスクリプトを作成しました。 cd "$1"; pwd
を使用しています パスが正規化されないように現在のディレクトリを取得します(たとえば、 magic-ls .
を試した場合 現在のディレクトリは /var/lib/postgres ですが、これは /mnt/postgres へのシンボリック リンクであり、/var
を取得します。 、 /var/lib
と /var/lib/postgres
、 realpath
を使用している間 /mnt
を取得します と /mnt/postgres
)
magic-ls() {
local current=$(cd "$1"; pwd)
while [[ $current != '/' ]]; do
ls -ld "$current"
current=$(dirname "$current")
done
}
出力例は次のとおりです:
[[email protected] ~]$ magic-ls
drwx------ 1 leodag leodag 2722 jun 21 13:49 /home/leodag
drwxr-xr-x 1 root root 18 mai 2 2019 /home
ちなみにcd ""
以降は引数なしでも動きます ディレクトリは変更されません。
編集:realpath
を削除しました /
へのリンクがあった場合、予期しない結果につながる可能性があるため、 while チェックから 不要でした。
パラメータ展開のみを使用:
#!/usr/bin/env bash
path="$1"
while test -n "$path"; do
ls -lLd "$path"
path="${path%/*}"
done
呼び出し方法:
bash test.sh /var/lib/program/subfolder/somefile
与える
-rw-r--r-- 1 root root 0 Jun 21 18:49 /var/lib/program/subfolder/somefile
drwxr-xr-x 1 root root 4096 Jun 21 18:49 /var/lib/program/subfolder
drwxr-xr-x 1 root root 4096 Jun 21 18:49 /var/lib/program
drwxr-xr-x 1 root root 4096 Jun 21 18:49 /var/lib
drwxr-xr-x 1 root root 4096 Jun 13 19:24 /var
私はあなたのためにbashスクリプトを書きました。名前にスペースがある場合、いくつかのバグがあります。気になる場合は、コメントで変更の推奨事項をお知らせください。
#!/bin/bash
if [ ! -z "$1" ] && [ -e "$1" ]
then
path=`realpath -s "$1"` # read argument as absolute path
else
path="$PWD" # No valid argument, so we take pwd
fi
paths=""
while [ "$path" != / ];do
paths+=" $path"
path=`dirname "$path"`
done
paths+=" $path" # Adding / to pathlist too
ls -ld $paths
realpath -s
で 絶対パスをキャッチできますが、リンクをたどることはできません。引数が指定されていない場合、一覧表示するファイル/ディレクトリとして pwd を使用します。
各パスをリストに追加します。これにより、最終的にレイアウトが改善されるという利点が得られます。これにより、ls
を実行するため、適切なテーブルが得られます。 一度だけ。
出力:
bobafit:~$ magic_ls_-l_command /usr/bin/python3
drwxr-xr-x 21 root root 4096 Jun 20 10:07 /
drwxr-xr-x 14 root root 4096 Sep 5 2019 /usr
drwxr-xr-x 2 root root 110592 Jun 20 10:07 /usr/bin
lrwxrwxrwx 1 root root 9 Apr 7 12:43 /usr/bin/python3 -> python3.8