"ln -t"は何をしますか?

ln -T効果は何ですか?私はフラグがBSDバージョンには存在せず、GNUバージョンにのみ存在することを知っていますln。 BSD版にも存在しますか?lnLINK_NAME

ベストアンサー1

GNU -T()オプションは、スクリプトに役立つセキュリティ機能を提供します。--no-target-directoryln

外部ソースから新しい名前を提供できる$newnameファイルの新しい名前を作成するとします。$filename

注文する

ln -T "$filename" "$newname"

それではそうです。失敗するifは、$newname誤ってそのディレクトリに名前を生成するのではなく、すでに存在しているディレクトリです$filename(これにより、追加の操作が面白い方法で失敗する可能性があります)。

これはショートカットです。それはまるで

if [ ! -e "$newname" ]; then
    ln "$filename" "$newname"
else
    printf 'failed to create hard link "%s": File exists\n' "$newname" >&2
    # Further code to handle failure to create link here.
fi

同様に-t--target-directory)は、ファイルの新しい名前が他の場所ではなく既存のディレクトリに実際に作成されるようにする方法を提供します。

さらに、もし指摘作成者:Stephen Kittのコメントで、ターゲット/リンク名のファイル形式のテストをユーティリティ自体に移動すると、ターゲットが存在するかどうかをテストおよび/またはターゲットが変更される競合状態の影響を受けるリスクを減らすことができます。 。または、リンクを入力して実際に作成します。

POSIX、BSD、-Tまたはではないのはなぜですか-t?さて、GNUツールは一般的にたくさん追加された拡張機能は次のとおりです。便利-Tオプションはその一部-tです。lnそれらがなければできないことを実際にすることはできず、機能を追加することもありません。 BSDなどの一部のシステムでは、追加を検討していないか、追加を検討していますが、追加のアイデアを拒否しました(わかりません)。覚えていません。openbsd-techたとえば、誰かがパッチを送信するのを見て、それをメーリングリストに追加します。

おすすめ記事