ln -s を使用したリンクの作成 [重複]

ln -s を使用したリンクの作成 [重複]

以下を使用してリンクを作成しようとしています。

ln -s /Backup files/ /link 1

リンクを設定する代わりに、次のような結果が表示されます。

ln: ターゲット '/link' はディレクトリではありません。

私は何が間違っていましたか?

ベストアンサー1

殻は通常壊れます。

ln -s /Backup files/ /link 1

コマンドラインに次の単語を入力してください。

  • ln
  • -s
  • /Backup
  • files/
  • /link
  • 1

最初の単語から始めて実行するコマンドを導き出し(/bin/ln変数にリストされているすべてのディレクトリを検索して名前付き$PATHファイルを見つけるのと似ていますln)、すべての単語を別の引数として/bin/ln実行可能ファイルに渡します。

ln2番目の引数()をオプションとして解釈します-s。つまり、ハードリンクの代わりにシンボリックリンクを生成することを意味し、残りの引数はオプションではなく引数の数として解釈されます。オプション以外の引数が複数ある場合は、ln最後の引数を別の引数へのシンボリックリンクを生成するディレクトリとして解釈します。

したがって、これにはln3つのシンボリックリンクを作成する必要があります。

  • 1/Backup->/Backup
  • 1/files->files/
  • 1/link->/link

1ディレクトリが存在しない場合、またはファイル形式が間違っている場合目次、文句を言います。

¹を指すlnシンボリックリンクを生成するには、次の引数を渡す必要があります。/link 1/Backup files/ln

  • ln
  • -s
  • /Backup files/
  • /link 1

ほとんどのシェルでは、以下を使用してこれを実行できます。

ln -s '/Backup files/' '/link 1'

空白文字などのこれらの'文字は、シェル構文の一部です。ここで、彼らは人々に内部のすべてを'...'文字通り受け入れなければならないと言うのに慣れています。具体的には、スペース文字はパラメータ区切り文字としての意味を失い、代わりに渡されたパラメータに文字通り含まれますln。一部のシェル実装は、より多くをサポートしています。引用する"..."$'...'またはバックスラッシュなどの演算子です$"..."。 Kornのようなシェルでは、bashこれはすべて同じです。

ln -s "/Backup files/" "/link 1"
ln -s $'Backup files/' $'/link 1'
ln -s Backup\ files/ /link\ 1

もちろん、次のように組み合わせることもできます。

'ln' "-"'s' "Back"up\ files/ ''""/link' '$'1'

1 ただし、link 1それが存在し、ディレクトリタイプの場合(またはシンボリックリンクが最終的にディレクトリとして解決される場合)、シンボリックリンク(a - >シンボリックリンク)がln -s 'Backup files/' '/link 1'実際にそのディレクトリに作成されます。 GNUでは、このオプションを使用してこれを回避できます。Backup files/link 1/Backup files/Backup files/ln-T

おすすめ記事