coreutils 매뉴얼에서ln
ln은 파일 간의 링크를 생성합니다. 기본적으로 -s 옵션을 사용하면 하드 링크가 생성되고 기호(또는 소프트) 링크가 생성됩니다. 소개:
ln [option]... [-T] target linkname ln [option]... target ln [option]... target... directory ln [option]... -t directory target...
• 두 개의 파일 이름이 주어지면 ln은 두 번째 파일에서 첫 번째 파일로의 링크를 생성합니다.
• 대상이 주어지면 ln은 현재 디렉터리에 파일에 대한 링크를 생성합니다.
•--target-directory(-t) 옵션이 지정되거나 마지막 파일이 디렉터리이고 --no-target-directory(-T) 옵션이 지정되지 않은 경우 ln은 Destination을 사용하여 각 대상에 대한 링크를 생성합니다. name은 지정된 디렉터리에 파일을 저장합니다.
굵은 부분은 무엇을 의미하나요?
특히 다음은 무엇을 의미하나요?
- "마지막 파일이 디렉터리이면 실패합니다."
- "대상의 이름을 사용하세요"?
감사해요.
답변1
즉 ln /path/to/files/* /path/to/some/directory/
, 또는 을 선택하면 ln -t /path/to/some/directory/ /path/to/files/*
원본 파일과 동일한 이름을 가진 일치하는 각 파일에 대한 링크가 생성됩니다./path/to/files/*
/path/to/some/directory/
답변2
제 생각에는 http://linux.die.net/man/1/ln
더 명확하게 만드십시오. 다음과 같은 테이블이 있습니다.
- ln [옵션]... [-T] TARGET LINK_NAME(첫 번째 형식)
- ln [옵션]...target (두 번째 형식)
- ln [옵션]...대상...디렉토리(세 번째 형식)
- ln [옵션]... -t 디렉토리 대상... (네 번째 형식)
그리고
-t, --target-directory=DIRECTORY
specify the DIRECTORY in which to create the links
-T, --no-target-directory
treat LINK_NAME as a normal file
-T
이는 두 개의 인수를 전달하는 경우 3이 아닌 형식 1(두 번째 인수는 link_name)을 의미한다는 것을 의미합니다. 즉, 실수로 디렉터리를 두 번째 인수로 전달하지 않도록 하려는 것입니다.
예:
mkdir output
ln -s /etc/passwd output #OK passwd link goes into output/passwd
비교됨
mkdir output
ln -sT /etc/passwd output #FAIL; output is already taken and is a directory
링크 -t
는 반대입니다 -T
. 그 뒤에 오는 것은 무엇이든 링크가 배치될 수 있는 디렉토리가 될 것으로 예상하며 이를 통해 다음을 수행할 수 있습니다.
list_link_targets | xargs -d '\n' ln -s -t directory
이것은 세 번째 형태의 경우 더 어렵습니다.