coreutils マニュアルからln
ln はファイル間のリンクを生成します。デフォルトでは、-sオプションを使用するとハードリンクが生成され、シンボル(またはソフト)リンクが生成されます。はじめに:
ln [option]... [-T] target linkname ln [option]... target ln [option]... target... directory ln [option]... -t directory target...
• 2 つのファイル名が与えられると、ln は 2 番目のファイルから最初のファイルへのリンクを生成します。
• 宛先が与えられると、ln は現在のディレクトリにファイルへのリンクを作成します。
•--target-directory(-t) オプションが指定されている場合、または最後のファイルがディレクトリであり、--no-target-directory(-T) オプションが指定されていない場合、ln は Destination を使用して各宛先へのリンクを生成します。 name は指定されたディレクトリにファイルを保存します。
太い部分はどういう意味ですか?
特に、次はどういう意味ですか?
- 「最後のファイルがディレクトリの場合は失敗します。」
- 「ターゲット名を使用してください」?
ありがとうございます。
答え1
つまりln /path/to/files/* /path/to/some/directory/
、またはを選択すると、ln -t /path/to/some/directory/ /path/to/files/*
元のファイルと同じ名前の一致する各ファイルへのリンクが作成されます。/path/to/files/*
/path/to/some/directory/
答え2
私の考えでは http://linux.die.net/man/1/ln
より明確にしなさい。次の表があります。
- ln [オプション]... [-T] TARGET LINK_NAME(最初の形式)
- ln [オプション]...target(2番目の形式)
- ln [オプション]...ターゲット...ディレクトリ(3番目の形式)
- ln [オプション]... -tディレクトリターゲット...(4番目の形式)
そして
-t, --target-directory=DIRECTORY
specify the DIRECTORY in which to create the links
-T, --no-target-directory
treat LINK_NAME as a normal file
-T
これは、2つの引数を渡すと、3以外の形式1(2番目の引数はlink_name)を意味します。つまり、誤ってディレクトリを2番目の引数として渡さないようにしたいのです。
例:
mkdir output
ln -s /etc/passwd output #OK passwd link goes into output/passwd
比較済み
mkdir output
ln -sT /etc/passwd output #FAIL; output is already taken and is a directory
リンク-t
は反対です-T
。それに続くものは、何でもリンクを配置できるディレクトリになると予想しており、これにより次のことができます。
list_link_targets | xargs -d '\n' ln -s -t directory
これは、3番目の形式ではより困難です。