gyeong3un2

[유닉스 이론과 실습] 7장 연습문제 본문

유닉스 기초/[유닉스 이론과 실습] 연습문제

[유닉스 이론과 실습] 7장 연습문제

ʕっ•ᴥ•ʔっ 프론트엔드 개발하는 쿼카 2021. 4. 23. 01:24

01. 다음 중 옳은 것을 고르시오.

 

     ① 파일 내용 중 특정 문자열을 찾고 싶을 때는 find 명령을 사용한다.

     ② 찾고자 하는 문자열은 정규 표현식을 이용하여 표현한다.

     ③ grep과 egrep은 완전히 동일한 명령이다.

     ④ which 명령은 조건에 맞는 파일이 디렉토리 어디에 있는지 찾아주는 명령이다.

 

더보기

정답 :

① 파일 내용 중 특정 문자열을 찾고 싶을 때는 grep 명령을 사용한다.

③ egrep은 grep과 사용법은 동일하지만 정규 표현식에 사용할 수 있는 특수 문자가 더 추가되기 때문에 완전히 동일하다고 할 수 없다.

 

- grep : "global regular expressions print", 지정한 패턴을 포함하는 행을 찾는다.

- egrep : egrep은 확장된 정규 표현식을 사용하는 grep 명령이다.

- fgrep : fgrep은 지정한 파일에서 문자열을 찾는 명령으로, 문자열에 포함된 모든 정규식 관련 특수 문자를 일반 문자로 해석해 검색한다.

- find : 조건에 맞는 파일을 지정한 위치에서 찾는다.

- which : 명령어 파일의 위치를 찾아서 그 경로를 출력한다.

 


02. 다음 중 파일의 내용이나 위치를 검색하는 명령이 아닌 것을 고르시오.

 

     ① which

     ② search

     ③ grep

      find

 

더보기

정답 : ② search

- which : 파일의 위치를 검색하는 명령

- find : 파일을 검색하는 명령

- grep : 파일의 내용을 검색하는 명령

 


 

03. 정규 표현식으로 적당하지 않은 것은?

 

     ① ^root

     ② sh$

     ③ [0-9]*

      *.c

 

더보기

정답 :  *.c

- *은 앞의 문자와 매칭인데, ④은 뒤에 있기 때문에 적절하지 않다.

 


 

04. 어제 내가 생성한 C 프로그램 파일의 위치를 찾기 위해 다음과 같은 명령을 사용했는데, 파일이 찾아지지 않는다. 명령을 고치는 방법으로 적절한 것을 고르시오.

 

find . -mtime 1 *.c

 

     ① -mtime 옵션 대신 -atime을 사용한다.

     ② -mtime +1 대신 1을 사용한다.

     ③ . 대신 ~을 사용한다.

      find 명령 대신 grep 명령을 사용한다.

 

더보기

정답 :

① -mtime은 -atime과 같은 역할이다. 

    -mtime [+|-]n / -atime [+|-]n : 수정 시간이 +n일보다 오래되었거나 -n일보다 짧거나, 부호가 없으면

                                            정확히 n일인 파일을 검색

② +1은 수정 시간이 1일보다 오래된 파일을 검색하는 것이고, 1은 정확히 1일된 파일을 검색하는 것이다.

 


05. 전화번호를 표현하기 위한 정규식으로 올바른 것을 고르시오.

 

     ① [01]+[0-9]*[0-9]*

     ② [0-9]*-[0-9]*-[0-9]*

     ③ 010-[0-9]+-[0-9]+

      0|1-[0-9]+[0-9]+

 

더보기

정답 :

egrep에서 확장된 정규 표현식 특수 문자 + : 앞의 글자가 하나 이상 나옴

 


 

※ 다음 질문에 맞는 설명이나 명령을 기술하시오.

06. /etc/services 파일에서 tcp를 포함하고 있는 행의 수를 출력하시오.

 

더보기

정답 : grep -c tcp /etc/services

grep [옵션] 패턴 [파일명]

 

[옵션]

 -n : 행 번호 출력

 -c : 패턴을 포함하는 행 수 출력

 


 

07. 현재 디렉토리의 모든 파일 중에서 unix를 포함하고 있는 파일의 이름을 출력하시오.

 

더보기

정답 : grep -l unix *

-l : 해당 패턴을 포함하는 파일 이름 출력

 


 

08. 홈 디렉토리의 *.txt 파일 중에서 Jeremy Lin이라는 이름을 찾으시오. 

 

더보기

정답 : grep 'Jeremy Lin' ~/*.txt

 


 

09. /etc/hosts 파일에서 #으로 시작하는 모든 행을 행 번호와 함께 출력하시오.

 

더보기

정답 : egrep -n '^#' ~/etc/hosts

egrep [옵션] 패턴 [파일명]

 

[옵션]

 -n : 행 번호 출력

 


 

10. 현재 사용하는 유닉스 시스템에서 bash나 ksh을 사용하는 사용자의 목록을 출력하시오.(/etc/passwd 파일에 필요한 정보 있음)

 

더보기

정답 : egrep 'bash|ksh' /etc/passwd

 


 

11. /etc 디렉토리의 모든 파일 중 심볼릭 링크 파일에 대한 상세 목록 정보를 link.out 파일에 저장하시오.

 

더보기

정답 : ls -l /etc | grep ^l > link.out

 


 

12. which 명령이 있는 위치를 검색하시오.

 

더보기

정답 : which which

 


 

13. 현재 사용 중인 시스템 전체에서 이름이 which인 파일을 검색하되, 오류 메시지는 화면에 출력되지 않도록 하시오.(시스템에 따라 시간이 매우 오래 걸릴 수 있음)

 

더보기

정답 : find / -name which 2> /dev/null

- 만약 오류 메시지를 나중에 검토할 생각이 없고 그냥 화면에서 지워버리는게 목적이라면 굳이 별도의 파일을 생성하여 메시지를 저장할 필요없이 저장 파일을 /dev/null로 지정하면 파일이 생성되지 않고 메시지만 사라진다.

 


 

14. 현재 디렉토리의 data 파일 중에서 *나 ^ 문자를 포함하는 행을 출력하시오.

 

더보기

정답 : grep '[\^\*\]' data

 

 


 

15. /tmp 디렉토리에서 내가 생성한 파일 중 grep.dat 파일보다 나중에 수정된 모든 파일을 찾아 현재 디렉토리 아래의 tmp 디렉토리로 복사하시오.

 

더보기

정답 : find /tmp user $LOGNAME a newer grep.dat exec cp rf {} tmp \;

 


 

16. 내 홈 디렉토리의 모든 디렉토리와 파일 중에서 접근 권한이 777인 것을 검색하시오.

 

더보기

정답 : find ~ -perm 777

-perm 접근 권한 : 8진수 접근 권한 검색