web-dev-qa-db-ja.com

Bashで、ソフトリンクが何を指しているのかを安全に判断するにはどうすればよいですか?

いくつかのディレクトリを処理し、その中のどのファイルがシンボリックリンクであり、それらが何にリンクしているかを判断する必要があります。これは単純に聞こえますが、ファイル名に含まれるコントロールやその他の文字の存在を制御することはできず、堅牢なソリューションが必要です。

それで、任意の名前のファイルが与えられた場合、リンク先にも任意の内容を含めることができる場合、リンク先を安全に判断するにはどうすればよいですか?

39
swestrup

readlink -f <linkname>

見る - man 1 readlink

61
eduffy
stat <linkname>

例:

stat /usr/local/cuda

最初の2行は次のようになります。

File: '/usr/local/cuda' -> 'cuda-8.0'
Size: 8             Blocks: 0          IO Block: 4096   symbolic link
...