Hitachi

Advanced Shell 


8.4.20 lnコマンド(ファイル,またはディレクトリへのリンクファイルを作成する)

形式

形式1
ln [-f] [-i] [-L] [-n] [-P] [-s] [-T] [-v] [--follow={yes | no}] 
   [--no-exist-directory] [--no-exist-file] リンク先パス名 ... [ターゲット]
形式2
ln [-f] [-i] [-L] [-n] [-P] [-s] [-v] [--follow={yes | no}] 
   [--no-exist-directory] [--no-exist-file] -t ターゲットディレクトリ名 リンク先パス名 ...

機能

ファイル,またはディレクトリへのリンクファイルを作成します。-sオプションの指定に従って,ハードリンク,またはシンボリックリンクを作成します。

lnコマンドでシンボリックリンクを作成する場合は,シンボリックリンク作成権限を持つユーザーで実行してください。シンボリックリンク作成権限を持たないユーザーではシンボリックリンクを作成できません。また,ユーザーアカウント制御(UAC)が有効な環境では,シンボリックリンク作成権限を持つユーザーでもシンボリックリンクを作成できません。UACが有効な環境でシンボリックリンクを作成する場合は,シンボリックリンク作成権限を持つユーザーに管理者特権を持たせてください。

形式1の場合,引数ターゲットに指定したパスにリンクファイルを作成します。引数ターゲットがディレクトリの場合はディレクトリ内にリンクファイルを作成します。

形式2の場合,ターゲットディレクトリ内にリンクファイルを作成します。

引数

-f

--force

引数ターゲットに指定したファイルがすでに存在する場合,既存のファイルを削除してからリンクファイルを作成します。

-iオプションと同時に指定した場合は,-iオプションの指定が有効となります。

ただし,環境変数ADSH_CMDLN_OPT_I_FにLASTを指定することで最後に指定したオプションを有効にできます。

-i

--interactive

引数ターゲットに指定したファイルがすでにある場合は,削除するかどうか問い合わせをします。標準入力からの応答文字がyまたはYで始まっていれば,既存のファイルを削除しリンクファイルを作成します。それ以外の文字を応答したり,標準入力が使用できない場合は処理を中断します。

-fオプションと同時に指定した場合,-iオプションの指定が有効となります。

ただし,環境変数ADSH_CMDLN_OPT_I_FにLASTを指定することで最後に指定したオプションを有効にできます。

-L

--logical

引数リンク先パス名にシンボリックリンクを指定した場合,シンボリックリンクをたどり,リンク先が示すファイルの実体に対するハードリンクを作成します。ただし,リンク先が示すファイルが存在しない場合は作成しません。

このオプションはハードリンク作成時に有効なオプションです。-sオプションと同時に指定した場合は指定を無視します。

-Lオプション,-Pオプションのどちらも指定しなかった場合,-Lオプションが指定されたものとします。

-Lオプションと-Pオプションを同時に指定した場合,最後に指定したオプションが有効となります。

-n

--no-dereference

意味を持たないオプションです。指定を無視します。

--follow={yes | no}

このオプションは,引数ターゲットに,ディレクトリに対するシンボリックリンクを指定したときの動作を選択するオプションです。

yesを指定した場合,引数ターゲットに指定したディレクトリに対するシンボリックリンクをたどり,リンク先のディレクトリにリンクファイルを作成します。

noを指定した場合,引数ターゲットに指定したディレクトリに対するシンボリックリンクをたどらず,リンクファイル名として扱います。

--followオプションの指定がない場合は,yesが指定されたものとします。

-P

--physical

数リンク先パス名にシンボリックリンクを指定した場合,シンボリックリンクをたどらず,シンボリックリンク自身のハードリンクを作成します。

このオプションはハードリンク作成時に有効なオプションです。-sオプションと同時に指定した場合は指定を無視します。

-Lオプション,-Pオプションのどちらも指定をしなかった場合,-Lオプションが指定されたものとします。

-Lオプションと-Pオプションを同時に指定した場合,最後に指定したオプションが有効となります

-s

--symbolic

引数リンク先パス名に指定したファイル,またはディレクトリに対してシンボリックリンクを作成します。

-sオプションの指定がない場合はハードリンクを作成します。ただし,次のハードリンクは作成できません。

  • 引数リンク先パス名に指定した対象が存在しない

  • ディレクトリに対するハードリンク

  • UNIXの場合:異なるファイルシステムのファイル

  • Windowsの場合:異なるドライブレターのファイル

-sオプションの指定がある場合はシンボリックリンクを作成します。

UNIXの場合

引数リンク先パス名に指定した対象の有無にかかわらず作成できます。

Windows

引数リンク先パス名に指定した対象が存在しない場合,作成できません。引数リンク先パス名に指定した対象が存在しない状態でシンボリックリンクを作成する場合は--no-exist-directoryオプション,または--no-exist-fileオプションを指定してください。

作成したハードリンクはリンク先のアクセス権限を引き継ぎます。

作成したシンボリックリンクのアクセス権限は次のとおりです。

  • UNIXの場合:全ユーザーに対してフルコントロール

  • Windows:作成するディレクトリのアクセス権限を継承した上で,Everyoneにフルコントロール

-t ターゲットディレクトリ名

--target-directory=ターゲットディレクトリ名

リンクファイルを作成するディレクトリを指定します。次のどれかの場合,エラー終了します。

  • -Tオプションと同時に指定した。

  • ターゲットディレクトリ名にディレクトリ,またはディレクトリに対するシンボリックリンクのどちらでもないパスを指定した。

  • 存在しないディレクトリをターゲットディレクトリ名に指定した。

  • このオプションを複数指定した。

-T

--no-target-directory

引数ターゲットに指定したディレクトリに対するシンボリックリンクをたどらず,リンクファイル名として扱います。

次のどちらかを満たす場合,エラー終了します。

  • 引数ターゲットに指定した内容と同名のディレクトリが存在した。

  • -tオプションと同時に指定した。

-v

--verbose

引数リンク先パス名と,作成するリンクファイルを標準出力に出力します。出力形式は次のとおりです。

  • ハードリンク作成時

    `引数リンク先パス名' => `作成するリンクファイル'

  • シンボリックリンク作成時

    `引数リンク先パス名' -> `作成するリンクファイル'

--no-exist-directory
Windowsの場合

このオプションを指定すると,シンボリックリンク作成時に,引数リンク先パス名に指定したファイル,ディレクトリが存在しない場合,ディレクトリに対するシンボリックリンクを作成します。

シンボリックリンクが指すディレクトリが存在しない状態で,ディレクトリに対するシンボリックリンクを先行して作成したい場合は,このオプションを指定してください。

なお,次のどちらかを満たす場合,このオプションの指定を無視します。

・引数リンク先パス名に指定したファイル,ディレクトリが存在する。

・-sオプションが指定されていない。

--no-exist-directoryオプションと--no-exist-fileオプションを同時に指定した場合は,最後に指定したオプションが有効になります。

UNIXの場合

指定を無視します。

--no-exist-file
Windowsの場合

このオプションを指定すると,シンボリックリンク作成時に,引数リンク先パス名に指定したファイル,ディレクトリが存在しない場合,ファイルに対するシンボリックリンクを作成します。

シンボリックリンクが指すファイルが存在しない状態で,ファイルに対するシンボリックリンクを先行して作成したい場合は,このオプションを指定してください。

なお,次のどちらかを満たす場合,このオプションの指定を無視します。

・引数リンク先パス名に指定したファイル,ディレクトリが存在する。

・-sオプションが指定されていない。

--no-exist-fileオプションと--no-exist-directoryオプションを同時に指定した場合は,最後に指定したオプションが有効になります。

UNIXの場合

指定を無視します。

リンク先パス名

作成するリンクファイルが指すファイルパス名,またはディレクトリパス名を指定します。リンク先パス名は複数指定できます。リンク先パス名を2つ以上指定する場合は,引数ターゲットにディレクトリを指定する,または形式2によって-tオプションでディレクトリを指定してください。

ターゲット

作成するリンクファイル名,またはリンクファイルを作成するディレクトリ名を指定します。

リンクファイル名を指定した場合,指定したファイル名でリンクファイルを作成します。リンクファイルを作成するディレクトリ名を指定した場合,引数リンク先パス名に指定したファイルと同じ名前のリンクファイルを,指定したディレクトリ配下に作成します。

ターゲットの指定を省略した場合,カレントディレクトリにリンクファイルを作成します。

ディレクトリに対するシンボリックリンクを指定した場合,シンボリックリンクをたどり,リンク先のディレクトリにシンボリックリンクを作成します。ただし,次のどれかを指定することでシンボリックリンクをたどらないでリンクファイル名として扱うことができます。

  • -Tオプション

  • --followオプションにnoを指定する

  • 環境変数ADSH_CMDLN_FOLLOWにNOを指定する

終了コード

終了コード

意味

0

正常終了

1以上

エラー終了

注意事項

プラットフォーム共通の注意事項

UNIX版限定の注意事項

次に対するハードリンクを作成することはできません。

Windows版限定の注意事項

使用例

ファイルへのハードリンクを作成します。

C:\TEMP>%ADSH_OSCMD_DIR%ln test.txt hlink.txt

C:\TEMP>%ADSH_OSCMD_DIR%ls -l
total 714
-rw------- 2 Administrators  357 Jun 01 15:05 hlink.txt
-rw------- 2 Administrators  357 Jun 01 15:05 test.txt

引数ターゲットを省略してファイルへのハードリンクを作成します。

C:\TEMP>%ADSH_OSCMD_DIR%ln testdir\new.txt

C:\TEMP>%ADSH_OSCMD_DIR%ls -l
total 3572
-rw------- 2 Administrators  3572 Jun 04 11:19 new.txt
drwx------ 1 Administrators       Jun 04 11:19 testdir

C:\TEMP>%ADSH_OSCMD_DIR%ls -l testdir
total 3572
-rw------- 2 70247321 3572 Jun 04 11:19 new.txt

ファイルへのシンボリックリンクを作成します。

C:\TEMP>%ADSH_OSCMD_DIR%ln -s test.txt slink.txt

C:\TEMP>%ADSH_OSCMD_DIR%ls -l
total 357
lrw------- 1 Administrators    0 Jun 01 15:07 slink.txt -> test.txt
-rw------- 1 Administrators  357 Jun 01 15:05 test.txt

ディレクトリへのシンボリックリンクを作成します。

C:\TEMP>%ADSH_OSCMD_DIR%ln -s testdir slinkdir

C:\TEMP>%ADSH_OSCMD_DIR%ls -l
total 0
lrw------- 1 Administrators  0 Jun 01 15:08 slinkdir -> testdir
drwx------ 1 Administrators    Jun 01 15:05 testdir

オプションエラーのメッセージを表示します。このメッセージは,コマンドを実行するプラットフォームによって異なる場合があります。Windowsの例を次に示します。

C:\TEMP>%ADSH_OSCMD_DIR%ln -z
ln: illegal option -- z
usage: ln [-f] [-i] [-L] [-n] [-P] [-s] [-T] [-v] [--follow={yes | no}] 
          [--no-exist-directory] [--no-exist-file] linkpath ... [target]
       ln [-f] [-i] [-L] [-n] [-P] [-s] [-v] [--follow={yes | no}] 
          [--no-exist-directory] [--no-exist-file] -t target_directory linkpath ...