より正確に言えば、私は-s
このオプションが何を意味するのかを知っています。私はこのオプションを毎日使います。しかし、誰かがセキュリティを強化する/var/www/html/project
ために自分のウェブサイトのドキュメントルートをからに移動したことをチュートリアルで見ました~/www/project
(彼は後で権限などを変更しましたが、この場合は重要ではありませんでした)。その後、彼は次のようなシンボリックリンクを作成しました。
ln -sT ~/www/project /var/www/html/project
一般に、マンページでこのオプションに関する次の情報を得た-T
ので、これが何に使用されるのか疑問に思います。-s
-T
-T, --no-target-directory
treat LINK_NAME as a normal file always
私はこれが何のためであるか本当に理解していません。シンボリックリンクを作成するとき、なぜ-T
これらを結合するのですか?-s
これには大きな利点がありますか?
答え1
ln
要約は次のとおりです。
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET (2nd form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
ln [OPTION]... -t DIRECTORY TARGET... (4th form)
それ以外の場合は、すでに存在し、ディレクトリ(または最終的にディレクトリとして検証されるように検証されたシンボリックリンク)-T
の場合、最初と3番目の形式はあいまいで3番目の形式が選択されます。リンクが作成されます。LINK_NAME
ln
~へ目次。だから
ln -s ~/www/project /var/www/html/project
後者がすでに存在する場合、project
insideという名前のリンクが生成されます。/var/www/html/project
-T
あいまいさを取り除き、ln
最初のフォームのみを考慮してください。リンクが存在しない場合、指定された名前でリンクが生成されます。指定された名前のファイルまたはディレクトリがすでに存在する場合、LINK_NAME
エラーがln
発生します(-f
指定しない限り)。 。
だから
ln -sT ~/www/project /var/www/html/project
/var/www/html/project
を指すリンク~/www/project
またはエラーメッセージ(およびゼロ以外の終了コード)で終わることが保証されます。
答え2
あなたのルート(例では/var/www/html/project
)が最終的なルートであることを確認するので、リンクが存在するか存在しないかに/var/www/html/project
かかわらず、100%存在します。/var/www/html/project/**project**
/var/www/html/project
混乱する可能性があるため、違いを示す例
設定:
cd /tmp
;
mkdir /tmp/aa
;
mkdir /tmp/bb
;
ln -s /tmp/aa /tmp/bb
新しいシンボリックリンクが作成されます/tmp/bb/aa -> /tmp/aa
しかし、
ln -sT /tmp/aa /tmp/bb
結果は次のとおりです。ln: failed to create symbolic link '/tmp/bb': File exists
この-s
パラメータはそれとは何の関係もありません。 (通常どおり)文書に記載されています。https://www.gnu.org/software/coreutils/manual/html_node/Target-directory.html