web-dev-qa-db-ja.com

シェルスクリプトでシンボリックリンク先のファイル名を取得するにはどうすればよいですか?

スクリプト名がmyscriptであるとしましょう。これはthescript_1.91.shへのシンボリックリンクです

リンク先の名前を取得する方法はありますか?例:ログファイルに書き込みたい

cat <<EOF

#########################
`basename $0`
`date -R` 
#########################

EOF

$ 0はサブシェルへのファイル引数の名前、つまり「myscript」を保持します

ここにリンク先の名前を取得する方法はありますか?

4
Michael

システムにreadlinkユーティリティがある場合、これで十分です。

cat <<END_MESSAGE
#########################
$( basename "$( readlink -f "$0" )" )
$( date -R ) 
#########################
END_MESSAGE

-fオプションは、最初のリンクだけでなく、指定されたパス名のすべてのシンボリックリンクを再帰的に解決するために使用されます。システムのreadlinkのマニュアルを参照してください(man 1 readlink)。

関連もあります:

3
Kusalananda