2020-06-17 기준으로 작성되었으며, 블로그 글 작성을 위해 조금 수정되었습니다.
실습문제 12.1~12.3 (교재 398P) 풀이
1) 파일 상태 정보
(1) test.txt 파일을 만들어 이 파일에 대해 ls –sl 명령어를 사용하고 그 출력 결과를 설명하시오.
vi test.txt로 테스트 텍스트 파일을 만들고, ls –sl으로 파일에 대한 정보를 확인한다.
순서대로 블록 수, 파일 타입, 접근 권한, 링크 수, 사용자ID, 그룹ID, 파일크기, 최종 수정시간, 파일 이름이다.
(2) test.txt 파일에 대해 stat 명령어를 사용하고 그 출력 결과를 설명하시오.
test.txt의 자세한 상태 정보를 출력한다.
(3) test.txt 파일에 대해 ls –i 명령어를 이용하여 i-노드 번호를 확인한다.
(4) test.txt 파일에 대해서 touch 명령어 사용하고 사용 전후의 파일 속성을 비교하여 설명하시오.
touch 명령 후 최종 수정시간이 변경된다.
2) 링크
(1) test.txt 파일에 대한 하드 링크와 심볼릭 링크를 만든다.
ln 명령으로 링크를 만들 수 있다. 옵션을 –s로 주면 심볼릭 링크로 만든다.
(2) 만들어진 하드 링크와 심볼릭 링크의 차이점을 설명한다.
우선 심볼릭 링크가 색부터 다르다. ls –al 명령으로 상태를 확인해보자.
이로 알 수 있는 것은 하드 링크는 원본 파일과 동일한 이름만 다른 파일 느낌이고, 심볼릭 링크 파일은 그저 test.txt를 가리키는 파일이다. 그래서 접근 권한이나 크기가 원본과 다르다.
(3) ls –i 명령어를 이용하여 각각의 i-노드 번호를 확인한다.
test_hard.txt 파일은 위의 test.txt 파일과 i-노드 번호가 동일하다. 하지만 test_simb.txt는 다르다.
3) cat 명령어 확장
(1) cat 명령어는 매개변수로 여러 개의 파일을 받으면 순차적으로 파일 내용을 출력한다. 프로그램 12.1을 확장하여 이 기능을 구현하시오.
우선 프로그램 12.1을 작성한다.
설명하자면 명령 줄 인수하는 부분이 2보다 작으면 파일 이름을 다시 적으면 되고, 크면 읽기 전용으로 열어서 End Of File(파일의 끝)까지 반복문으로 출력하는 것이다. 즉, cat 명령과 똑같다.
하지만 보다시피 뒤의 명령 줄([2] 이상의 것)은 무시한다.
문제가 요구하는 것은 명령 줄 인수를 2 이상 하였을 때 파일들의 내용을 띄우면 되는 것이다.
그러면 명령 줄 인수 부분을 반복문으로 한 번 더 반복해주면 된다.
설명할 것도 없이 원래의 cat.c 파일에 i 변수를 추가해서 반복문을 하나 더 씌웠다.
[실행 결과]
제대로 작동 하는 것을 확인할 수 있다.