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의 결과로 올바른 것은?

  1. Ah.txt도 s.txt도 hello를 표시한다
  2. Bh.txt는 파일을 찾을 수 없다는 오류가 되고, s.txt는 hello를 표시한다
  3. 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' 오류가 됩니다. 이처럼 따라갈 곳이 없어진 심볼릭 링크는 링크가 끊어진 상태로 그대로 남습니다.

이 분야 연습하기 분야로 돌아가기

Linux와 커맨드 라인 기초의 다른 문제

  1. 어떤 디렉터리에 a1.txt, a2.txt, a10.txt, b1.txt, c1.txt, a1.csv의 6개 파일이 있다. 이 디렉터리에서 'ls [ab]?.txt'를 실행했을 때 표시되는 파일의 수로 올바른 것은?
  2. 파일 run.sh에 'chmod 754 run.sh'를 실행한 후, 'ls -l run.sh' 줄의 맨 앞에 표시되는 권한 표기로 올바른 것은?
  3. touch는 새 파일을 666에서, mkdir는 새 디렉터리를 777에서 umask의 비트를 제거한 권한으로 만든다. umask가 027인 셸(shell)에서 새 파일과 새 디렉터리를 만들었을 때, 각각의 권한의 조합으로 올바른 것은?
  4. 디렉터리 d의 권한이 rwx--x--x(711)이고, 그 안의 파일 f.txt의 권한이 rw-r--r--(644)이다. 소유자도 슈퍼유저도 아닌 사용자가 'ls d'와 'cat d/f.txt'를 실행했을 때의 결과로 올바른 것은?
  5. Linux의 sudo 명령에 대한 설명으로 올바른 것은?