Linuxでのlnコマンドの-nパラメータの意味

参照:

https://superuser.com/questions/645842/how-to-overwrite-a-symbolic-link-of-a-directory

参照された記事はそれを非常に明確にしました、私は元の投稿の例を引用して少し追加します

これを行う適切な方法は、その-n, --no-dereference ようなオプションを使用する  ことです。

$ ln -snf foo2 bar

これにより  ln 、既存のシンボリックリンクをファイルとして扱います。それ以外の場合は、を逆参照bar し  foo1foo1 元のTARGET 名前を  に逆参照  し  て使用し  LINK_NAME ます 。foo2 そのため、foo1ディレクトリ内に作成されるシンボリックリンク  が作成され  ます。のマンページln は次のように  述べています...

-n、--no-dereference 
       LINK_NAMEが
       ディレクトリへのシンボリックリンクである場合、それを通常のファイルとして扱います

以下は、バージョン8.21のln 、--no-dereference オプションあり、オプションなしの  Arch Linuxデスクトップのシェル出力  です。--no-dereference オプションなしで行ったのと同じ結果が得られました  が、--no-dereference オプションを使用する  と、期待どおりに機能しました。

$ mkdir foo1 foo2
$ ln -s foo1 bar
$ ls -l bar
  lrwxrwxrwx 1 drew users 4 Sep 17 12:51 bar -> foo1
$ ln -sf foo2 bar
$ ls -l bar
  lrwxrwxrwx 1 drew users 4 Sep 17 12:51 bar -> foo1
$ ls -l foo1
  total 0
  lrwxrwxrwx 1 drew users 4 Sep 17 12:51 foo2 -> foo2
$ ln -snf foo2 bar
$ ls -l bar
  lrwxrwxrwx 1 drew users 4 Sep 17 12:52 bar -> foo2

簡単に言えば、-nは、既存のシンボリックリンク(つまり、ソフトリンク)がエスケープおよび解析されないようにすることです。これは、割り当てられた値を取る代わりに、$ varをそのまま出力することと同じです。

man lnはリンクを作成する4つの方法を示しています

名前

       ln-ファイル間のリンクを作成する

あらすじ

       ln [OPTION] ... [-T] TARGET LINK_NAME(1番目のフォーム)

       ln [オプション] ... TARGET(2番目の形式)

       ln [オプション] ...ターゲット...ディレクトリ(3番目の形式)

       ln [オプション] ... -t DIRECTORY TARGET ...(4番目の形式)

説明

       最初のフォームで、LINK_NAMEという名前でTARGETへのリンクを作成します。2番目に

       現在のディレクトリにTARGETへのリンクを作成します。3番目と4番目の形式では、

       ディレクトリ内の各ターゲットへのリンクを作成します。デフォルトでシンボリックなハードリンクを作成する

       --symbolicでリンクします。デフォルトでは、各宛先(新しいリンクの名前)は

       すでに存在しています。ハードリンクを作成するときは、各ターゲットが存在している必要があります。シンボリックリンク

       任意のテキストを保持できます。後で解決された場合、相対リンクは

       親ディレクトリとの関係。

       長いオプションへの必須の引数は、短いオプションでも必須です。

上書きされたソフトリンクが-nパラメータなしでディレクトリを指している場合、これは2番目の作成方法と同等で、ディレクトリにソフトリンクファイルを作成します。

 

 

元の記事27件を公開 賞賛された4件 訪問9695件

おすすめ

転載: blog.csdn.net/yoshubom/article/details/90205440