[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에서 다음 경로에 지정한 날짜의 파일을 삭제합니다 .