[Shell Script] dialog의 사용 , 달력을 이용해서 특정 날짜의 로그를 삭제
달력을 이용해서 특정 날짜의 로그를 삭제
dialog 설치
redhat 계열의 리눅스 운영체제에는 dialog 패키지가 이미 설치 되어 있습니다.
#yum -y install dialog
dialog 사용
- 달력에서 날짜 선택은 tab으로 포커스를 이동 후 enter키로 선택, month, year 컬럼 에서는 커서의 위아래로 년월을 선택합니다.
- 중심에 있는 달력은 커서로 움직이거나 vi 에디터 처럼 h, j, k, l 로 이동할 수 있습니다 . 한편 달력 왼쪽 끝에 있는 숫자는 올해 몇 번째 주 인가를 나타냅니다 .
이스케이프 시퀀스 작성법
# dialog --calendar text height width
- text : 표시할 문자 메세지
- height : 문자 메세지 줄 수
- width : 다이얼로그 박스 폭
dialog 박스 명령어
옵션 | 설명 |
--yesno | yes/no를 묻는 다이얼로그를 표시 합니다. |
--msgbox | [OK]를 표시하는 메시지 박스를 표시합니다 . |
--inputbox | 값을 입력하는 박스를 표시합니다. |
--fselect | 파일 선택 화면을 표시 |
--dselect | 디렉터리 선택 화면 표시 |
--checklist | 목록에서 여러개 체크 가능한 체크 목록 박스를 표시 |
--radiolist | 목록에서 하나를 고르는 라디오 버튼 목록을 표시 |
--menu | 메뉴 목록을 표시 |
다이얼로그 박스 예제
스크립트에서 yes와 no중 무엇을 눌렀는지 판단하려면 명령어 종료 스테이터스를 이용하는데 종료 스테이터스는 $?에 저장됩니다 .
명령어는 yes를 선택하면 0 no를 선택하면 1이 종료 스테이터스가 됩니다 .
달력을 이용해서 특정 날짜의 로그를 삭제
이 스크립트는 달력을 표시하고 날짜를 선택받아 그 날짜가 파일명에 있는 로그파일을 삭제 합니다 . 이런 경우 dialog 명령어를 써서 다양한 대화형 인터페이스를 가진 셸 스크립트를 작성할 수 있습니다 .
스크립트 해설
#1에서 “Select Date” 문자열을 두줄 분량의 높이로 표시하고 다이얼 로그 박스 폭을 60으로 지정합니다 .
dialog 명령어 선택 결과는 표준 에러 출력으로 출력 되며 이 값을 나중에 rm 명령어 인수로 사용하기 위해 임시 파일로 리다이렉트 합니다 .
#1 에서 표준 에러 출력을 임시 파일 cla.tmp에 출력하기 위해 2>cal.tmp로 작성합니다 .
#2에서는 dialog 명령어가 출력하는 날짜를 처리 할 때 년/일/월 순서가 되게 설정합니다 .
#3은 다이얼로그 에서 취소할 때 아무것도 하지 않고 종료하는 명령어입니다 .
#4에서 다음 경로에 지정한 날짜의 파일을 삭제합니다 .