gyeong3un2
[유닉스 이론과 실습] 11장 연습문제 본문
01. wc 명령의 실행 결과가 다음과 같다. 잘못 해석한 것은 무엇인가?
user1@solaris11:~/Unix/ch11$ wc test_wc1
5 35 293 test_wc1
① test_wc1 파일은 5행으로 구성되어 있다.
② test_wc1 파일은 35개의 단어로 구성되어 있다.
③ test_wc1 파일은 35행으로 구성되어 있다.
④ test_wc1 파일의 크기는 293 바이트이다.
정답 : ③ test_wc1 파일은 35행으로 구성되어 있다.
- 5는 행 수, 35는 단어 수, 그리고 293은 바이트 수다. 단어는 공백으로 구분된 문자열을 말한다.
- wc 명령 : 파일의 행 수, 단어 수, 문자 수를 출력한다.
02. 다음 파일들을 크기가 큰 파일에서 작은 파일 순서대로 정렬하여 출력하고 싶다. 알맞은 명령은 무엇인가?
user1@solaris11:~/Unix/ch11$ ls -l test*
-rw-r--r-- 1 user1 staff 150 5월 2 19:56 test_dd1
-rw-r--r-- 1 user1 staff 0 5월 2 19:59 test_dd2
-rw-r--r-- 1 user1 staff 86 5월 2 19:06 test_paste2
-rw-r--r-- 1 user1 staff 137 4월 30 18:36 test_sort1
-rw-r--r-- 1 user1 staff 4739 4월 30 20:27 test_split
-rw-r--r-- 1 user1 staff 52 5월 1 20:25 test_uniq
-rw-r--r-- 1 user1 staff 193 4월 29 21:16 test_wc
① ls -l test* | sort
② ls -l test* | sort -k 5
③ ls -l test* | sort +4
④ ls -l test* | sort -r
정답 : ④ ls -l test* | sort -r
- sort 명령 : 입력한 내용을 정렬해 출력한다.
- k 5 : 정렬의 기준이 되는 필드번호(5) 지정
+4 : 번호+1 필드를 기준으로 정렬
- r : 역순으로 정렬
03. 파일 a.txt에는 텍스트가 중복된 것들이 들어있다. a.txt에서 중복을 모두 제거하여 b.txt에 저장하는 명령은 무엇인가?
① uniq a.txt | sort > b.txt
② sort a.txt | uniq > b.txt
③ sort a.txt | uniq -u > b.txt
④ uniq -d a.txt | sort > b.txt
정답 : ② sort a.txt | uniq > b.txt
- sort a.txt | uniq > b.txt : |(파이프)는 sort 명령의 실행 결과를 uniq 명령의 입력으로 전달하는 기능을 한다.
- uniq 명령 : 중복 행을 삭제한다.
- u : 중복되지 않은 행만 출력
04. /etc/passwd 파일에서 각 계정의 기본 셸의 종류와 지정된 횟수를 세는 명령은 무엇인가?
① cut -d: -f 7 /etc/passwd | uniq -u
② cut -d: -f 7 /etc/passwd | uniq -c
③ cut -d: -f 7 /etc/passwd | wc -l | uniq -c
④ cut -d: -f 7 /etc/passwd | sort | uniq -c
정답 : ④ cut -d: -f 7 /etc/passwd | sort | uniq -c
05. dd 명령으로 a.txt으 내용을 삭제하려면 어떻게 해야 하는가?
① dd if=/dev/null of=a.txt
② dd if=a.txt of=/dev/null
③ dd if=/dev/false of=a.txt
④ dd if=a.txt of=/dev/false
정답 : ① dd if=/dev/null of=a.txt
- 입력 파일을 /dev/null로 지정하고 출력파일을 원하는 파일 명으로 지정하면 파일 내용을 지울 수 있다.
06. /etc/passwd 파일의 네 번째 필드(그룹 id)를 첫 번째 기준으로 하고, 첫 번째 필드(로그인 ID)를 두 번째 기준으로 하여 정렬하시오.
정답 : sort -t: +3 -4 +0 -1 /etc/passwd
sort 명령 : 입력한 내용을 정렬해 출력한다.
-t 문자: 지정한 문자를 필드 구분자로 사용
+번호 : 번호+1 필드를 기준으로 정렬
+pos1 -pos2 : 정렬하고자 하는 필드의 열을 지정. pos1~pos2 열 정렬
07. /etc/passwd 파일에서 사용자의 이름만 뽑아서 test_user라는 이름의 파일로 저장하시오.
정답 : cut -d: -f 1 /etc/passwd > test_user
cut 명령 : 파일에서 선택된 필드를 추출한다.
형식 : cut [옵션] [파일명]
-d 문자 : 필드 구분자
-f 필드 번호 : 지정한 필드를 잘라냄
08. /etc/passwd 파일에서 사용자의 셸 정보만 뽑아서 test_shell이라는 이름의 파일로 저장하시오.
정답 : cut -d: -f 7 /etc/passwd > test_shell
09. 7, 8번에서 생성한 파일의 내용을 필드로 합쳐서 새로운 test_user_shell 파일을 생성하시오.
정답 : paste test_user test_shell > test_user_shell
paste 명령 : 두 파일의 내용을 결합한다.
형식 : paste [옵션] 파일명1 파일명2
10. test_user_shell 파일을 5행 단위로 나누시오.
정답 : split -5 test_user_shell
split 명령 : 파일을 분할한다.
형식 : split [옵션] [파일명]
-n : n행씩 분할한다.
11. /etc/passwd 파일에서 로그인 ID와 셸 정보만 추출하고, 이중 로그인 셸을 가진 로그인 ID와 로그인 셸이 지정되지 않은 사용자로 구분하여 정렬하시오.
정답 : ① cut -d: -f 1,7 /etc/passwd > ID_SHELL, ② sort +1 -1 -t: -r ID_SHELL > ID2
12. 현재 시스템에 접속 중인 사용자 수를 알아보려한다. 본문에서는 who 명령과 wc 명령을 결합하여 접속 중인 사용자 수를 알아보았는데, 한 사용자가 두 개의 다른 창을 이용해 접속하면 who 명령의 실행 결과 해당 이름이 2번 나오게 된다. 이 중복을 제거하여 시스템에 접속 중인 순수 사용자의 수를 알아내려면 어떻게 해야 하는가? 명령을 한 행으로 기술하시오.
정답 : who | sort | uniq | wc -l
who 명령 : 시스템을 사용하고 있는 사용자의 정보를 출력한다.
sort 명령 : 입력한 내용을 정렬해 출력한다.
uniq 명령 : 중복 행을 삭제한다.
wc 명령 : 파일의 행 수, 단어 수, 문자 수를 출력한다.
13. test_sort2 파일을 정렬한 결과가 다음과 같이 나왔다. sort 명령에서 지정한 옵션은 무엇이었는지 설명하시오.
$ sort [ ] test_sort2
006 Jung Doo-Ri 49 F
004 Kim Chan-Sook 60 F
003 Lee Na-Young 54 F
007 Lee Mi-Ra 59 F
005 Han Ji-Soo 75 M
001 Hong Gil-Dong 80 M
002 Park Ji-Soo 100 M
$
정답 : +4 -5 +1 -2
14. /etc/passwd 파일에서 GID를 추출하여 중복된 GID를 제거하고 번호 순서대로 정렬하는 명령은 무엇인지 기술하시오.
정답 : ① cut -d: -f 4 /etc/passwd > num_list, ② uniq num_list | sort -n > num_list2
15. 14번에서 추출한 GID 중에서 가장 많은 계정에 동록된 GID가 무엇인지 알 수 있는 명령은 무엇인지 설명하시오. 파일의 내용을 직접 보지 않고 명령을 사용하여 알아내야 합니다.
정답 : uniq -c num_list | sort -r
uniq 명령
-c : 각 행의 처음에 중복 횟수를 출력
sort 명령
-r : 역순으로 정렬
16. /etc/group 파일에는 그룹에 속한 멤버 사용자가 있는 그룹들이 있다. 이렇게 멤버가 있는 그룹을 상단으로 오게 정렬하여 출력하는 명령은 무엇인지 기술하시오.
정답 : sort +3 -4 -r -t: /etc/group
17. dd 명령의 man 페이지를 참조하여 위에서 생성한 test_user 파일의 내용을 EBCDIC 코드로 변환하여 test_user2 이름으로 저장하시오.
정답 : dd if=test_user of=test_user2 conv=ebcdic
dd명령 : 입력한 내용을 변환하여 출력한다.
형식 : dd if [옵션] [if=입력파일명] [of=출력파일명]
conv=ebcdic : 알파벳을 EBCDIC 코드로 변환
'유닉스 기초 > [유닉스 이론과 실습] 연습문제' 카테고리의 다른 글
[유닉스 이론과 실습] 14장 연습문제 (0) | 2021.06.18 |
---|---|
[유닉스 이론과 실습] 13장 연습문제 (0) | 2021.06.18 |
[유닉스 이론과 실습] 10장 연습문제 (0) | 2021.05.19 |
[유닉스 이론과 실습] 9장 연습문제 (0) | 2021.05.09 |
[유닉스 이론과 실습] 8장 연습문제 (0) | 2021.05.07 |