2020-04-30 기준으로 작성되었으며, 블로그 글 작성을 위해 조금 수정되었습니다.
1. 실습 문제(교재 254쪽)
1) grep 실습
(1) grep 명령어를 이용하여 /etc/services 파일에서 tcp 서비스들을 찾아 그 개수를 출력하시오.
grep /tcp services - tcp 서비스를 찾아 출력하는데 파이프를 통해 wc –l로 개수를 출력하였다.
(2) grep 명령어를 이용하여 /etc/services 파일에서 tcp 서비스들을 찾아 이를 sort 명령어를 이용하여 정렬하고 그 결과를 파일에 저장하시오.
grep /tcp services | sort > grepex1.txt – tcp를 찾아 sort로 정렬하고 그 결과를 grepex1에 저장하였다.
2) sort 명령어 실습
/etc/passwd 파일은 계정 정보를 저장하는 파일로 각 계정 정보는 다음과 같은 구조로 저장된다.
계정명:패스워드:UID:GID:계정설명:홈 디렉터리:로그인 쉘 |
(1) 이 파일을 계정명의 오름차순으로 정렬하여 파일에 저장한다.
기본 sort 사용
(2) 이 파일을 계정명의 내림차순으로 정렬하여 파일에 저장한다.
-r 로 내림차순 정렬
(3) 이 파일을 UID의 알파벳순으로 정렬하여 파일에 저장한다.
-t: 로 :를 필드 구분자로 해놓고 –k 3로 세 번째 필드 즉 UID를 정렬함.
(4) 이 파일을 UID의 번호순으로 정렬하여 파일에 저장한다.
-t: 로 :를 필드 구분자로 해놓고 –k 3로 세 번째 필드에서 –n으로 번호순으로 UID를 정렬
(5) 이 파일을 계정설명의 오름차순으로 정렬하여 파일에 저장한다.
계정설명은 5번째에 있으니 –k 5만하면 됨.
3) find 명령어 실습
(1) find 명령어를 사용하여 /etc 디렉터리의 모든 파일 중 심볼릭 링크 파일들만을 상세하게 리스트하시오.
(find .) 현재 디렉토리에서 찾는다. (-type l) 심볼릭 링크 형식 (-print) 찾아서 리스트
(2) find 명령어를 사용하여 /etc 디렉터리의 모든 파일 중 확장자가 .conf인 파일들의 상세 리스트를 conf.out 파일에 저장하시오.
-name “*.conf”로 확장자가 .conf인 파일들을 conf.out에 저장
(3) ls, 파이프, grep 등을 사용하여 (2)와 같은 일을 하도록 하시오.
여기서 > conf.out 만하면 2번이랑 같다. [.]은 grep에서 .은 임의의 한 문자를 지정하기 때문에 []로 무시해줘야 한다.
2. 연습 문제(교재 255~257쪽)
1) 리눅스 시스템의 사용자 정보를 포함하는 /etc/passwd 파일에서 bash를 사용하는 사용자의 리스트를 정렬하여 출력하도록 명령을 작성하시오.
bash를 passwd 파일에서 찾게하고 sort로 정렬했다.
2) find 명령어를 사용하여 홈 디렉터리의 모든 파일 중에서 접근권한이 755인 것들을 모두 검색하도록 작성하시오.
find .와 -perm 755를 이용해 접근권한이 755인 것을 모두 검색했다.
3) grep 명령어를 사용하여 /etc/services 파일에서 #으로 시작하는 줄은 코멘트 줄이다. #으로 시작하는 줄들만을 출력하시오. #으로 시작하지 않는 줄들만을 출력하시오.
^#을 이용해 #로 시작하는 줄만 출력했다.
-v와 ^#을 이용해 #로 시작하는 줄만 제외하고 출력했다.
4) find 명령어를 사용하여 현재 디렉터리 아래에 있는 확장자가 .log 파일을 찾아서 삭제하도록 명령을 작성하시오.
현재 디렉터리 아래 확장자가 .log인 파일을 찾고 –exec로 검색한 대상으로 rm을 실행해서 삭제함.
5) find 명령어를 사용하여 현재 디렉터리 아래에서 30일 이내에 접근된 확장자가 .c인 파일을 찾아 그 내용을 출력하도록 명령을 작성하시오.
-atime –30으로 디렉터리 아래 30일 이내 접근된 것을 찾고 확장자가 .c인 파일을 찾아 출력함.
6) ps aux 명령어는 시스템의 모든 프로세스를 출력한다. 그 결과 중에서 소유자가 root인 프로세스에 대한 정보만 출력하도록 명령을 작성하시오.
ps aux에서 파이프를 통해 grep root로 소유자가 root인 프로세스에 대한 정보만 출력하도록 했다.
7) /bin 디렉터리 내의 명령어 중에서 zip 관련 명령어들만을 정렬해서 출력하도록 명령을 작성하시오.
일단 zip관련 명령어가 없길래 대충 rep으로 바꿔서 적었다.
alias로 명령어를 출력하고 파이프로 rep관련으로 출력하도록 했고 sort로 정리했다.
8) /bin 디렉터리 내의 명령어 중에서 zip 관련 명령어들의 개수를 출력하도록 명령을 작성하시오.
개수를 세는데 정렬할 필요가 없으니 위에서 sort대신 wc –l로 개수를 출력했다.