쉘 스크립트 메뉴
2023. 12. 30. 22:41ㆍ리눅스 실제 사용 팁/bash
다음은 모 Q&A 사이트에 답변으로 달았던 내용이다. 쉘 스크립트를 익히는 과정이기도 했고 추후 쉘스크립트 참고용도로 여기에 올린다.
#!/bin/bash
echo ----------------------------------------
echo 나의 명령어 메뉴에 오신 것을 환영합니다.
echo ----------------------------------------
echo 1. 파일 리스트.
echo 2. 파일 삭제.
echo 3. 에디터 시작.
echo 4. 파일 내용 보기.
echo 5. 종료.
echo -------------------------------------------
read -p '메뉴 번호 입력: ' NUM
if [[ $NUM -eq '1' ]];then
echo
read -p '리스트할 디렉터리 입력: ' LS_DIR
if [[ $LS_DIR='~' ]];then
LS_DIR=$HOME
fi
if [[ ! -d $LS_DIR ]];then
echo 존재하지 않는 디렉토리이거나 액세스 권한이 없습니다!
exit 1
else
echo ----------------------------------------
echo $LS_DIR
echo ----------------------------------------
ls -l $LS_DIR
echo ----------------------------------------
fi
elif [[ $NUM -eq '2' ]];then
read -p '삭제할 파일 또는 디렉토리 입력: ' RM_TGT
if [[ -f $RM_TGT || -d $RM_TGT ]];then
echo ----------------------------------------
echo $RM_TGT 를 삭제합니다!
echo ----------------------------------------
rm -rf $RM_TGT
else
echo 삭제 대상을 잘못 입력했거나 액세스 권한이 없습니다!
fi
elif [[ $NUM -eq '3' ]];then
for _EDITOR in nano vi emacs joe mcedit;do
if [[ -x $(which $_EDITOR) ]];then
echo ----------------------------------------
echo $_EDITOR' 편집기를 실행합니다. (계속 하려면 아무 키나 누르세요.)'
read -p '(본 스크립트 실행을 중단하려면 <Ctrl><C>를 누르세요!)'
echo ----------------------------------------
bash -c $_EDITOR -c "set ft=unix" -c "x"
touch .found-
break;
fi
done
if [[ ! -f '.found-' ]];then
echo 편집기를 찾을 수 없습니다.
else
rm '.found-'
fi
elif [[ $NUM -eq '4' ]];then
read -p '들여다 보고픈 파일 경로를 입력하세요: ' VIEW_TGT
if [[ ! -f $VIEW_TGT ]];then
echo 파일이 존재하지 않거나 일반 파일이 아닙니다!
elif [[ `wc -l $VIEW_TGT` > 50 && -x `which less` ]];then
echo '내용이 길어서 less 를 실행합니다. (q 를 눌러서 종료가능)'
echo ----------------------------------------
less $VIEW_TGT
echo ----------------------------------------
else
echo ----------------------------------------
cat $VIEW_TGT
echo ----------------------------------------
fi
elif [[ $NUM -eq '5' ]];then
exit 0
else
echo 해당된 메뉴가 없어서 종료합니다.
fi
'리눅스 실제 사용 팁 > bash' 카테고리의 다른 글
read, awk - 한 줄 읽어서 여러 변수에 할당하기 (0) | 2023.12.30 |
---|---|
date, read -p, while 을 활용한 정합성 검사 loop 로직 (0) | 2023.12.23 |
정규식을 활용한 Underscore / Camel Case 전환 : INSERT 쿼리 생성 (0) | 2023.08.11 |
[리눅스] AWK 에서 셸 명령 호출하기 (0) | 2023.08.01 |
[리눅스] AWK 에서 substring, index (0) | 2023.08.01 |