라는 심볼릭 링크를 생성한다고 가정해 보겠습니다 music
.
ln -s Music music
이제 다음 명령 순서를 고려하십시오.
edward@ArchLinux:~$ readlink music
Music
edward@ArchLinux:~$ readlink music/
edward@ArchLinux:~$
내가 원하는 경우에만 출력을 얻을 수 있습니다.아니요/
심볼릭 링크 이름 끝에 사용됩니다.
/dir
와 는 /dir/
다른지 궁금합니다 . 누구든지 이것을 설명할 수 있나요?
답변1
readlink
심볼릭 링크가 필요하며 심볼릭 링크가 가리키는 파일/디렉토리를 표시합니다.
- 첫 번째 시도에서: 심볼릭 링크를 확인하여 그것이 가리키는 내용을 표시합니다.
- 두 번째 시도에서는 Music/이 가리키는 디렉토리인 music/이 표시되지만 해당 디렉토리에 대한 심볼릭 링크가 아니므로 해석할 링크가 없습니다. (즉, 마지막 "/"를 추가하면 쉘의 파일 설명자가 가리키는 디렉토리로 변경됩니다.)
답변2
유닉스에서는모든 것은 파일 설명자입니다.
이 경우 "모든 것"에는 일반 파일, 디렉터리, 파티션(예: /dev/sda1
), 장치(예: /dev/sda
), 가상 장치(예: /dev/null
) 및 심볼릭 링크가 포함됩니다.
하지만 이 경우 "파일 설명자"는 무엇입니까? 디스크나 메모리(가상 파일의 경우)의 데이터 위치를 가리키는 파일 시스템 루트의 항목입니다. 예를 들어, ext? 파일 시스템에는 파일 설명자와 데이터 사이에 "inode"라는 또 다른 추상화 계층이 있습니다.
따라서 귀하의 예에서는 music
다른 파일이나 디렉토리와 마찬가지로 파일 설명자로 표시되는 심볼릭 링크가 있습니다. 그러나 디렉토리에는 이를 기호 링크로 정의하기 위한 또 다른 플래그 세트가 있는 경우 이를 기호 링크로 식별하는 특수 플래그 세트가 있습니다. 이제 시스템은 실제로 대상에 대한 절대 또는 상대 경로를 포함하는 문자열인 기호 링크를 해석할 수 있습니다.
명시적으로 뒤에 a를 쓰는 경우에만 디렉터리로 해석되고 /
, 그렇지 않으면 파일로 처리됩니다.