ln -sが単一の引数を受け入れる理由


27
> cd /tmp
> ln -s foo
> ls -alhF /tmp
lrwxrwxrwx 1 user user    3 Jul 29 14:00 foo -> foo

これはバグlnですか、それともファイルをシンボリックリンクするユースケースはありますか?

これはcoreutils 8.21-1ubuntu5.1です。

回答:


45

バグではありません。ユースケースは、ファイルを同じベース名にリンクするが、別のディレクトリにある場合に使用します。

cd /tmp
ln -s /etc/passwd
ls -l passwd
lrwxrwxrwx 1 xxx xxx 11 Jul 29 09:10 passwd -> /etc/passwd

同じディレクトリにあるファイル名でこれを行うと、それ自体へのリンクが作成されますが、それはあまり役に立ちません!

これは、シンボリックリンクを使用するかハードリンクを使用するかに関係なく機能します。


15
別の言い方をすると:のln -s /path/to/file略ですln -s /path/to/file .。のようlsに短いですls .
ステファンシャゼラス

3
@StéphaneChazelasはい、そしてあなたは2つのキーストローク全体を保存します!:
セラダ

4
動作はPOSIXでは指定されていませんが、Unixの最初のバージョンではかなり一般的であるように思われます(少なくともGNU、busybox、FreeBSD、Solaris、Ultrix、および(-sはもちろんサポートされていませんでしたが) 70年代初期)。
ステファンシャゼル

9

もちろん最も簡単な方法は、試してみることです。2番目の引数が指定されていない場合ln、現在のディレクトリに元と同じ名前のリンクを作成します。

$ ln -s /etc
$ ls -l
lrwxrwxrwx 1 terdon terdon         4 Jul 29 16:09 etc -> /etc

これについても説明しman lnます。

2番目のフォームで、現在のディレクトリにTARGETへのリンクを作成します。

「第2の形式」とは次のことを指します。

ln [オプション] ...ターゲット(第2の形式)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.