다음을 사용하여 링크를 만들려고 합니다.
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
마지막 인수를 다른 인수에 대한 기호 링크를 생성하는 디렉터리로 해석합니다.
따라서 이를 위해서는 ln
3개의 심볼릭 링크를 생성해야 합니다.
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"