readlink コマンドのオプションの説明

readlink コマンドのオプションの説明

readlink誰かが次のコマンドオプションを簡単な言語で説明できますか?

   -f, --canonicalize
      canonicalize  by  following  every symlink in every component of
      the given name recursively; all  but  the  last  component  must
      exist

   -e, --canonicalize-existing
      canonicalize  by  following  every symlink in every component of
      the given name recursively, all components must exist

   -m, --canonicalize-missing
      canonicalize by following every symlink in  every  component  of
      the  given  name recursively, without requirements on components
      existence

ベストアンサー1

これは説明が必要ないようで、あいまいに聞こえる部分はよくわかりません... 例をあげましょう。

--標準化

$ mkdir /tmp/realdir
$ mkdir /tmp/subdir
$ ln -s /tmp/realdir /tmp/subdir/link
$ cd /tmp

$ readlink -f ./subdir/link/nonexistentdir/
/tmp/realdir/nonexistentdir

$ readlink -f ./subdir/link/nonexistentfile.txt
/tmp/realdir/nonexistentfile.txt

オプションが何であれ、次のことをreadlink行います。 - 相対パスを絶対パスに変換 - シンボリックリンク名を物理パスに変換

上記のように、を使用すると、-fパスreadlinkの最後の部分(nonexistentfile.txtここ)が存在するかどうかは関係ありません。

パスの他の部分が存在しない場合は何も出力されず、readlink戻りコードは0(エラーが発生したことを意味)とは異なります。望むより:

$ readlink -f /tmp/fakedir/foo.txt
$ echo $?
1

--既存の標準化

同じことをしようとすると-e

$ readlink -e ./subdir/link
/tmp/realdir

$ readlink -e ./subdir/link/nonexistentfile.txt
$ echo $?
1

使用時に-eパスコンポーネントがないとreadlink何も出力されず、戻りコードは0とは異なります。

--標準化不足

-mオプションは逆です-e。パスのコンポーネントが存在することを確認するためのテストは実行されません。

$ readlink -m ./subdir/link/fakedir/fakefile
/tmp/realdir/fakedir/fakefile

$ ln -s /nonexistent /tmp/subdir/brokenlink

$ readlink -m ./subdir/brokenlink/foobar
/nonexistent/foobar

おすすめ記事