Linux와 커맨드 라인 기초
$ echo hello > a.txt
$ ln a.txt h.txt
$ ln -s a.txt s.txt
$ rm a.txt
$ cat h.txt
$ cat s.txt위의 명령을 순서대로 실행했을 때, 마지막 두 cat의 결과로 올바른 것은?
- Ah.txt도 s.txt도 hello를 표시한다
- Bh.txt는 파일을 찾을 수 없다는 오류가 되고, s.txt는 hello를 표시한다
- Ch.txt는 hello를 표시하고, s.txt는 파일을 찾을 수 없다는 오류가 된다
정답과 해설 보기
정답: C. h.txt는 hello를 표시하고, s.txt는 파일을 찾을 수 없다는 오류가 된다
ln으로 만드는 하드 링크는 원래 파일과 같은 inode(파일의 내용과 속성을 관리하는, 번호가 붙은 정보)를 가리키는 또 하나의 이름입니다. rm a.txt로 사라지는 것은 a.txt라는 이름뿐이며, h.txt라는 이름이 남아 있으므로 내용은 사라지지 않고 cat h.txt는 hello를 표시합니다. ln -s로 만드는 심볼릭 링크는 'a.txt'라는 경로를 내용으로 갖는 별도의 파일이므로, a.txt가 사라지면 따라갈 곳이 없어져 cat s.txt는 'No such file or directory' 오류가 됩니다. 이처럼 따라갈 곳이 없어진 심볼릭 링크는 링크가 끊어진 상태로 그대로 남습니다.