coreutilsでシンボリックリンクオプションを使用する

coreutilsでシンボリックリンクオプションを使用する

coreutils マニュアルから

2.10 シンボリックリンクのナビゲーション

--recursive次のオプションは、() オプションも指定された場合、chown と chgrp が階層をナビゲートする方法を変更します。-R次のいずれかのオプションを指定すると、最後のオプションのみが適用されます。これらのオプションは、ディレクトリへのシンボリックリンクを処理するときにシンボリックリンクのみを操作する必要があるのか​​、ディレクトリにルートがある階層内のすべてのファイルを操作するのかを指定します。

--dereferenceこれらのオプションはおよび--no-dereference()とは無関係であり -h、シンボリックリンクまたはその参照が変更されるかどうかを制御します。

-H--recursive()が指定され、コマンドライン引数がディレクトリへのシンボリックリンクである場合は、そのディレクトリに移動します。-R

-L再帰巡回では、見つかったディレクトリの各シンボリックリンクが巡回されます。

-Pシンボリックリンクを通過しないでください。-H-Lまたはが指定されていない場合、これはデフォルトです-P

  1. --dereference「このオプションはおよび--no-dereference()とは無関係で -hあり、シンボリックリンクまたはその参照が変更されるかどうかを制御します」の「このオプション」と「と--dereference--no-dereferenceはそれぞれ何を行い、どのように異なりますか?

  2. -H正しいと正しいの説明は-L私に同じことを言うようです。これら2つのオプションの違いは何ですか?

ありがとうございます。

答え1

ロゴ-h(別名--no-dereference)は使いやすいロゴです。次の設定があるとしましょう。

$ ln -s /etc/passwd /tmp/foobar
$ sudo chown fred /tmp/foobar

--dereferenceデフォルトと同様に、これは実際に変わります/etc/passwd。おそらくあなたが望むものではないかもしれません。 :-) この-hフラグを使用すると、シンボリックリンクの所有権が変更されます。したがって、特に所有権を再帰的に変更するときにそれを使用する習慣が必要です-h。つまり、chmod -hR代わりにしてくださいchmod -R

この-Hフラグは、コマンドラインにリストされているディレクトリシンボリックリンクにのみ適用されます。この-Lオプションは、再帰中にサブディレクトリのシンボリックリンクを含む、見つかったすべてのディレクトリシンボリックリンクに適用されますchown

関連情報