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실행 파일에 전달합니다.

ln두 번째 인수( )를 옵션으로 해석합니다 -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

답변2

파일 이름에 큰따옴표가 없습니다. 공백이 포함되어 있으므로 따옴표로 묶어야 합니다.

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

관련 정보