シンボリックリンクはいつシンボリックリンクと同様にリンクされると考えられますか?
シンボリックリンクは、さまざまな種類のファイルにリンクできます。たとえば、mylk
ディレクトリへのシンボリックリンクを考えてみましょう。次の 2 つのタスクは異なるタスクを実行します。
mv mylk ~
mv mylk/ ~
シンボルはリンクされたものとして扱われますか、それともコマンドが期待するもの、または指定方法(リンクを使用するコマンドに関係なく)によって独自に依存しますか?ありがとうございます。
答え1
ファイルの内容に応じて動作するプログラムは、常にシンボリックリンクではなくターゲットに対して動作します。シンボリックリンクには独自のコンテンツがないためです。
ファイルメタデータ(タイムスタンプ、所有者、権限など)に対して機能するプログラムは通常ターゲットに機能しますが、一部のプログラムはオプションでシンボリックリンク(たとえば、、chown -h
... touch -h
)に対して機能することがあります。
ディレクトリエントリで動作するプログラムは通常、シンボリックリンクで動作します。名前の変更や削除などの操作は、ディレクトリエントリが何であっても、そのエントリに対して行われます。プログラムがシンボリックリンクに従うかどうかに応じて、ファイルのメタデータ(ファイルタイプを含む)にアクセスするための別々のシステムコールがあります(stat
)または(lstat
)。すべての種類のディレクトリエントリに対して機能できる一部のプログラムには、リンクが見つかったときにリンクではなくターゲットに対して機能するように指示するオプションがあります。たとえば、ディレクトリ(find
、、、chown -R
... cp -R
)を繰り返し探索する多くのユーティリティはデフォルトでシンボリックリンクで機能しますが、オプションが渡されるとすべてのシンボリックリンクに従い、コマンドラインではシンボリックリンクに従いますが、-L
実行時にはそうではありません。プロセス中に見つかったディレクトリです。オプションが渡されると、再帰的に繰り返されます-H
。
ファイル名の後にスラッシュがある場合、ファイル名はディレクトリとして解釈されます。。名前がシンボリックリンクの場合は、その内容に従います。したがって、mv mylk ~
何でもmylk
(symlinkまたは他の)移動します。ディレクトリの場合は移動し、ターゲットがディレクトリへのシンボリックリンクである場合は移動し、ディレクトリでもディレクトリへのシンボリックリンクでも文句を言いmv mylk/ ~
ます。 。この一般的な行動mylk
mylk
mylk