シェルスクリプトからシンボリックリンクターゲットのファイル名を取得するには?

シェルスクリプトからシンボリックリンクターゲットのファイル名を取得するには?

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

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

cat <<EOF

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

EOF

$ 0はサブシェルのファイルパラメータ名、つまり「myscript」を格納します。

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

ベストアンサー1

システムにreadlinkユーティリティがある場合は、これを実行できます。

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

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

関連情報:

おすすめ記事